Git 2.31 Release Notes
======================

Updates since v2.30
-------------------

UI, Workflows & Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.
   (merge ca5120c339 rs/rebase-commit-validation later to maint).

 * Clean up option descriptions in "git cmd --help".
   (merge e73fe3dd02 zh/arg-help-format later to maint).

 * "git stash" did not work well in a sparsely checked out working
   tree.
   (merge ba359fd507 en/stash-apply-sparse-checkout later to maint).

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.
   (merge ea8bbf2a4e mt/t4129-with-setgid-dir later to maint).

 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
   any repository when the configuration variable <var> is not defined
   even once.
   (merge 6c62f01552 ds/for-each-repo-noopfix later to maint).

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.
   (merge 80f5a16798 pb/mergetool-tool-help-fix later to maint).

 * Fix for procedure to building CI test environment for mac.
   (merge 3831132ace jc/macos-install-dependencies-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 505a276596 pk/subsub-fetch-fix-take-2 later to maint).
   (merge 33fc56253b fc/t6030-bisect-reset-removes-auxiliary-files later to maint).
   (merge 7efc378205 ta/doc-typofix later to maint).
   (merge 1f4e9319c7 pb/doc-modules-git-work-tree-typofix later to maint).
   (merge 04f6b0a192 ma/t1300-cleanup later to maint).
   (merge 7b77f5a13e ma/doc-pack-format-varint-for-sizes later to maint).
   (merge cc2d43be2b nk/perf-fsmonitor-cleanup later to maint).
   (merge c8302c6c00 ar/t6016-modernise later to maint).
   (merge 0454986e78 jc/sign-off later to maint).
   (merge 155067ab4f vv/send-email-with-less-secure-apps-access later to maint).
   (merge acaabcf391 jk/t5516-deflake later to maint).
   (merge a1e03535db ad/t4129-setfacl-target-fix later to maint).
   (merge b356d23638 ug/doc-lose-dircache later to maint).
   (merge 9371c0e9dd ab/gettext-charset-comment-fix later to maint).
   (merge 52fc4f195c dl/p4-encode-after-kw-expansion later to maint).
   (merge 4eb56b56e7 bc/doc-status-short later to maint).
   (merge a4a1ca22ef tb/local-clone-race-doc later to maint).
