1 Git v2.40 Release Notes
2 =======================
4 UI, Workflows & Features
6 * "merge-tree" learns a new `--merge-base` option.
8 * "git jump" (in contrib/) learned to present the "quickfix list" to
9 its standard output (instead of letting it consumed by the editor
10 it invokes), and learned to also drive emacs/emacsclient.
12 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
13 given an empty value used to behave identically. Now the latter
14 just gives an empty output, while the former still gives an error
17 * Introduce a case insensitive mode to the Bash completion helpers.
19 * The advice message given by "git status" when it takes long time to
20 enumerate untracked paths has been updated.
22 * Just like "git var GIT_EDITOR" abstracts the complex logic to
23 choose which editor gets used behind it, "git var" now give support
24 to GIT_SEQUENCE_EDITOR.
26 * "git format-patch" learned to honor format.mboxrd even when sending
27 patches to the standard output stream,
29 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
32 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
33 applying patches with 'git am'.
35 * Introduce an optional configuration to allow the trailing hash that
36 protects the index file from bit flipping.
39 Performance, Internal Implementation, Development Support etc.
41 * `git bisect` becomes a builtin.
43 * The pack-bitmap machinery is taught to log the paths of redundant
44 bitmap(s) to trace2 instead of stderr.
46 * Use the SHA1DC implementation on macOS, just like other platforms,
49 * Even in a repository with promisor remote, it is useless to
50 attempt to lazily attempt fetching an object that is expected to be
51 commit, because no "filter" mode omits commit objects. Take
52 advantage of this assumption to fail fast on errors.
54 * Stop using "git --super-prefix" and narrow the scope of its use to
55 the submodule--helper.
57 * Stop running win+VS build by default.
58 (merge a0da6deeec js/ci-disable-cmake-by-default later to maint).
60 * CI updates. We probably want a clean-up to move the long shell
61 script embedded in yaml file into a separate file, but that can
63 (merge 4542582e59 cw/ci-whitespace later to maint).
65 * Use `git diff --no-index` as a test_cmp on Windows.
67 We'd probably need to revisit "do we really want to, and have to,
68 lose CRLF vs LF?" later, at which time we may be able to further
69 clean this up by replacing "git diff --no-index" with "diff -u".
71 * Avoid unnecessary builds in CI, with settings configured in
73 (merge eb5b03a9c0 tb/ci-concurrency later to maint).
80 (merge ac95f5d36a ab/various-leak-fixes later to maint).
82 * Fix a bug where `pack-objects` would not respect multiple `--filter`
83 arguments when invoked directly.
84 (merge d4f7036887 rs/multi-filter-args later to maint).
86 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
87 (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
89 * Stop using deprecated macOS API in fsmonitor.
90 (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
92 * Redefining system functions for a few functions did not follow our
93 usual "implement git_foo() and #define foo(args) git_foo(args)"
94 pattern, which has broken build for some folks.
95 (merge e1a95b78d8 jk/avoid-redef-system-functions-2.30 later to maint).
96 (merge 395bec6b39 jk/avoid-redef-system-functions later to maint).
98 * The way the diff machinery prepares the options array for the
99 parse_options API has been refactored to avoid resource leaks.
100 (merge 189e97bc4b rs/diff-parseopts later to maint).
102 * Correct pthread API usage.
103 (merge 786e67611d sx/pthread-error-check-fix later to maint).
105 * The code to auto-correct a misspelt subcommand unnecessarily called
106 into git_default_config() from the early config codepath, which was
107 a no-no. This has bee corrected.
108 (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
110 * "git http-fetch" (which is rarely used) forgot to identify itself
111 in the trace2 output.
112 (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
114 * The output from "git diff --stat" on an unmerged path lost the
115 terminating LF in Git 2.39, which has been corrected.
116 (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
118 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
119 underlying "git submodule update", which did not understand the
120 request and barfed, which has been corrected.
121 (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
123 * When given a pattern that matches an empty string at the end of a
124 line, the code to parse the "git diff" line-ranges fell into an
125 infinite loop, which has been corrected.
126 (merge 4e57c88e02 lk/line-range-parsing-fix later to maint).
128 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
129 flush its output to the disk..
130 (merge ce54672f9b ps/fsync-refs-fix later to maint).
132 * Fix to a small regression in 2.38 days.
133 (merge 6d5e9e53aa ab/bundle-wo-args later to maint).
135 * "git diff --relative" did not mix well with "git diff --ext-diff",
136 which has been corrected.
137 (merge f034bb1cad jk/ext-diff-with-relative later to maint).
139 * The logic to see if we are using the "cone" mode by checking the
140 sparsity patterns has been tightened to avoid mistaking a pattern
141 that names a single file as specifying a cone.
142 (merge 5842710dc2 ws/single-file-cone later to maint).
144 * Deal with a few deprecation warning from cURL library.
145 (merge 6c065f72b8 jk/curl-avoid-deprecated-api later to maint).
147 * Doc update for environment variables set when hooks are invoked.
148 (merge 772f8ff826 es/hooks-and-local-env later to maint).
150 * Document ORIG_HEAD a bit more.
151 (merge f1c9243fc5 pb/doc-orig-head later to maint).
153 * Other code cleanup, docfix, build fix, etc.
154 (merge 77e04b2ed4 rs/t4205-do-not-exit-in-test-script later to maint).
155 (merge faebba436e rs/plug-pattern-list-leak-in-lof later to maint).
156 (merge 243caa8982 ab/t5314-avoid-losing-exit-status later to maint).
157 (merge 4d81ce1b99 ab/t7600-avoid-losing-exit-status-of-git later to maint).
158 (merge 5f3bfdc4f3 ab/t4023-avoid-losing-exit-status-of-diff later to maint).
159 (merge 500317ae03 js/t3920-shell-and-or-fix later to maint).
160 (merge 86325d36e6 rs/t3920-crlf-eating-grep-fix later to maint).
161 (merge cfbd173ccb rj/branch-copy-and-rename later to maint).
162 (merge c25d9e529d jk/unused-post-2.39 later to maint).
163 (merge a31cfe3283 jk/server-supports-v2-cleanup later to maint).
164 (merge a658e881c1 rs/am-parse-options-cleanup later to maint).
165 (merge 4cb39fcf19 rs/clear-commit-marks-cleanup later to maint).
166 (merge b07a819c05 rs/reflog-expiry-cleanup later to maint).
167 (merge d422d06167 rs/clarify-error-in-write-loose-object later to maint).
168 (merge 92cb135855 sk/remove-duplicate-includes later to maint).
169 (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
170 (merge f95526419b ar/typofix-gitattributes-doc later to maint).
171 (merge 27875aeec9 km/doc-branch-start-point later to maint).
172 (merge 35c194dc57 es/t1509-root-fixes later to maint).
173 (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
174 (merge bcb71d45bf jx/t1301-updates later to maint).
175 (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
176 (merge a87a20cbb4 ar/test-cleanup later to maint).
177 (merge f5156f1885 ar/bisect-doc-update later to maint).
178 (merge fca2d86c97 jk/interop-error later to maint).
179 (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).