Git fork
at reftables-rust 412 lines 18 kB view raw
1Git 2.35 Release Notes 2====================== 3 4Updates since Git 2.34 5---------------------- 6 7Backward compatibility warts 8 9 * "_" is now treated as any other URL-valid characters in an URL when 10 matching the per-URL configuration variable names. 11 12 * The color palette used by "git grep" has been updated to match that 13 of GNU grep. 14 15 16Note to those who build from the source 17 18 * You may need to define NO_UNCOMPRESS2 Makefile macro if you build 19 with zlib older than 1.2.9. 20 21 * If your compiler cannot grok C99, the build will fail. See the 22 instruction at the beginning of git-compat-util.h if this happens 23 to you. 24 25 26UI, Workflows & Features 27 28 * "git status --porcelain=v2" now show the number of stash entries 29 with --show-stash like the normal output does. 30 31 * "git stash" learned the "--staged" option to stash away what has 32 been added to the index (and nothing else). 33 34 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for 35 the newly created branch if "git init" is run. 36 37 * Various operating modes of "git reset" have been made to work 38 better with the sparse index. 39 40 * "git submodule deinit" for a submodule whose .git metadata 41 directory is embedded in its working tree refused to work, until 42 the submodule gets converted to use the "absorbed" form where the 43 metadata directory is stored in superproject, and a gitfile at the 44 top-level of the working tree of the submodule points at it. The 45 command is taught to convert such submodules to the absorbed form 46 as needed. 47 48 * The completion script (in contrib/) learns that the "--date" 49 option of commands from the "git log" family takes "human" and 50 "auto" as valid values. 51 52 * "Zealous diff3" style of merge conflict presentation has been added. 53 54 * The "git log --format=%(describe)" placeholder has been extended to 55 allow passing selected command-line options to the underlying "git 56 describe" command. 57 58 * "default" and "reset" have been added to our color palette. 59 60 * The cryptographic signing using ssh keys can specify literal keys 61 for keytypes whose name do not begin with the "ssh-" prefix by 62 using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256"). 63 64 * "git fetch" without the "--update-head-ok" option ought to protect 65 a checked out branch from getting updated, to prevent the working 66 tree that checks it out to go out of sync. The code was written 67 before the use of "git worktree" got widespread, and only checked 68 the branch that was checked out in the current worktree, which has 69 been updated. 70 71 * "git name-rev" has been tweaked to give output that is shorter and 72 easier to understand. 73 74 * "git apply" has been taught to ignore a message without a patch 75 with the "--allow-empty" option. It also learned to honor the 76 "--quiet" option given from the command line. 77 78 * The "init" and "set" subcommands in "git sparse-checkout" have been 79 unified for a better user experience and performance. 80 81 * Many git commands that deal with working tree files try to remove a 82 directory that becomes empty (i.e. "git switch" from a branch that 83 has the directory to another branch that does not would attempt 84 remove all files in the directory and the directory itself). This 85 drops users into an unfamiliar situation if the command was run in 86 a subdirectory that becomes subject to removal due to the command. 87 The commands have been taught to keep an empty directory if it is 88 the directory they were started in to avoid surprising users. 89 90 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is 91 done to a piece of e-mail without a patch in it. 92 93 * The default merge message prepared by "git merge" records the name 94 of the current branch; the name can be overridden with a new option 95 to allow users to pretend a merge is made on a different branch. 96 97 * The way "git p4" shows file sizes in its output has been updated to 98 use human-readable units. 99 100 * "git -c branch.autosetupmerge=inherit branch new old" makes "new" 101 to have the same upstream as the "old" branch, instead of marking 102 "old" itself as its upstream. 103 104 105Performance, Internal Implementation, Development Support etc. 106 107 * The use of errno as a means to carry the nature of error in the ref 108 API implementation has been reworked and reduced. 109 110 * Teach and encourage first-time contributors to this project to 111 state the base commit when they submit their topic. 112 113 * The command line completion for "git send-email" options have been 114 tweaked to make it easier to keep it in sync with the command itself. 115 116 * Ensure that the sparseness of the in-core index matches the 117 index.sparse configuration specified by the repository immediately 118 after the on-disk index file is read. 119 120 * Code clean-up to eventually allow information on remotes defined 121 for an arbitrary repository to be read. 122 123 * Build optimization. 124 125 * Tighten code for testing pack-bitmap. 126 127 * Weather balloon to break people with compilers that do not support 128 C99. 129 130 * The "reftable" backend for the refs API, without integrating into 131 the refs subsystem, has been added. 132 133 * More tests are marked as leak-free. 134 135 * The test framework learns to list unsatisfied test prerequisites, 136 and optionally error out when prerequisites that are expected to be 137 satisfied are not. 138 139 * The default setting for trace2 event nesting was too low to cause 140 test failures, which is worked around by bumping it up in the test 141 framework. 142 143 * Drop support for TravisCI and update test workflows at GitHub. 144 145 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME 146 mechanism to force "git" to use 'master' as the default name for 147 the initial branch no longer need it; the use of the mechanism from 148 them have been removed. 149 150 * Allow running our tests while disabling fsync. 151 152 * Document the parameters given to the reflog entry iterator callback 153 functions. 154 (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint). 155 156 * The test helper for refs subsystem learned to write bogus and/or 157 nonexistent object name to refs to simulate error situations we 158 want to test Git in. 159 160 * "diff --histogram" optimization. 161 162 * Weather balloon to find compilers that do not grok variable 163 declaration in the for() loop. 164 165 * diff and blame commands have been taught to work better with sparse 166 index. 167 168 * The chainlint test script linter in the test suite has been updated. 169 170 * The DEVELOPER=yes build uses -std=gnu99 now. 171 172 * "git format-patch" uses a single rev_info instance and then exits. 173 Mark the structure with UNLEAK() macro to squelch leak sanitizer. 174 175 * New interface into the tmp-objdir API to help in-core use of the 176 quarantine feature. 177 178 * Broken &&-chains in the test scripts have been corrected. 179 180 * The RCS keyword substitution in "git p4" used to be done assuming 181 that the contents are UTF-8 text, which can trigger decoding 182 errors. We now treat the contents as a bytestring for robustness 183 and correctness. 184 185 * The conditions to choose different definitions of the FLEX_ARRAY 186 macro for vendor compilers has been simplified to make it easier to 187 maintain. 188 189 * Correctness and performance update to "diff --color-moved" feature. 190 191 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer 192 but most of its payload came on 64kB "packets". The buffer size 193 has been enlarged so that such a packet fits. 194 195 * "git fetch" and "git pull" are now declared sparse-index clean. 196 Also "git ls-files" learns the "--sparse" option to help debugging. 197 198 * Similar message templates have been consolidated so that 199 translators need to work on fewer number of messages. 200 201 202Fixes since v2.34 203----------------- 204 205 * "git grep" looking in a blob that has non-UTF8 payload was 206 completely broken when linked with certain versions of PCREv2 207 library in the latest release. 208 209 * Other code cleanup, docfix, build fix, etc. 210 211 * "git pull" with any strategy when the other side is behind us 212 should succeed as it is a no-op, but doesn't. 213 214 * An earlier change in 2.34.0 caused JGit application (that abused 215 GIT_EDITOR mechanism when invoking "git config") to get stuck with 216 a SIGTTOU signal; it has been reverted. 217 218 * An earlier change that broke .gitignore matching has been reverted. 219 220 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the 221 operation modes of the "git branch" command that do not need the 222 sort key information, no longer errors out by seeing a bogus sort 223 key. 224 (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint). 225 226 * The compatibility implementation for unsetenv(3) were written to 227 mimic ancient, non-POSIX, variant seen in an old glibc; it has been 228 changed to return an integer to match the more modern era. 229 (merge a38989bd5b jc/unsetenv-returns-an-int later to maint). 230 231 * The clean/smudge conversion code path has been prepared to better 232 work on platforms where ulong is narrower than size_t. 233 (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint). 234 235 * Redact the path part of packfile URI that appears in the trace output. 236 (merge 0ba558ffb1 if/redact-packfile-uri later to maint). 237 238 * CI has been taught to catch some Unicode directional formatting 239 sequence that can be used in certain mischief. 240 (merge 0e7696c64d js/ci-no-directional-formatting later to maint). 241 242 * The "--date=format:<strftime>" gained a workaround for the lack of 243 system support for a non-local timezone to handle "%s" placeholder. 244 (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint). 245 246 * The "merge" subcommand of "git jump" (in contrib/) silently ignored 247 pathspec and other parameters. 248 (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint). 249 250 * The code to decode the length of packed object size has been 251 corrected. 252 (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint). 253 254 * The advice message given by "git pull" when the user hasn't made a 255 choice between merge and rebase still said that the merge is the 256 default, which no longer is the case. This has been corrected. 257 (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint). 258 259 * "git fetch", when received a bad packfile, can fail with SIGPIPE. 260 This wasn't wrong per-se, but we now detect the situation and fail 261 in a more predictable way. 262 (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint). 263 264 * The function to cull a child process and determine the exit status 265 had two separate code paths for normal callers and callers in a 266 signal handler, and the latter did not yield correct value when the 267 child has caught a signal. The handling of the exit status has 268 been unified for these two code paths. An existing test with 269 flakiness has also been corrected. 270 (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint). 271 272 * When a non-existent program is given as the pager, we tried to 273 reuse an uninitialized child_process structure and crashed, which 274 has been fixed. 275 (merge f917f57f40 em/missing-pager later to maint). 276 277 * The single-key-input mode in "git add -p" had some code to handle 278 keys that generate a sequence of input via ReadKey(), which did not 279 handle end-of-file correctly, which has been fixed. 280 (merge fc8a8126df cb/add-p-single-key-fix later to maint). 281 282 * "git rebase -x" added an unnecessary 'exec' instructions before 283 'noop', which has been corrected. 284 (merge cc9dcdee61 en/rebase-x-fix later to maint). 285 286 * When the "git push" command is killed while the receiving end is 287 trying to report what happened to the ref update proposals, the 288 latter used to die, due to SIGPIPE. The code now ignores SIGPIPE 289 to increase our chances to run the post-receive hook after it 290 happens. 291 (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint). 292 293 * "git worktree add" showed "Preparing worktree" message to the 294 standard output stream, but when it failed, the message from die() 295 went to the standard error stream. Depending on the order the 296 stdio streams are flushed at the program end, this resulted in 297 confusing output. It has been corrected by sending all the chatty 298 messages to the standard error stream. 299 (merge b50252484f es/worktree-chatty-to-stderr later to maint). 300 301 * Coding guideline document has been updated to clarify what goes to 302 standard error in our system. 303 (merge e258eb4800 es/doc-stdout-vs-stderr later to maint). 304 305 * The sparse-index/sparse-checkout feature had a bug in its use of 306 the matching code to determine which path is in or outside the 307 sparse checkout patterns. 308 (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint). 309 310 * "git rebase -x" by mistake started exporting the GIT_DIR and 311 GIT_WORK_TREE environment variables when the command was rewritten 312 in C, which has been corrected. 313 (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint). 314 315 * When "git log" implicitly enabled the "decoration" processing 316 without being explicitly asked with "--decorate" option, it failed 317 to read and honor the settings given by the "--decorate-refs" 318 option. 319 320 * "git fetch --set-upstream" did not check if there is a current 321 branch, leading to a segfault when it is run on a detached HEAD, 322 which has been corrected. 323 (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint). 324 325 * Among some code paths that ask an yes/no question, only one place 326 gave a prompt that looked different from the others, which has been 327 updated to match what the others create. 328 (merge 0fc8ed154c km/help-prompt-fix later to maint). 329 330 * "git log --invert-grep --author=<name>" used to exclude commits 331 written by the given author, but now "--invert-grep" only affects 332 the matches made by the "--grep=<pattern>" option. 333 (merge 794c000267 rs/log-invert-grep-with-headers later to maint). 334 335 * "git grep --perl-regexp" failed to match UTF-8 characters with 336 wildcard when the pattern consists only of ASCII letters, which has 337 been corrected. 338 (merge 32e3e8bc55 rs/pcre2-utf later to maint). 339 340 * Certain sparse-checkout patterns that are valid in non-cone mode 341 led to segfault in cone mode, which has been corrected. 342 343 * Use of certain "git rev-list" options with "git fast-export" 344 created nonsense results (the worst two of which being "--reverse" 345 and "--invert-grep --grep=<foo>"). The use of "--first-parent" is 346 made to behave a bit more sensible than before. 347 (merge 726a228dfb ws/fast-export-with-revision-options later to maint). 348 349 * Perf tests were run with end-user's shell, but it has been 350 corrected to use the shell specified by $TEST_SHELL_PATH. 351 (merge 9ccab75608 ja/perf-use-specified-shell later to maint). 352 353 * Fix dependency rules to generate hook-list.h header file. 354 (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint). 355 356 * "git stash" by default triggers its "push" action, but its 357 implementation also made "git stash -h" to show short help only for 358 "git stash push", which has been corrected. 359 (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint). 360 361 * "git apply --3way" bypasses the attempt to do a three-way 362 application in more cases to address the regression caused by the 363 recent change to use direct application as a fallback. 364 (merge 34d607032c jz/apply-3-corner-cases later to maint). 365 366 * Fix performance-releated bug in "git subtree" (in contrib/). 367 (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint). 368 369 * Extend the guidance to choose the base commit to build your work 370 on, and hint/nudge contributors to read others' changes. 371 (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint). 372 373 * A corner case bug in the ort merge strategy has been corrected. 374 (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint). 375 376 * "git stash apply" forgot to attempt restoring untracked files when 377 it failed to restore changes to tracked ones. 378 (merge 71cade5a0b en/stash-df-fix later to maint). 379 380 * Calling dynamically loaded functions on Windows has been corrected. 381 (merge 4a9b204920 ma/windows-dynload-fix later to maint). 382 383 * Some lockfile code called free() in signal-death code path, which 384 has been corrected. 385 (merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint). 386 387 * Other code cleanup, docfix, build fix, etc. 388 (merge 74db416c9c cw/protocol-v2-doc-fix later to maint). 389 (merge f9b2b6684d ja/doc-cleanup later to maint). 390 (merge 7d1b866778 jc/fix-first-object-walk later to maint). 391 (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint). 392 (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint). 393 (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint). 394 (merge 42c456ff81 rs/mergesort later to maint). 395 (merge ad506e6780 tl/midx-docfix later to maint). 396 (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint). 397 (merge 49f1eb3b34 jk/refs-g11-workaround later to maint). 398 (merge 7d3fc7df70 jt/midx-doc-fix later to maint). 399 (merge 7b089120d9 hn/create-reflog-simplify later to maint). 400 (merge 9e12400da8 cb/mingw-gmtime-r later to maint). 401 (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint). 402 (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint). 403 (merge eafd6e7e55 ab/die-with-bug later to maint). 404 (merge 91028f7659 jc/grep-patterntype-default-doc later to maint). 405 (merge 47ca93d071 ds/repack-fixlets later to maint). 406 (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint). 407 (merge deb5407a42 gh/gpg-doc-markup-fix later to maint). 408 (merge 999bba3e0b rs/daemon-plug-leak later to maint). 409 (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint). 410 (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint). 411 (merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint). 412 (merge 97d6fb5a1f ma/header-dup-cleanup later to maint).