Git 2.25 Release Notes ====================== Updates since v2.24 ------------------- Backward compatibility notes UI, Workflows & Features * A tutorial on object enumeration has been added. * The branch description ("git branch --edit-description") has been used to fill the body of the cover letters by the format-patch command; this has been enhanced so that the subject can also be filled. * "git rebase --preserve-merges" has been marked as deprecated; this release stops advertising it in the "git rebase -h" output. * The code to generate multi-pack index learned to show (or not to show) progress indicators. * "git apply --3way" learned to honor merge.conflictStyle configuration variable, like merges would. * The custom format for "git log --format=" learned the l/L placeholder that is similar to e/E that fills in the e-mail address, but only the local part on the left side of '@'. * Documentation pages for "git shortlog" now list commit limiting options explicitly. * The patterns to detect function boundary for Elixir language has been added. * The completion script (in contrib/) learned that the "--onto" option of "git rebase" can take its argument as the value of the option. * The userdiff machinery has been taught that "async def" is another way to begin a "function" in Python. * "git range-diff" learned to take the "--notes=" and the "--no-notes" options to control the commit notes included in the log message that gets compared. * "git rev-parse --show-toplevel" run outside of any working tree did not error out, which has been corrected. Performance, Internal Implementation, Development Support etc. * Debugging support for lazy cloning has been a bit improved. * Move the definition of a set of bitmask constants from 0ctal literal to (1U< macros that must appear in C99 systems have been removed. * Recently we have declared that GIT_TEST_* variables take the usual boolean values (it used to be that some used "non-empty means true" and taking GIT_TEST_VAR=YesPlease as true); make sure we notice and fail when non-bool strings are given to these variables. * Users of oneway_merge() (like "reset --hard") learned to take advantage of fsmonitor to avoid unnecessary lstat(2) calls. Fixes since v2.24 ----------------- * "rebase -i" ceased to run post-commit hook by mistake in an earlier update, which has been corrected. * "git notes copy $original" ought to copy the notes attached to the original object to HEAD, but a mistaken tightening to command line parameter validation made earlier disabled that feature by mistake. * When all files from some subdirectory were renamed to the root directory, the directory rename heuristics would fail to detect that as a rename/merge of the subdirectory to the root directory, which has been corrected. * Code clean-up and a bugfix in the logic used to tell worktree local and repository global refs apart. (merge f45f88b2e4 sg/dir-trie-fixes later to maint). * "git stash save" in a working tree that is sparsely checked out mistakenly removed paths that are outside the area of interest. (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint). * "git rev-parse --git-path HEAD.lock" did not give the right path when run in a secondary worktree. (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint). * "git merge --no-commit" needs "--no-ff" if you do not want to move HEAD, which has been corrected in the manual page for "git bisect". (merge 8dd327b246 ma/bisect-doc-sample-update later to maint). * "git worktree add" internally calls "reset --hard" that should not descend into submodules, even when submodule.recurse configuration is set, but it was affected. This has been corrected. (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint). * Messages from die() etc. can be mixed up from multiple processes without even line buffering on Windows, which has been worked around. (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint). * HTTP transport had possible allocator/deallocator mismatch, which has been corrected. * The watchman integration for fsmonitor was racy, which has been corrected to be more conservative. (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint). * Fetching from multiple remotes into the same repository in parallel had a bad interaction with the recent change to (optionally) update the commit-graph after a fetch job finishes, as these parallel fetches compete with each other. Which has been corrected. * Recent update to "git stash pop" made the command empty the index when run with the "--quiet" option, which has been corrected. * "git fetch" codepath had a big "do not lazily fetch missing objects when I ask if something exists" switch. This has been corrected by marking the "does this thing exist?" calls with "if not please do not lazily fetch it" flag. * Test update to avoid wasted cycles. (merge e0316695ec sg/skip-skipped-prereq later to maint). * Error handling after "git push" finishes sending the packdata and waits for the response to the remote side has been improved. (merge ad7a403268 jk/send-pack-remote-failure later to maint). * Some codepaths in "gitweb" that forgot to escape URLs generated based on end-user input have been corrected. (merge a376e37b2c jk/gitweb-anti-xss later to maint). * CI jobs for macOS has been made less chatty when updating perforce package used during testing. (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint). * "git unpack-objects" used to show progress based only on the number of received and unpacked objects, which stalled when it has to handle an unusually large object. It now shows the throughput as well. (merge bae60ba7e9 sg/unpack-progress-throughput later to maint). * The sequencer machinery compared the HEAD and the state it is attempting to commit to decide if the result would be a no-op commit, even when amending a commit, which was incorrect, and has been corrected. * The code to parse GPG output used to assume incorrectly that the finterprint for the primary key would always be present for a valid signature, which has been corrected. (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint). * "git submodule status" and "git submodule status --cached" show different things, but the documentation did not cover them correctly, which has been corrected. (merge 8d483c8408 mg/doc-submodule-status-cached later to maint). * "git reset --patch $object" without any pathspec should allow a tree object to be given, but incorrectly required a committish, which has been corrected. * "git submodule status" that is run from a subdirectory of the superproject did not work well, which has been corrected. (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint). * The revision walking machinery uses resources like per-object flag bits that need to be reset before a new iteration of walking begins, but the resources related to topological walk were not cleared correctly, which has been corrected. (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint). * Other code cleanup, docfix, build fix, etc. (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint). (merge 8b656572ca sg/commit-graph-usage-fix later to maint). (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint). (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint). (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint). (merge 270de6acbe en/t6024-style later to maint). (merge 14c4776d75 ns/test-desc-typofix later to maint). (merge 68d40f30c4 dj/typofix-merge-strat later to maint). (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint). (merge 169bed7421 rs/parse-options-dup-null-fix later to maint). (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint). (merge b018719927 ma/t7004 later to maint). (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint). (merge 46efd28be1 ep/guard-kset-tar-headers later to maint). (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint). (merge f0e58b3fe8 pb/submodule-update-fetches later to maint). (merge 2a02262078 dl/t5520-cleanup later to maint). (merge a4fb016ba1 js/pkt-line-h-typofix later to maint).