| 1 | Git v2.40 Release Notes |
| 2 | ======================= |
| 3 | |
| 4 | UI, Workflows & Features |
| 5 | |
| 6 | * "merge-tree" learns a new `--merge-base` option. |
| 7 | |
| 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. |
| 11 | |
| 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. |
| 16 | |
| 17 | * Introduce a case insensitive mode to the Bash completion helpers. |
| 18 | |
| 19 | * The advice message given by "git status" when it takes long time to |
| 20 | enumerate untracked paths has been updated. |
| 21 | |
| 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. |
| 25 | |
| 26 | * "git format-patch" learned to honor format.mboxrd even when sending |
| 27 | patches to the standard output stream, |
| 28 | |
| 29 | * 'cat-file' gains mailmap support for its '--batch-check' and '-s' |
| 30 | options. |
| 31 | |
| 32 | * Conditionally skip the pre-applypatch and applypatch-msg hooks when |
| 33 | applying patches with 'git am'. |
| 34 | |
| 35 | * Introduce an optional configuration to allow the trailing hash that |
| 36 | protects the index file from bit flipping. |
| 37 | |
| 38 | * "git check-attr" learned to take an optional tree-ish to read the |
| 39 | .gitattributes file from. |
| 40 | |
| 41 | * "scalar" learned to give progress bar. |
| 42 | |
| 43 | * "grep -P" learned to use Unicode Character Property to grok |
| 44 | character classes when processing \b and \w etc. |
| 45 | |
| 46 | * "git rebase" often ignored incompatible options instead of |
| 47 | complaining, which has been corrected. |
| 48 | |
| 49 | * "scalar" warns but continues when its periodic maintenance |
| 50 | feature cannot be enabled. |
| 51 | |
| 52 | * The bundle-URI subsystem adds support for creation-token heuristics |
| 53 | to help incremental fetches. |
| 54 | |
| 55 | * Userdiff regexp update for Java language. |
| 56 | |
| 57 | * "git fetch --jobs=0" used to hit a BUG(), which has been corrected |
| 58 | to use the available CPUs. |
| 59 | |
| 60 | * An invalid label or ref in the "rebase -i" todo file used to |
| 61 | trigger an runtime error. SUch an error is now diagnosed while the |
| 62 | todo file is parsed. |
| 63 | |
| 64 | * The "diff" drivers specified by the "diff" attribute attached to |
| 65 | paths can now specify which algorithm (e.g. histogram) to use. |
| 66 | |
| 67 | * "git range-diff" learned --abbrev=<num> option. |
| 68 | |
| 69 | * "git archive HEAD^{tree}" records the paths with the current |
| 70 | timestamp in the archive, making it harder to obtain a stable |
| 71 | output. The command learned the --mtime option to specify an |
| 72 | arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch). |
| 73 | |
| 74 | * The credential subsystem learned that a password may have an |
| 75 | explicit expiration. |
| 76 | |
| 77 | * The format.attach configuration variable lacked a way to override a |
| 78 | value defined in a lower-priority configuration file (e.g. the |
| 79 | system one) by redefining it in a higher-priority configuration |
| 80 | file. Now, setting format.attach to an empty string means show the |
| 81 | patch inline in the e-mail message, without using MIME attachment. |
| 82 | |
| 83 | This is a backward incompatible change. |
| 84 | |
| 85 | |
| 86 | Performance, Internal Implementation, Development Support etc. |
| 87 | |
| 88 | * `git bisect` becomes a builtin. |
| 89 | |
| 90 | * The pack-bitmap machinery is taught to log the paths of redundant |
| 91 | bitmap(s) to trace2 instead of stderr. |
| 92 | |
| 93 | * Use the SHA1DC implementation on macOS, just like other platforms, |
| 94 | by default. |
| 95 | |
| 96 | * Even in a repository with promisor remote, it is useless to |
| 97 | attempt to lazily attempt fetching an object that is expected to be |
| 98 | commit, because no "filter" mode omits commit objects. Take |
| 99 | advantage of this assumption to fail fast on errors. |
| 100 | |
| 101 | * Stop using "git --super-prefix" and narrow the scope of its use to |
| 102 | the submodule--helper. |
| 103 | |
| 104 | * Stop running win+VS build by default. |
| 105 | |
| 106 | * CI updates. We probably want a clean-up to move the long shell |
| 107 | script embedded in yaml file into a separate file, but that can |
| 108 | come later. |
| 109 | |
| 110 | * Use `git diff --no-index` as a test_cmp on Windows. |
| 111 | |
| 112 | We'd probably need to revisit "do we really want to, and have to, |
| 113 | lose CRLF vs LF?" later, at which time we may be able to further |
| 114 | clean this up by replacing "git diff --no-index" with "diff -u". |
| 115 | |
| 116 | * Avoid unnecessary builds in CI, with settings configured in |
| 117 | ci-config. |
| 118 | |
| 119 | * Plug leaks in sequencer subsystem and its users. |
| 120 | |
| 121 | * In-tree .gitattributes update to match the way we recommend our |
| 122 | users to mark a file as text. |
| 123 | (merge 1f34e0cd3d po/attributes-text later to maint). |
| 124 | |
| 125 | * Finally retire the scripted "git add -p/-i" implementation and have |
| 126 | everybody use the one reimplemented in C. |
| 127 | |
| 128 | |
| 129 | Fixes since v2.39 |
| 130 | ----------------- |
| 131 | |
| 132 | * Various leak fixes. |
| 133 | |
| 134 | * Fix a bug where `pack-objects` would not respect multiple `--filter` |
| 135 | arguments when invoked directly. |
| 136 | (merge d4f7036887 rs/multi-filter-args later to maint). |
| 137 | |
| 138 | * Make fsmonitor more robust to avoid the flakiness seen in t7527. |
| 139 | (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint). |
| 140 | |
| 141 | * Stop using deprecated macOS API in fsmonitor. |
| 142 | (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint). |
| 143 | |
| 144 | * Redefining system functions for a few functions did not follow our |
| 145 | usual "implement git_foo() and #define foo(args) git_foo(args)" |
| 146 | pattern, which has broken build for some folks. |
| 147 | |
| 148 | * The way the diff machinery prepares the options array for the |
| 149 | parse_options API has been refactored to avoid resource leaks. |
| 150 | (merge 189e97bc4b rs/diff-parseopts later to maint). |
| 151 | |
| 152 | * Correct pthread API usage. |
| 153 | (merge 786e67611d sx/pthread-error-check-fix later to maint). |
| 154 | |
| 155 | * The code to auto-correct a misspelt subcommand unnecessarily called |
| 156 | into git_default_config() from the early config codepath, which was |
| 157 | a no-no. This has bee corrected. |
| 158 | (merge 0918d08887 sg/help-autocorrect-config-fix later to maint). |
| 159 | |
| 160 | * "git http-fetch" (which is rarely used) forgot to identify itself |
| 161 | in the trace2 output. |
| 162 | (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint). |
| 163 | |
| 164 | * The output from "git diff --stat" on an unmerged path lost the |
| 165 | terminating LF in Git 2.39, which has been corrected. |
| 166 | (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint). |
| 167 | |
| 168 | * "git pull -v --recurse-submodules" attempted to pass "-v" down to |
| 169 | underlying "git submodule update", which did not understand the |
| 170 | request and barfed, which has been corrected. |
| 171 | (merge 6f65f84766 ss/pull-v-recurse-fix later to maint). |
| 172 | |
| 173 | * When given a pattern that matches an empty string at the end of a |
| 174 | line, the code to parse the "git diff" line-ranges fell into an |
| 175 | infinite loop, which has been corrected. |
| 176 | |
| 177 | * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to |
| 178 | flush its output to the disk.. |
| 179 | |
| 180 | * Fix to a small regression in 2.38 days. |
| 181 | |
| 182 | * "git diff --relative" did not mix well with "git diff --ext-diff", |
| 183 | which has been corrected. |
| 184 | |
| 185 | * The logic to see if we are using the "cone" mode by checking the |
| 186 | sparsity patterns has been tightened to avoid mistaking a pattern |
| 187 | that names a single file as specifying a cone. |
| 188 | |
| 189 | * Deal with a few deprecation warning from cURL library. |
| 190 | |
| 191 | * Doc update for environment variables set when hooks are invoked. |
| 192 | |
| 193 | * Document ORIG_HEAD a bit more. |
| 194 | |
| 195 | * "git ls-tree --format='%(path) %(path)' $tree $path" showed the |
| 196 | path three times, which has been corrected. |
| 197 | |
| 198 | * Remove "git env--helper" and demote it to a test-tool subcommand. |
| 199 | (merge 4a1baacd46 ab/test-env-helper later to maint). |
| 200 | |
| 201 | * Newer regex library macOS stopped enabling GNU-like enhanced BRE, |
| 202 | where '\(A\|B\)' works as alternation, unless explicitly asked with |
| 203 | the REG_ENHANCED flag. "git grep" now can be compiled to do so, to |
| 204 | retain the old behaviour. |
| 205 | |
| 206 | * Pthread emulation on Win32 leaked thread handle when a thread is |
| 207 | joined. |
| 208 | (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint). |
| 209 | |
| 210 | * "git send-email -v 3" used to be expanded to "git send-email |
| 211 | --validate 3" when the user meant to pass them down to |
| 212 | "format-patch", which has been corrected. |
| 213 | (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint). |
| 214 | |
| 215 | * Document that "branch -f <branch>" disables only the safety to |
| 216 | avoid recreating an existing branch. |
| 217 | |
| 218 | * "git fetch <group>", when "<group>" of remotes lists the same |
| 219 | remote twice, unnecessarily failed when parallel fetching was |
| 220 | enabled, which has been corrected. |
| 221 | (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint). |
| 222 | |
| 223 | * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but |
| 224 | different in the documentation. |
| 225 | |
| 226 | * "git hash-object" now checks that the resulting object is well |
| 227 | formed with the same code as "git fsck". |
| 228 | (merge 8e4309038f jk/hash-object-fsck later to maint). |
| 229 | |
| 230 | * Improve the error message given when private key is not loaded in |
| 231 | the ssh agent in the codepath to sign with an ssh key. |
| 232 | (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint). |
| 233 | |
| 234 | * Adjust "git request-pull" to strip embedded signature from signed |
| 235 | tags to notice non-PGP signatures. |
| 236 | (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint). |
| 237 | |
| 238 | * Remove support for MSys, which now lags way behind MSys2. |
| 239 | (merge 2987407f3c hj/remove-msys-support later to maint). |
| 240 | |
| 241 | * Fix use of CreateThread() API call made early in the windows |
| 242 | start-up code. |
| 243 | (merge 592bcab61b sk/winansi-createthread-fix later to maint). |
| 244 | |
| 245 | * "git pack-objects" learned to release delta-island bitmap data when |
| 246 | it is done using it, saving peak heap memory usage. |
| 247 | (merge 647982bb71 ew/free-island-marks later to maint). |
| 248 | |
| 249 | * In an environment where dynamically generated code is prohibited to |
| 250 | run (e.g. SELinux), failure to JIT pcre patterns is expected. Fall |
| 251 | back to interpreted execution in such a case. |
| 252 | (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint). |
| 253 | |
| 254 | * "git name-rev" heuristics update. |
| 255 | (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint). |
| 256 | |
| 257 | * Remove more remaining uses of macros that relies on the_index |
| 258 | singleton instance without explicitly spelling it out. |
| 259 | |
| 260 | * Remove unnecessary explicit sizing of strbuf. |
| 261 | (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint). |
| 262 | |
| 263 | * Doc update. |
| 264 | (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint). |
| 265 | |
| 266 | * Error messages given upon a signature verification failure used to |
| 267 | discard the errors from underlying gpg program, which has been |
| 268 | corrected. |
| 269 | (merge ad6b320756 js/gpg-errors later to maint). |
| 270 | |
| 271 | * Update --date=default documentation. |
| 272 | (merge 9deef088ae rd/doc-default-date-format later to maint). |
| 273 | |
| 274 | * A test helper had a single write(2) of 256kB, which was too big for |
| 275 | some platforms (e.g. NonStop), which has been corrected by using |
| 276 | xwrite() wrapper appropriately. |
| 277 | (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint). |
| 278 | |
| 279 | * sscanf(3) used in "git symbolic-ref --short" implementation found |
| 280 | to be not working reliably on macOS in UTF-8 locales. Rewrite the |
| 281 | code to avoid sscanf() altogether to work it around. |
| 282 | (merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint). |
| 283 | |
| 284 | * Various fix-ups on HTTP tests. |
| 285 | (merge 8f2146dbf1 jk/http-test-fixes later to maint). |
| 286 | |
| 287 | * Fixes to code that parses the todo file used in "rebase -i". |
| 288 | (merge 666b6e1135 pw/rebase-i-parse-fix later to maint). |
| 289 | |
| 290 | * Test library clean-up. |
| 291 | (merge c600a91c94 ar/test-lib-remove-stale-comment later to maint). |
| 292 | |
| 293 | * Other code cleanup, docfix, build fix, etc. |
| 294 | (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint). |
| 295 | (merge f95526419b ar/typofix-gitattributes-doc later to maint). |
| 296 | (merge 27875aeec9 km/doc-branch-start-point later to maint). |
| 297 | (merge 35c194dc57 es/t1509-root-fixes later to maint). |
| 298 | (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint). |
| 299 | (merge bcb71d45bf jx/t1301-updates later to maint). |
| 300 | (merge ebdc46c242 jc/doc-diff-patch.txt later to maint). |
| 301 | (merge a87a20cbb4 ar/test-cleanup later to maint). |
| 302 | (merge f5156f1885 ar/bisect-doc-update later to maint). |
| 303 | (merge fca2d86c97 jk/interop-error later to maint). |
| 304 | (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint). |
| 305 | (merge dcb47e52b0 en/t6426-todo-cleanup later to maint). |
| 306 | (merge 5b8db44bdd jc/format-patch-v-unleak later to maint). |
| 307 | (merge 590b636737 jk/hash-object-literally-fd-leak later to maint). |
| 308 | (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint). |
| 309 | (merge 70661d288b ar/markup-em-dash later to maint). |
| 310 | (merge e750951e74 en/ls-files-doc-update later to maint). |
| 311 | (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint). |
| 312 | (merge 3a2ebaebc7 gc/index-format-doc later to maint). |
| 313 | (merge b08edf709d jk/httpd-test-updates later to maint). |
| 314 | (merge d85e9448dd wl/new-command-doc later to maint). |
| 315 | (merge d912a603ed kf/t5000-modernise later to maint). |
| 316 | (merge e65b868d07 rs/size-t-fixes later to maint). |
| 317 | (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint). |
| 318 | (merge d390e08076 cw/doc-pushurl-vs-url later to maint). |
| 319 | (merge 567342fc77 rs/ctype-test later to maint). |
| 320 | (merge d35d8f2e7a ap/t2015-style-update later to maint). |