| 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<max-hits>" 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. |
| |
| * Various messages that come from the pack-bitmap codepaths have been |
| tweaked. |
| |
| * "git rebase -i" learns to update branches whose tip appear in the |
| rebased range with "--update-refs" option. |
| |
| * "git ls-files" learns the "--format" option to tweak its output. |
| |
| * "git cat-file" learned an option to use the mailmap when showing |
| commit and tag objects. |
| |
| * When "git merge" finds that it cannot perform a merge, it should |
| restore the working tree to the state before the command was |
| initiated, but in some corner cases it didn't. |
| |
| * Operating modes like "--batch" of "git cat-file" command learned to |
| take NUL-terminated input, instead of one-item-per-line. |
| |
| * "git rm" has become more aware of the sparse-index feature. |
| |
| * "git rev-list --disk-usage" learned to take an optional value |
| "human" to show the reported value in human-readable format, like |
| "3.40MiB". |
| |
| |
| 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. |
| |
| * API tweak to make it easier to run fuzz testing on commit-graph parser. |
| |
| * Omit fsync-related trace2 entries when their values are all zero. |
| |
| * The codepath to write multi-pack index has been taught to release a |
| large chunk of memory that holds an array of objects in the packs, |
| as soon as it is done with the array, to reduce memory consumption. |
| |
| * Add a level of redirection to array allocation API in xdiff part, |
| to make it easier to share with the libgit2 project. |
| |
| * "git fetch" client logs the partial clone filter used in the trace2 |
| output. |
| |
| * The "bundle URI" design gets documented. |
| |
| |
| 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. |
| |
| * Adjust technical/bitmap-format to be formatted by AsciiDoc, and |
| add some missing information to the documentation. |
| |
| * Fixes for tests when the source directory has unusual characters in |
| its path, e.g. whitespaces, double-quotes, etc. |
| |
| * "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. |
| |
| * Give _() markings to fatal/warning/usage: labels that are shown in |
| front of these messages. |
| |
| * References to commands-to-be-typed-literally in "git rebase" |
| documentation mark-up have been corrected. |
| |
| * 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. |
| |
| * Recent update to vimdiff layout code has been made more robust |
| against different end-user vim settings. |
| |
| * 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. |
| |
| * The resolve-undo information in the index was not protected against |
| GC, which has been corrected. |
| |
| * A corner case bug where lazily fetching objects from a promisor |
| remote resulted in infinite recursion has been corrected. |
| |
| * "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. |
| |
| * An earlier attempt to plug leaks placed a clean-up label to jump to |
| at a bogus place, which as been corrected. |
| |
| * Variable quoting fix in the vimdiff driver of "git mergetool" |
| |
| * "git shortlog -n" relied on the underlying qsort() to be stable, |
| which shouldn't have. Fixed. |
| |
| * A fix for a regression in test framework. |
| |
| * mkstemp() emulation on Windows has been improved. |
| |
| * Add missing documentation for "include" and "includeIf" features in |
| "git config" file format, which incidentally teaches the command |
| line completion to include them in its offerings. |
| |
| * Avoid "white/black-list" in documentation and code comments. |
| |
| * Workaround for a compiler warning against use of die() in |
| osx-keychain (in contrib/). |
| |
| * Workaround for a false positive compiler warning. |
| |
| * "git p4" working on UTF-16 files on Windows did not implement |
| CRLF-to-LF conversion correctly, which has been corrected. |
| |
| * "git p4" did not handle non-ASCII client name well, which has been |
| corrected. |
| |
| * "rerere-train" script (in contrib/) used to honor commit.gpgSign |
| while recreating the throw-away merges. |
| |
| * "git checkout" miscounted the paths it updated, which has been |
| corrected. |
| |
| * Fix for a bug that makes write-tree to fail to write out a |
| non-existent index as a tree, introduced in 2.37. |
| |
| * There was a bug in the codepath to upgrade generation information |
| in commit-graph from v1 to v2 format, which has been corrected. |
| |
| * Gitweb had legacy URL shortener that is specific to the way |
| projects hosted on kernel.org used to (but no longer) work, which |
| has been removed. |
| (merge 75707da4fa jr/gitweb-title-shortening later to maint). |
| |
| * Fix build procedure for Windows that uses CMake so that it can pick |
| up the shell interpreter from local installation location. |
| (merge 476e54b1c6 ca/unignore-local-installation-on-windows later to maint). |
| |
| * Conditionally allow building Python interpreter on Windows |
| (merge 2f0623aaa7 js/mingw-with-python later to maint). |
| |
| * Fix to lstat() emulation on Windows. |
| (merge 82ba1191ff js/lstat-mingw-enotdir-fix later to maint). |
| |
| * Older gcc with -Wall complains about the universal zero initializer |
| "struct s = { 0 };" idiom, which makes developers' lives |
| inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The |
| build procedure has been tweaked to help these compilers. |
| (merge b53a5f2416 jk/struct-zero-init-with-older-gcc later to maint). |
| |
| * Plug memory leaks in the failure code path in the "merge-ort" merge |
| strategy backend. |
| (merge 1250dff32b js/ort-clean-up-after-failed-merge later to maint). |
| |
| * "git symbolic-ref symref non..sen..se" is now diagnosed as an error. |
| (merge 04ede97211 lt/symbolic-ref-sanity later to maint). |
| |
| * A follow-up fix to a fix for a regression in 2.36. |
| (merge 99ddc24672 ab/hooks-regression-fix later to maint). |
| |
| * Avoid repeatedly running getconf to ask libc version in the test |
| suite, and instead just as it once per script. |
| (merge a6a58f7801 pw/use-glibc-tunable-for-malloc-optim later to maint). |
| |
| * Platform-specific code that determines if a directory is OK to use |
| as a repository has been taught to report more details, especially |
| on Windows. |
| (merge 3f7207e2ea js/safe-directory-plus later to maint). |
| |
| * "vimdiff3" regression fix. |
| (merge 34133d9658 fc/vimdiff-layout-vimdiff3-fix later to maint). |
| |
| * "git fsck" reads mode from tree objects but canonicalizes the mode |
| before passing it to the logic to check object sanity, which has |
| hid broken tree objects from the checking logic. This has been |
| corrected, but to help exiting projects with broken tree objects |
| that they cannot fix retroactively, the severity of anomalies this |
| code detects has been demoted to "info" for now. |
| (merge 4dd3b045f5 jk/fsck-tree-mode-bits-fix later to maint). |
| |
| * Fixes to sparse index compatibility work for "reset" and "checkout" |
| commands. |
| (merge b15207b8cf vd/sparse-reset-checkout-fixes later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge 94955d576b gc/git-reflog-doc-markup later to maint). |
| (merge efae7ce692 po/doc-add-renormalize later to maint). |