| Git 2.32 Release Notes |
| ====================== |
| |
| Backward compatibility notes |
| ---------------------------- |
| |
| * ".gitattributes", ".gitignore", and ".mailmap" files that are |
| symbolic links are ignored. |
| |
| |
| Updates since v2.31 |
| ------------------- |
| |
| UI, Workflows & Features |
| |
| * It does not make sense to make ".gitattributes", ".gitignore" and |
| ".mailmap" symlinks, as they are supposed to be usable from the |
| object store (think: bare repositories where HEAD:.mailmap etc. are |
| used). When these files are symbolic links, we used to read the |
| contents of the files pointed by them by mistake, which has been |
| corrected. |
| |
| * "git stash show" learned to optionally show untracked part of the |
| stash. |
| |
| * "git log --format='...'" learned "%(describe)" placeholder. |
| |
| * "git repack" so far has been only capable of repacking everything |
| under the sun into a single pack (or split by size). A cleverer |
| strategy to reduce the cost of repacking a repository has been |
| introduced. |
| |
| * The http codepath learned to let the credential layer to cache the |
| password used to unlock a certificate that has successfully been |
| used. |
| |
| * "git commit --fixup=<commit>", which was to tweak the changes made |
| to the contents while keeping the original log message intact, |
| learned "--fixup=(amend|reword):<commit>", that can be used to |
| tweak both the message and the contents, and only the message, |
| respectively. |
| |
| * When accessing a server with a URL like https://user:pass@site/, we |
| did not to fall back to the basic authentication with the |
| credential material embedded in the URL after the "Negotiate" |
| authentication failed. Now we do. |
| |
| * "git send-email" learned to honor the core.hooksPath configuration. |
| |
| * "git format-patch -v<n>" learned to allow a reroll count that is |
| not an integer. |
| |
| * "git commit" learned "--trailer <key>[=<value>]" option; together |
| with the interpret-trailers command, this will make it easier to |
| support custom trailers. |
| |
| * "git clone --reject-shallow" option fails the clone as soon as we |
| notice that we are cloning from a shallow repository. |
| |
| * A configuration variable has been added to force tips of certain |
| refs to be given a reachability bitmap. |
| |
| * "gitweb" learned "e-mail privacy" feature to redact strings that |
| look like e-mail addresses on various pages. |
| |
| * "git apply --3way" has always been "to fall back to 3-way merge |
| only when straight application fails". Swap the order of falling |
| back so that 3-way is always attempted first (only when the option |
| is given, of course) and then straight patch application is used as |
| a fallback when it fails. |
| |
| * "git apply" now takes "--3way" and "--cached" at the same time, and |
| work and record results only in the index. |
| |
| * The command line completion (in contrib/) has learned that |
| CHERRY_PICK_HEAD is a possible pseudo-ref. |
| |
| * Userdiff patterns for "Scheme" has been added. |
| |
| * "git log" learned "--diff-merges=<style>" option, with an |
| associated configuration variable log.diffMerges. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * Rename detection rework continues. |
| |
| * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with |
| prerequisites to catch broken tests that depend on the side effects |
| of optional pieces, but did not work at all when negative |
| prerequisites were involved. |
| (merge 27d578d904 jk/fail-prereq-testfix later to maint). |
| |
| * "git diff-index" codepath has been taught to trust fsmonitor status |
| to reduce number of lstat() calls. |
| (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint). |
| |
| * Reorganize Makefile to allow building git.o and other essential |
| objects without extra stuff needed only for testing. |
| |
| * Preparatory API changes for parallel checkout. |
| |
| * A simple IPC interface gets introduced to build services like |
| fsmonitor on top. |
| |
| * Fsck API clean-up. |
| |
| * SECURITY.md that is facing individual contributors and end users |
| has been introduced. Also a procedure to follow when preparing |
| embargoed releases has been spelled out. |
| (merge 09420b7648 js/security-md later to maint). |
| |
| * Optimize "rev-list --use-bitmap-index --objects" corner case that |
| uses negative tags as the stopping points. |
| |
| * CMake update for vsbuild. |
| |
| * An on-disk reverse-index to map the in-pack location of an object |
| back to its object name across multiple packfiles is introduced. |
| |
| * Generate [ec]tags under $(QUIET_GEN). |
| |
| * Clean-up codepaths that implements "git send-email --validate" |
| option and improves the message from it. |
| |
| * The last remnant of gettext-poison has been removed. |
| |
| * The test framework has been taught to optionally turn the default |
| merge strategy to "ort" throughout the system where we use |
| three-way merges internally, like cherry-pick, rebase etc., |
| primarily to enhance its test coverage (the strategy has been |
| available as an explicit "-s ort" choice). |
| |
| * A bit of code clean-up and a lot of test clean-up around userdiff |
| area. |
| |
| * Handling of "promisor packs" that allows certain objects to be |
| missing and lazily retrievable has been optimized (a bit). |
| |
| * When packet_write() fails, we gave an extra error message |
| unnecessarily, which has been corrected. |
| |
| * The checkout machinery has been taught to perform the actual |
| write-out of the files in parallel when able. |
| |
| * Show errno in the trace output in the error codepath that calls |
| read_raw_ref method. |
| |
| * Effort to make the command line completion (in contrib/) safe with |
| "set -u" continues. |
| |
| |
| Fixes since v2.31 |
| ----------------- |
| |
| * The fsmonitor interface read from its input without making sure |
| there is something to read from. This bug is new in 2.31 |
| timeframe. |
| |
| * The data structure used by fsmonitor interface was not properly |
| duplicated during an in-core merge, leading to use-after-free etc. |
| |
| * "git bisect" reimplemented more in C during 2.30 timeframe did not |
| take an annotated tag as a good/bad endpoint well. This regression |
| has been corrected. |
| |
| * Fix macros that can silently inject unintended null-statements. |
| |
| * CALLOC_ARRAY() macro replaces many uses of xcalloc(). |
| |
| * Update insn in Makefile comments to run fuzz-all target. |
| |
| * Fix a corner case bug in "git mv" on case insensitive systems, |
| which was introduced in 2.29 timeframe. |
| |
| * We had a code to diagnose and die cleanly when a required |
| clean/smudge filter is missing, but an assert before that |
| unnecessarily fired, hiding the end-user facing die() message. |
| (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint). |
| |
| * Update C code that sets a few configuration variables when a remote |
| is configured so that it spells configuration variable names in the |
| canonical camelCase. |
| (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint). |
| |
| * A new configuration variable has been introduced to allow choosing |
| which version of the generation number gets used in the |
| commit-graph file. |
| (merge 702110aac6 ds/commit-graph-generation-config later to maint). |
| |
| * Perf test update to work better in secondary worktrees. |
| (merge 36e834abc1 jk/perf-in-worktrees later to maint). |
| |
| * Updates to memory allocation code around the use of pcre2 library. |
| (merge c1760352e0 ab/grep-pcre2-allocfix later to maint). |
| |
| * "git -c core.bare=false clone --bare ..." would have segfaulted, |
| which has been corrected. |
| (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint). |
| |
| * When "git checkout" removes a path that does not exist in the |
| commit it is checking out, it wasn't careful enough not to follow |
| symbolic links, which has been corrected. |
| (merge fab78a0c3d mt/checkout-remove-nofollow later to maint). |
| |
| * A few option description strings started with capital letters, |
| which were corrected. |
| (merge 5ee90326dc cc/downcase-opt-help later to maint). |
| |
| * Plug or annotate remaining leaks that trigger while running the |
| very basic set of tests. |
| (merge 68ffe095a2 ah/plugleaks later to maint). |
| |
| * The hashwrite() API uses a buffering mechanism to avoid calling |
| write(2) too frequently. This logic has been refactored to be |
| easier to understand. |
| (merge ddaf1f62e3 ds/clarify-hashwrite later to maint). |
| |
| * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn |
| the editor as expected (e.g. "revert --no-edit" after a conflict |
| still asked to edit the message), which has been corrected. |
| (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint). |
| |
| * "git daemon" has been tightened against systems that take backslash |
| as directory separator. |
| (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint). |
| |
| * A NULL-dereference bug has been corrected in an error codepath in |
| "git for-each-ref", "git branch --list" etc. |
| (merge c685450880 jk/ref-filter-segfault-fix later to maint). |
| |
| * Streamline the codepath to fix the UTF-8 encoding issues in the |
| argv[] and the prefix on macOS. |
| (merge c7d0e61016 tb/precompose-prefix-simplify later to maint). |
| |
| * The command-line completion script (in contrib/) had a couple of |
| references that would have given a warning under the "-u" (nounset) |
| option. |
| (merge c5c0548d79 vs/completion-with-set-u later to maint). |
| |
| * When "git pack-objects" makes a literal copy of a part of existing |
| packfile using the reachability bitmaps, its update to the progress |
| meter was broken. |
| (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint). |
| |
| * The dependencies for config-list.h and command-list.h were broken |
| when the former was split out of the latter, which has been |
| corrected. |
| (merge 56550ea718 sg/bugreport-fixes later to maint). |
| |
| * "git push --quiet --set-upstream" was not quiet when setting the |
| upstream branch configuration, which has been corrected. |
| (merge f3cce896a8 ow/push-quiet-set-upstream later to maint). |
| |
| * The prefetch task in "git maintenance" assumed that "git fetch" |
| from any remote would fetch all its local branches, which would |
| fetch too much if the user is interested in only a subset of |
| branches there. |
| (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint). |
| |
| * Clarify that pathnames recorded in Git trees are most often (but |
| not necessarily) encoded in UTF-8. |
| (merge 9364bf465d ab/pathname-encoding-doc later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge f451960708 dl/cat-file-doc-cleanup later to maint). |
| (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint). |
| (merge ea7e63921c jr/doc-ignore-typofix later to maint). |
| (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint). |
| (merge 42efa1231a jk/filter-branch-sha256 later to maint). |
| (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint). |
| (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint). |
| (merge 47957485b3 ab/read-tree later to maint). |
| (merge 2be927f3d1 ab/diff-no-index-tests later to maint). |
| (merge 76593c09bb ab/detox-gettext-tests later to maint). |
| (merge 28e29ee38b jc/doc-format-patch-clarify later to maint). |
| (merge fc12b6fdde fm/user-manual-use-preface later to maint). |
| (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint). |
| (merge 61a7660516 hn/reftable-tables-doc-update later to maint). |
| (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint). |
| (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint). |
| (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint). |