Documentation / RelNotes / 2.19.0.txton commit worktree: disallow adding same path multiple times (cb56f55)
   1Git 2.19 Release Notes
   2======================
   3
   4Updates since v2.18
   5-------------------
   6
   7UI, Workflows & Features
   8
   9 * "git diff" compares the index and the working tree.  For paths
  10   added with intent-to-add bit, the command shows the full contents
  11   of them as added, but the paths themselves were not marked as new
  12   files.  They are now shown as new by default.
  13
  14   "git apply" learned the "--intent-to-add" option so that an
  15   otherwise working-tree-only application of a patch will add new
  16   paths to the index marked with the "intent-to-add" bit.
  17
  18 * "git grep" learned the "--column" option that gives not just the
  19   line number but the column number of the hit.
  20
  21 * The "-l" option in "git branch -l" is an unfortunate short-hand for
  22   "--create-reflog", but many users, both old and new, somehow expect
  23   it to be something else, perhaps "--list".  This step warns when "-l"
  24   is used as a short-hand for "--create-reflog" and warns about the
  25   future repurposing of the it when it is used.
  26
  27 * The userdiff pattern for .php has been updated.
  28
  29 * The content-transfer-encoding of the message "git send-email" sends
  30   out by default was 8bit, which can cause trouble when there is an
  31   overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
  32   automatically switch to quoted-printable when there is such a line
  33   in the payload has been introduced and is made the default.
  34
  35 * "git checkout" and "git worktree add" learned to honor
  36   checkout.defaultRemote when auto-vivifying a local branch out of a
  37   remote tracking branch in a repository with multiple remotes that
  38   have tracking branches that share the same names.
  39   (merge 8d7b558bae ab/checkout-default-remote later to maint).
  40
  41 * "git grep" learned the "--only-matching" option.
  42
  43 * "git rebase --rebase-merges" mode now handles octopus merges as
  44   well.
  45
  46 * Add a server-side knob to skip commits in exponential/fibbonacci
  47   stride in an attempt to cover wider swath of history with a smaller
  48   number of iterations, potentially accepting a larger packfile
  49   transfer, instead of going back one commit a time during common
  50   ancestor discovery during the "git fetch" transaction.
  51   (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
  52
  53 * A new configuration variable core.usereplacerefs has been added,
  54   primarily to help server installations that want to ignore the
  55   replace mechanism altogether.
  56
  57 * Teach "git tag -s" etc. a few configuration variables (gpg.format
  58   that can be set to "openpgp" or "x509", and gpg.<format>.program
  59   that is used to specify what program to use to deal with the format)
  60   to allow x.509 certs with CMS via "gpgsm" to be used instead of
  61   openpgp via "gnupg".
  62
  63 * Many more strings are prepared for l10n.
  64
  65 * "git p4 submit" learns to ask its own pre-submit hook if it should
  66   continue with submitting.
  67
  68 * The test performed at the receiving end of "git push" to prevent
  69   bad objects from entering repository can be customized via
  70   receive.fsck.* configuration variables; we now have gained a
  71   counterpart to do the same on the "git fetch" side, with
  72   fetch.fsck.* configuration variables.
  73
  74 * "git pull --rebase=interactive" learned "i" as a short-hand for
  75   "interactive".
  76
  77 * "git instaweb" has been adjusted to run better with newer Apache on
  78   RedHat based distros.
  79
  80 * "git range-diff" is a reimplementation of "git tbdiff" that lets us
  81   compare individual patches in two iterations of a topic.
  82
  83 * The sideband code learned to optionally paint selected keywords at
  84   the beginning of incoming lines on the receiving end.
  85
  86 * "git branch --list" learned to take the default sort order from the
  87   'branch.sort' configuration variable, just like "git tag --list"
  88   pays attention to 'tag.sort'.
  89
  90 * "git worktree" command learned "--quiet" option to make it less
  91   verbose.
  92
  93
  94Performance, Internal Implementation, Development Support etc.
  95
  96 * The bulk of "git submodule foreach" has been rewritten in C.
  97
  98 * The in-core "commit" object had an all-purpose "void *util" field,
  99   which was tricky to use especially in library-ish part of the
 100   code.  All of the existing uses of the field has been migrated to a
 101   more dedicated "commit-slab" mechanism and the field is eliminated.
 102
 103 * A less often used command "git show-index" has been modernized.
 104   (merge fb3010c31f jk/show-index later to maint).
 105
 106 * The conversion to pass "the_repository" and then "a_repository"
 107   throughout the object access API continues.
 108
 109 * Continuing with the idea to programatically enumerate various
 110   pieces of data required for command line completion, teach the
 111   codebase to report the list of configuration variables
 112   subcommands care about to help complete them.
 113
 114 * Separate "rebase -p" codepath out of "rebase -i" implementation to
 115   slim down the latter and make it easier to manage.
 116
 117 * Make refspec parsing codepath more robust.
 118
 119 * Some flaky tests have been fixed.
 120
 121 * Continuing with the idea to programmatically enumerate various
 122   pieces of data required for command line completion, the codebase
 123   has been taught to enumerate options prefixed with "--no-" to
 124   negate them.
 125
 126 * Build and test procedure for netrc credential helper (in contrib/)
 127   has been updated.
 128
 129 * The conversion to pass "the_repository" and then "a_repository"
 130   throughout the object access API continues.
 131
 132 * Remove unused function definitions and declarations from ewah
 133   bitmap subsystem.
 134
 135 * Code preparation to make "git p4" closer to be usable with Python 3.
 136
 137 * Tighten the API to make it harder to misuse in-tree .gitmodules
 138   file, even though it shares the same syntax with configuration
 139   files, to read random configuration items from it.
 140
 141 * "git fast-import" has been updated to avoid attempting to create
 142   delta against a zero-byte-long string, which is pointless.
 143
 144 * The codebase has been updated to compile cleanly with -pedantic
 145   option.
 146   (merge 2b647a05d7 bb/pedantic later to maint).
 147
 148 * The character display width table has been updated to match the
 149   latest Unicode standard.
 150   (merge 570951eea2 bb/unicode-11-width later to maint).
 151
 152 * test-lint now looks for broken use of "VAR=VAL shell_func" in test
 153   scripts.
 154
 155 * Conversion from uchar[40] to struct object_id continues.
 156
 157 * Recent "security fix" to pay attention to contents of ".gitmodules"
 158   while accepting "git push" was a bit overly strict than necessary,
 159   which has been adjusted.
 160
 161 * "git fsck" learns to make sure the optional commit-graph file is in
 162   a sane state.
 163
 164 * "git diff --color-moved" feature has further been tweaked.
 165
 166 * Code restructuring and a small fix to transport protocol v2 during
 167   fetching.
 168
 169 * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 170   take has been tweaked.
 171
 172 * lookup_commit_reference() and friends have been updated to find
 173   in-core object for a specific in-core repository instance.
 174
 175 * Various glitches in the heuristics of merge-recursive strategy have
 176   been documented in new tests.
 177
 178 * "git fetch" learned a new option "--negotiation-tip" to limit the
 179   set of commits it tells the other end as "have", to reduce wasted
 180   bandwidth and cycles, which would be helpful when the receiving
 181   repository has a lot of refs that have little to do with the
 182   history at the remote it is fetching from.
 183
 184 * For a large tree, the index needs to hold many cache entries
 185   allocated on heap.  These cache entries are now allocated out of a
 186   dedicated memory pool to amortize malloc(3) overhead.
 187
 188 * Tests to cover various conflicting cases have been added for
 189   merge-recursive.
 190
 191 * Tests to cover conflict cases that involve submodules have been
 192   added for merge-recursive.
 193
 194 * Look for broken "&&" chains that are hidden in subshell, many of
 195   which have been found and corrected.
 196
 197 * The singleton commit-graph in-core instance is made per in-core
 198   repository instance.
 199
 200 * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
 201   with -pedantic option, which may catch more problematic program
 202   constructs and potential bugs.
 203
 204 * Preparatory code to later add json output for telemetry data has
 205   been added.
 206
 207 * Update the way we use Coccinelle to find out-of-style code that
 208   need to be modernised.
 209
 210 * It is too easy to misuse system API functions such as strcat();
 211   these selected functions are now forbidden in this codebase and
 212   will cause a compilation failure.
 213
 214 * Add a script (in contrib/) to help users of VSCode work better with
 215   our codebase.
 216
 217 * The Travis CI scripts were taught to ship back the test data from
 218   failed tests.
 219   (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
 220
 221 * The parse-options machinery learned to refrain from enclosing
 222   placeholder string inside a "<bra" and "ket>" pair automatically
 223   without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
 224   arguments that are not formatted correctly have been identified and
 225   fixed.
 226   (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
 227
 228 * Noiseword "extern" has been removed from function decls in the
 229   header files.
 230
 231 * A few atoms like %(objecttype) and %(objectsize) in the format
 232   specifier of "for-each-ref --format=<format>" can be filled without
 233   getting the full contents of the object, but just with the object
 234   header.  These cases have been optimized by calling
 235   oid_object_info() API (instead of reading and inspecting the data).
 236
 237 * The end result of documentation update has been made to be
 238   inspected more easily to help developers.
 239
 240 * The API to iterate over all objects learned to optionally list
 241   objects in the order they appear in packfiles, which helps locality
 242   of access if the caller accesses these objects while as objects are
 243   enumerated.
 244
 245 * Improve built-in facility to catch broken &&-chain in the tests.
 246
 247 * The more library-ish parts of the codebase learned to work on the
 248   in-core index-state instance that is passed in by their callers,
 249   instead of always working on the singleton "the_index" instance.
 250
 251 * A test prerequisite defined by various test scripts with slightly
 252   different semantics has been consolidated into a single copy and
 253   made into a lazily defined one.
 254   (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
 255
 256 * After a partial clone, repeated fetches from promisor remote would
 257   have accumulated many packfiles marked with .promisor bit without
 258   getting them coalesced into fewer packfiles, hurting performance.
 259   "git repack" now learned to repack them.
 260
 261 * Partially revert the support for multiple hash functions to regain
 262   hash comparison performance; we'd think of a way to do this better
 263   in the next cycle.
 264
 265 * "git help --config" (which is used in command line completion)
 266   missed the configuration variables not described in the main
 267   config.txt file but are described in another file that is included
 268   by it, which has been corrected.
 269
 270Fixes since v2.18
 271-----------------
 272
 273 * "git remote update" can take both a single remote nickname and a
 274   nickname for remote groups, and the completion script (in contrib/)
 275   has been taught about it.
 276   (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
 277
 278 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
 279   point that is newer than the existing history used to end up
 280   grabbing the entire history.  Such a request now errors out.
 281   (merge e34de73c56 nd/reject-empty-shallow-request later to maint).
 282
 283 * Fix for 2.17-era regression around `core.safecrlf`.
 284   (merge 6cb09125be as/safecrlf-quiet-fix later to maint).
 285
 286 * The recent addition of "partial clone" experimental feature kicked
 287   in when it shouldn't, namely, when there is no partial-clone filter
 288   defined even if extensions.partialclone is set.
 289   (merge cac1137dc4 jh/partial-clone later to maint).
 290
 291 * "git send-pack --signed" (hence "git push --signed" over the http
 292   transport) did not read user ident from the config mechanism to
 293   determine whom to sign the push certificate as, which has been
 294   corrected.
 295   (merge d067d98887 ms/send-pack-honor-config later to maint).
 296
 297 * "git fetch-pack --all" used to unnecessarily fail upon seeing an
 298   annotated tag that points at an object other than a commit.
 299   (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
 300
 301 * When user edits the patch in "git add -p" and the user's editor is
 302   set to strip trailing whitespaces indiscriminately, an empty line
 303   that is unchanged in the patch would become completely empty
 304   (instead of a line with a sole SP on it).  The code introduced in
 305   Git 2.17 timeframe failed to parse such a patch, but now it learned
 306   to notice the situation and cope with it.
 307   (merge f4d35a6b49 pw/add-p-recount later to maint).
 308
 309 * The code to try seeing if a fetch is necessary in a submodule
 310   during a fetch with --recurse-submodules got confused when the path
 311   to the submodule was changed in the range of commits in the
 312   superproject, sometimes showing "(null)".  This has been corrected.
 313
 314 * "git submodule" did not correctly adjust core.worktree setting that
 315   indicates whether/where a submodule repository has its associated
 316   working tree across various state transitions, which has been
 317   corrected.
 318
 319 * Bugfix for "rebase -i" corner case regression.
 320   (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
 321
 322 * Recently added "--base" option to "git format-patch" command did
 323   not correctly generate prereq patch ids.
 324   (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
 325
 326 * POSIX portability fix in Makefile to fix a glitch introduced a few
 327   releases ago.
 328   (merge 6600054e9b dj/runtime-prefix later to maint).
 329
 330 * "git filter-branch" when used with the "--state-branch" option
 331   still attempted to rewrite the commits whose filtered result is
 332   known from the previous attempt (which is recorded on the state
 333   branch); the command has been corrected not to waste cycles doing
 334   so.
 335   (merge 709cfe848a mb/filter-branch-optim later to maint).
 336
 337 * Clarify that setting core.ignoreCase to deviate from reality would
 338   not turn a case-incapable filesystem into a case-capable one.
 339   (merge 48294b512a ms/core-icase-doc later to maint).
 340
 341 * "fsck.skipList" did not prevent a blob object listed there from
 342   being inspected for is contents (e.g. we recently started to
 343   inspect the contents of ".gitmodules" for certain malicious
 344   patterns), which has been corrected.
 345   (merge fb16287719 rj/submodule-fsck-skip later to maint).
 346
 347 * "git checkout --recurse-submodules another-branch" did not report
 348   in which submodule it failed to update the working tree, which
 349   resulted in an unhelpful error message.
 350   (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
 351
 352 * "git rebase" behaved slightly differently depending on which one of
 353   the three backends gets used; this has been documented and an
 354   effort to make them more uniform has begun.
 355   (merge b00bf1c9a8 en/rebase-consistency later to maint).
 356
 357 * The "--ignore-case" option of "git for-each-ref" (and its friends)
 358   did not work correctly, which has been fixed.
 359   (merge e674eb2528 jk/for-each-ref-icase later to maint).
 360
 361 * "git fetch" failed to correctly validate the set of objects it
 362   received when making a shallow history deeper, which has been
 363   corrected.
 364   (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
 365
 366 * Partial clone support of "git clone" has been updated to correctly
 367   validate the objects it receives from the other side.  The server
 368   side has been corrected to send objects that are directly
 369   requested, even if they may match the filtering criteria (e.g. when
 370   doing a "lazy blob" partial clone).
 371   (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
 372
 373 * Handling of an empty range by "git cherry-pick" was inconsistent
 374   depending on how the range ended up to be empty, which has been
 375   corrected.
 376   (merge c5e358d073 jk/empty-pick-fix later to maint).
 377
 378 * "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
 379   had trouble working correctly in a sparsely checked out working
 380   tree after a conflict, which has been corrected.
 381   (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
 382
 383 * Correct a broken use of "VAR=VAL shell_func" in a test.
 384   (merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
 385
 386 * "git rev-parse ':/substring'" did not consider the history leading
 387   only to HEAD when looking for a commit with the given substring,
 388   when the HEAD is detached.  This has been fixed.
 389   (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
 390
 391 * Build doc update for Windows.
 392   (merge ede8d89bb1 nd/command-list later to maint).
 393
 394 * core.commentchar is now honored when preparing the list of commits
 395   to replay in "rebase -i".
 396
 397 * "git pull --rebase" on a corrupt HEAD caused a segfault.  In
 398   general we substitute an empty tree object when running the in-core
 399   equivalent of the diff-index command, and the codepath has been
 400   corrected to do so as well to fix this issue.
 401   (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
 402
 403 * httpd tests saw occasional breakage due to the way its access log
 404   gets inspected by the tests, which has been updated to make them
 405   less flaky.
 406   (merge e8b3b2e275 sg/httpd-test-unflake later to maint).
 407
 408 * Tests to cover more D/F conflict cases have been added for
 409   merge-recursive.
 410
 411 * "git gc --auto" opens file descriptors for the packfiles before
 412   spawning "git repack/prune", which would upset Windows that does
 413   not want a process to work on a file that is open by another
 414   process.  The issue has been worked around.
 415   (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
 416
 417 * The recursive merge strategy did not properly ensure there was no
 418   change between HEAD and the index before performing its operation,
 419   which has been corrected.
 420   (merge 55f39cf755 en/dirty-merge-fixes later to maint).
 421
 422 * "git rebase" started exporting GIT_DIR environment variable and
 423   exposing it to hook scripts when part of it got rewritten in C.
 424   Instead of matching the old scripted Porcelains' behaviour,
 425   compensate by also exporting GIT_WORK_TREE environment as well to
 426   lessen the damage.  This can harm existing hooks that want to
 427   operate on different repository, but the current behaviour is
 428   already broken for them anyway.
 429   (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
 430
 431 * "git send-email" when using in a batched mode that limits the
 432   number of messages sent in a single SMTP session lost the contents
 433   of the variable used to choose between tls/ssl, unable to send the
 434   second and later batches, which has been fixed.
 435   (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
 436
 437 * The lazy clone support had a few places where missing but promised
 438   objects were not correctly tolerated, which have been fixed.
 439
 440 * One of the "diff --color-moved" mode "dimmed_zebra" that was named
 441   in an unusual way has been deprecated and replaced by
 442   "dimmed-zebra".
 443   (merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
 444
 445 * The wire-protocol v2 relies on the client to send "ref prefixes" to
 446   limit the bandwidth spent on the initial ref advertisement.  "git
 447   clone" when learned to speak v2 forgot to do so, which has been
 448   corrected.
 449   (merge 402c47d939 bw/clone-ref-prefixes later to maint).
 450
 451 * "git diff --histogram" had a bad memory usage pattern, which has
 452   been rearranged to reduce the peak usage.
 453   (merge 79cb2ebb92 sb/histogram-less-memory later to maint).
 454
 455 * Code clean-up to use size_t/ssize_t when they are the right type.
 456   (merge 7726d360b5 jk/size-t later to maint).
 457
 458 * The wire-protocol v2 relies on the client to send "ref prefixes" to
 459   limit the bandwidth spent on the initial ref advertisement.  "git
 460   fetch $remote branch:branch" that asks tags that point into the
 461   history leading to the "branch" automatically followed sent to
 462   narrow prefix and broke the tag following, which has been fixed.
 463   (merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
 464
 465 * When the sparse checkout feature is in use, "git cherry-pick" and
 466   other mergy operations lost the skip_worktree bit when a path that
 467   is excluded from checkout requires content level merge, which is
 468   resolved as the same as the HEAD version, without materializing the
 469   merge result in the working tree, which made the path appear as
 470   deleted.  This has been corrected by preserving the skip_worktree
 471   bit (and not materializing the file in the working tree).
 472   (merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
 473
 474 * The "author-script" file "git rebase -i" creates got broken when
 475   we started to move the command away from shell script, which is
 476   getting fixed now.
 477   (merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
 478
 479 * The automatic tree-matching in "git merge -s subtree" was broken 5
 480   years ago and nobody has noticed since then, which is now fixed.
 481   (merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
 482
 483 * "git fetch $there refs/heads/s" ought to fetch the tip of the
 484   branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
 485   name is "refs/heads/s" exists at the same time, fetched that one
 486   instead by mistake.  This has been corrected to honor the usual
 487   disambiguation rules for abbreviated refnames.
 488   (merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
 489
 490 * Futureproofing a helper function that can easily be misused.
 491   (merge 65bb21e77e es/want-color-fd-defensive later to maint).
 492
 493 * The http-backend (used for smart-http transport) used to slurp the
 494   whole input until EOF, without paying attention to CONTENT_LENGTH
 495   that is supplied in the environment and instead expecting the Web
 496   server to close the input stream.  This has been fixed.
 497   (merge eebfe40962 mk/http-backend-content-length later to maint).
 498
 499 * "git merge --abort" etc. did not clean things up properly when
 500   there were conflicted entries in the index in certain order that
 501   are involved in D/F conflicts.  This has been corrected.
 502   (merge ad3762042a en/abort-df-conflict-fixes later to maint).
 503
 504 * "git diff --indent-heuristic" had a bad corner case performance.
 505   (merge 301ef85401 sb/indent-heuristic-optim later to maint).
 506
 507 * The "--exec" option to "git rebase --rebase-merges" placed the exec
 508   commands at wrong places, which has been corrected.
 509
 510 * "git verify-tag" and "git verify-commit" have been taught to use
 511   the exit status of underlying "gpg --verify" to signal bad or
 512   untrusted signature they found.
 513   (merge 4e5dc9ca17 jc/gpg-status later to maint).
 514
 515 * "git mergetool" stopped and gave an extra prompt to continue after
 516   the last path has been handled, which did not make much sense.
 517   (merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
 518
 519 * Among the three codepaths we use O_APPEND to open a file for
 520   appending, one used for writing GIT_TRACE output requires O_APPEND
 521   implementation that behaves sensibly when multiple processes are
 522   writing to the same file.  POSIX emulation used in the Windows port
 523   has been updated to improve in this area.
 524   (merge d641097589 js/mingw-o-append later to maint).
 525
 526 * "git pull --rebase -v" in a repository with a submodule barfed as
 527   an intermediate process did not understand what "-v(erbose)" flag
 528   meant, which has been fixed.
 529   (merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
 530
 531 * Recent update to "git config" broke updating variable in a
 532   subsection, which has been corrected.
 533   (merge bff7df7a87 sb/config-write-fix later to maint).
 534
 535 * When "git rebase -i" is told to squash two or more commits into
 536   one, it labeled the log message for each commit with its number.
 537   It correctly called the first one "1st commit", but the next one
 538   was "commit #1", which was off-by-one.  This has been corrected.
 539   (merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
 540
 541 * "git rebase -i", when a 'merge <branch>' insn in its todo list
 542   fails, segfaulted, which has been (minimally) corrected.
 543   (merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
 544
 545 * "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
 546   though we won't be in a cherry-pick session after it returns, which
 547   has been corrected.
 548   (merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
 549
 550 * In a recent update in 2.18 era, "git pack-objects" started
 551   producing a larger than necessary packfiles by missing
 552   opportunities to use large deltas.  This has been corrected.
 553
 554 * The meaning of the possible values the "core.checkStat"
 555   configuration variable can take were not adequately documented,
 556   which has been fixed.
 557   (merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
 558
 559 * Code cleanup, docfix, build fix, etc.
 560   (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
 561   (merge 037714252f jc/clean-after-sanity-tests later to maint).
 562   (merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
 563   (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
 564   (merge bb4d000e87 bw/protocol-v2 later to maint).
 565   (merge 928f0ab4ba vs/typofixes later to maint).
 566   (merge d7f590be84 en/rebase-i-microfixes later to maint).
 567   (merge 81d395cc85 js/rebase-recreate-merge later to maint).
 568   (merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
 569   (merge a9aa3c0927 ds/commit-graph later to maint).
 570   (merge 5cf8e06474 js/enhanced-version-info later to maint).
 571   (merge 6aaded5509 tb/config-default later to maint).
 572   (merge 022d2ac1f3 sb/blame-color later to maint).
 573   (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
 574   (merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
 575   (merge 1e83b9bfdd sb/trailers-docfix later to maint).
 576   (merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
 577   (merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
 578   (merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
 579   (merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
 580   (merge fe583c6c7a rs/remote-mv-leakfix later to maint).
 581   (merge 69885ab015 en/t3031-title-fix later to maint).
 582   (merge 8578037bed nd/config-blame-sort later to maint).
 583   (merge 8ad169c4ba hn/config-in-code-comment later to maint).
 584   (merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
 585   (merge a8132410ee js/typofixes later to maint).
 586   (merge 388d0ff6e5 en/update-index-doc later to maint).
 587   (merge e05aa688dd jc/update-index-doc later to maint).
 588   (merge 10c600172c sg/t5310-empty-input-fix later to maint).
 589   (merge 5641eb9465 jh/partial-clone-doc later to maint).
 590   (merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
 591   (merge ce528de023 ab/unconditional-free-and-null later to maint).
 592   (merge bbc072f5d8 rs/opt-updates later to maint).
 593   (merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
 594   (merge 1820703045 js/larger-timestamps later to maint).
 595   (merge c8b35b95e1 sg/t4051-fix later to maint).
 596   (merge 30612cb670 sg/t0020-conversion-fix later to maint).
 597   (merge 15da753709 sg/t7501-thinkofix later to maint).
 598   (merge 79b04f9b60 sg/t3903-missing-fix later to maint).
 599   (merge 2745817028 sg/t3420-autostash-fix later to maint).
 600   (merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).