Git v2.38 Release Notes ======================= UI, Workflows & Features * "git remote show [-n] frotz" now pays attention to negative pathspec. * "git push" sometimes perform poorly when reachability bitmaps are used, even in a repository where other operations are helped by bitmaps. The push.useBitmaps configuration variable is introduced to allow disabling use of reachability bitmaps only for "git push". * "git grep -m" is a way to limit the hits shown per file. * "git merge-tree" learned a new mode where it takes two commits and computes a tree that would result in the merge commit, if the histories leading to these two commits were to be merged. * "git mv A B" in a sparsely populated working tree can be asked to move a path between directories that are "in cone" (i.e. expected to be materialized in the working tree) and "out of cone" (i.e. expected to be hidden). The handling of such cases has been improved. * Earlier, HTTP transport clients learned to tell the server side what locale they are in by sending Accept-Language HTTP header, but this was done only for some requests but not others. * Introduce a discovery.barerepository configuration variable that allows users to forbid discovery of bare repositories. Performance, Internal Implementation, Development Support etc. * Collection of what is referenced by objects in promisor packs have been optimized to inspect these objects in the in-pack order. * Introduce a helper to see if a branch is already being worked on (hence should not be newly checked out in a working tree), which performs much better than the existing find_shared_symref() to replace many uses of the latter. * Teach "git archive" to (optionally and then by default) avoid spawning an external "gzip" process when creating ".tar.gz" (and ".tgz") archives. * Allow large objects read from a packstream to be streamed into a loose object file straight, without having to keep it in-core as a whole. * Further preparation to turn git-submodule.sh into a builtin continues. * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp macro, which would improve maintainability and readability. * Teach "make all" to build gitweb as well. * Tweak tests so that they still work when the "git init" template did not create .git/info directory. * Add Coccinelle rules to detect the pattern of initializing and then finalizing a structure without using it in between at all, which happens after code restructuring and the compilers fail to recognize as an unused variable. * The code to convert between GPG trust level strings and internal constants we use to represent them have been cleaned up. * Support for libnettle as SHA256 implementation has been added. * The way "git multi-pack" uses parse-options API has been improved. * A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY macro has been improved. Fixes since v2.37 ----------------- * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't correctly record a removed file to the index, which was fixed. * Certain diff options are currently ignored when combined-diff is shown; mark them as incompatible with the feature. (merge cfb19ae05f rs/combine-diff-with-incompatible-options later to maint). * Adjust technical/bitmap-format to be formatted by AsciiDoc, and add some missing information to the documentation. (merge ac7667bd44 ac/bitmap-format-doc later to maint). * Fixes for tests when the source directory has unusual characters in its path, e.g. whitespaces, double-quotes, etc. (merge eb1cd60290 ab/test-quoting-fix later to maint). * "git mktree --missing" lazily fetched objects that are missing from the local object store, which was totally unnecessary for the purpose of creating the tree object(s) from its input. (merge 817b0f6027 ro/mktree-allow-missing-fix later to maint). * Give _() markings to fatal/warning/usage: labels that are shown in front of these messages. (merge a1fd2cf8cd dr/i18n-die-warn-error-usage later to maint). * References to commands-to-be-typed-literally in "git rebase" documentation mark-up have been corrected. (merge 54e51e559e ds/git-rebase-doc-markup later to maint). * In a non-bare repository, the behavior of Git when the core.worktree configuration variable points at a directory that has a repository as its subdirectory, regressed in Git 2.27 days. (merge d6c9a71755 gg/worktree-from-the-above later to maint). * Recent update to vimdiff layout code has been made more robust against different end-user vim settings. (merge f3d7623a13 fr/vimdiff-layout-fix later to maint). * Plug various memory leaks. (merge ece3974ba6 ab/leakfix later to maint). * Plug various memory leaks in test-tool commands. (merge f40a693450 ab/test-tool-leakfix later to maint). * Fixes a long-standing corner case bug around directory renames in the merge-ort strategy. (merge 751e165424 en/merge-dual-dir-renames-fix later to maint). * The resolve-undo information in the index was not protected against GC, which has been corrected. (merge e0ad13977a jc/resolve-undo later to maint). * A corner case bug where lazily fetching objects from a promisor remote resulted in infinite recursion has been corrected. (merge cb88b37cb9 hx/lookup-commit-in-graph-fix later to maint). * "git clone" from a repository with some ref whose HEAD is unborn did not set the HEAD in the resulting repository correctly, which has been corrected. (merge daf7898abb jk/clone-unborn-confusion later to maint). * An earlier attempt to plug leaks placed a clean-up label to jump to at a bogus place, which as been corrected. (merge 04393ae7f7 jk/diff-files-cleanup-fix later to maint). * Variable quoting fix in the vimdiff driver of "git mergetool" (merge ccc7b5148b js/vimdiff-quotepath-fix later to maint). * "git shortlog -n" relied on the underlying qsort() to be stable, which shouldn't have. Fixed. (merge df534dcbaa js/shortlog-sort-stably later to maint). * A fix for a regression in test framework. (merge 7253f7ca9f js/ci-github-workflow-markup later to maint). * mkstemp() emulation on Windows has been improved. (merge ae25974de3 rs/mingw-tighten-mkstemp later to maint). * Other code cleanup, docfix, build fix, etc. (merge 5fd9d1738e jk/revisions-doc-markup-fix later to maint). (merge 1971510c35 pb/diff-doc-raw-format later to maint). (merge a3ba4fa715 cr/setup-bug-typo later to maint). (merge 85845580d9 ds/vscode-settings later to maint). (merge ec2f6c0cca en/t6429-test-must-be-empty-fix later to maint). (merge 14deb585fb tb/pack-objects-remove-pahole-comment later to maint). (merge 2ffb7d13ee ds/t5510-brokequote later to maint). (merge 18337d406f ll/ls-files-tests-update later to maint). (merge 8cdab69d96 tk/rev-parse-doc-clarify-at-u later to maint).