t5000: use check_mtime()
[git.git] / Documentation / RelNotes / 2.40.0.txt
blobd1428f5fb8845be400672531b9906cdee4af2d7c
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
15    message.
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'
30    options.
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.
38  * "git check-attr" learned to take an optional tree-ish to read the
39    .gitattributes file from.
41  * "scalar" learned to give progress bar.
43  * "grep -P" learned to use Unicode Character Property to grok
44    character classes when processing \b and \w etc.
46  * "git rebase" often ignored incompatible options instead of
47    complaining, which has been corrected.
49  * "scalar" warns but continues when its periodic maintenance
50    feature cannot be enabled.
52  * The bundle-URI subsystem adds support for creation-token heuristics
53    to help incremental fetches.
55  * Userdiff regexp update for Java language.
58 Performance, Internal Implementation, Development Support etc.
60  * `git bisect` becomes a builtin.
62  * The pack-bitmap machinery is taught to log the paths of redundant
63    bitmap(s) to trace2 instead of stderr.
65  * Use the SHA1DC implementation on macOS, just like other platforms,
66    by default.
68  * Even in a repository with promisor remote, it is useless to
69    attempt to lazily attempt fetching an object that is expected to be
70    commit, because no "filter" mode omits commit objects.  Take
71    advantage of this assumption to fail fast on errors.
73  * Stop using "git --super-prefix" and narrow the scope of its use to
74    the submodule--helper.
76  * Stop running win+VS build by default.
78  * CI updates.  We probably want a clean-up to move the long shell
79    script embedded in yaml file into a separate file, but that can
80    come later.
82  * Use `git diff --no-index` as a test_cmp on Windows.
84    We'd probably need to revisit "do we really want to, and have to,
85    lose CRLF vs LF?" later, at which time we may be able to further
86    clean this up by replacing "git diff --no-index" with "diff -u".
88  * Avoid unnecessary builds in CI, with settings configured in
89    ci-config.
91  * Plug leaks in sequencer subsystem and its users.
93  * In-tree .gitattributes update to match the way we recommend our
94    users to mark a file as text.
95    (merge 1f34e0cd3d po/attributes-text later to maint).
97  * Finally retire the scripted "git add -p/-i" implementation and have
98    everybody use the one reimplemented in C.
101 Fixes since v2.39
102 -----------------
104  * Various leak fixes.
106  * Fix a bug where `pack-objects` would not respect multiple `--filter`
107    arguments when invoked directly.
108    (merge d4f7036887 rs/multi-filter-args later to maint).
110  * Make fsmonitor more robust to avoid the flakiness seen in t7527.
111    (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
113  * Stop using deprecated macOS API in fsmonitor.
114    (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
116  * Redefining system functions for a few functions did not follow our
117    usual "implement git_foo() and #define foo(args) git_foo(args)"
118    pattern, which has broken build for some folks.
120  * The way the diff machinery prepares the options array for the
121    parse_options API has been refactored to avoid resource leaks.
122    (merge 189e97bc4b rs/diff-parseopts later to maint).
124  * Correct pthread API usage.
125    (merge 786e67611d sx/pthread-error-check-fix later to maint).
127  * The code to auto-correct a misspelt subcommand unnecessarily called
128    into git_default_config() from the early config codepath, which was
129    a no-no.  This has bee corrected.
130    (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
132  * "git http-fetch" (which is rarely used) forgot to identify itself
133    in the trace2 output.
134    (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
136  * The output from "git diff --stat" on an unmerged path lost the
137    terminating LF in Git 2.39, which has been corrected.
138    (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
140  * "git pull -v --recurse-submodules" attempted to pass "-v" down to
141    underlying "git submodule update", which did not understand the
142    request and barfed, which has been corrected.
143    (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
145  * When given a pattern that matches an empty string at the end of a
146    line, the code to parse the "git diff" line-ranges fell into an
147    infinite loop, which has been corrected.
149  * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
150    flush its output to the disk..
152  * Fix to a small regression in 2.38 days.
154  * "git diff --relative" did not mix well with "git diff --ext-diff",
155    which has been corrected.
157  * The logic to see if we are using the "cone" mode by checking the
158    sparsity patterns has been tightened to avoid mistaking a pattern
159    that names a single file as specifying a cone.
161  * Deal with a few deprecation warning from cURL library.
163  * Doc update for environment variables set when hooks are invoked.
165  * Document ORIG_HEAD a bit more.
167  * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
168    path three times, which has been corrected.
170  * Remove "git env--helper" and demote it to a test-tool subcommand.
171    (merge 4a1baacd46 ab/test-env-helper later to maint).
173  * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
174    where '\(A\|B\)' works as alternation, unless explicitly asked with
175    the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
176    retain the old behaviour.
178  * Pthread emulation on Win32 leaked thread handle when a thread is
179    joined.
180    (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).
182  * "git send-email -v 3" used to be expanded to "git send-email
183    --validate 3" when the user meant to pass them down to
184    "format-patch", which has been corrected.
185    (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).
187  * Document that "branch -f <branch>" disables only the safety to
188    avoid recreating an existing branch.
190  * "git fetch <group>", when "<group>" of remotes lists the same
191    remote twice, unnecessarily failed when parallel fetching was
192    enabled, which has been corrected.
193    (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).
195  * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
196    different in the documentation.
198  * "git hash-object" now checks that the resulting object is well
199    formed with the same code as "git fsck".
200    (merge 8e4309038f jk/hash-object-fsck later to maint).
202  * Improve the error message given when private key is not loaded in
203    the ssh agent in the codepath to sign with an ssh key.
204    (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).
206  * Adjust "git request-pull" to strip embedded signature from signed
207    tags to notice non-PGP signatures.
208    (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).
210  * Remove support for MSys, which now lags way behind MSys2.
211    (merge 2987407f3c hj/remove-msys-support later to maint).
213  * Fix use of CreateThread() API call made early in the windows
214    start-up code.
215    (merge 592bcab61b sk/winansi-createthread-fix later to maint).
217  * "git pack-objects" learned to release delta-island bitmap data when
218    it is done using it, saving peak heap memory usage.
219    (merge 647982bb71 ew/free-island-marks later to maint).
221  * In an environment where dynamically generated code is prohibited to
222    run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
223    back to interpreted execution in such a case.
224    (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).
226  * Other code cleanup, docfix, build fix, etc.
227    (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
228    (merge f95526419b ar/typofix-gitattributes-doc later to maint).
229    (merge 27875aeec9 km/doc-branch-start-point later to maint).
230    (merge 35c194dc57 es/t1509-root-fixes later to maint).
231    (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
232    (merge bcb71d45bf jx/t1301-updates later to maint).
233    (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
234    (merge a87a20cbb4 ar/test-cleanup later to maint).
235    (merge f5156f1885 ar/bisect-doc-update later to maint).
236    (merge fca2d86c97 jk/interop-error later to maint).
237    (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
238    (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
239    (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
240    (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
241    (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
242    (merge 70661d288b ar/markup-em-dash later to maint).
243    (merge e750951e74 en/ls-files-doc-update later to maint).
244    (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
245    (merge 3a2ebaebc7 gc/index-format-doc later to maint).
246    (merge b08edf709d jk/httpd-test-updates later to maint).
247    (merge d85e9448dd wl/new-command-doc later to maint).
248    (merge d912a603ed kf/t5000-modernise later to maint).
249    (merge e65b868d07 rs/size-t-fixes later to maint).
250    (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
251    (merge d390e08076 cw/doc-pushurl-vs-url later to maint).