Git v2.53 Release Notes
=======================

UI, Workflows & Features
------------------------

 * "git maintenance" command learned "is-needed" subcommand to tell if
   it is necessary to perform various maintenance tasks.

 * "git replay" (experimental) learned to perform ref updates itself
   in a transaction by default, instead of emitting where each refs
   should point at and leaving the actual update to another command.

 * "git blame" learns "--diff-algorithm=<algo>" option.

 * "git repo info" learned "--all" option.

 * Both "git apply" and "git diff" learn a new whitespace error class,
   "incomplete-line".

 * Add a new manual that describes the data model.

 * "git fast-import" learns "--strip-if-invalid" option to drop
   invalid cryptographic signature from objects.

 * The use of "revision" (a connected set of commits) has been
   clarified in the "git replay" documentation.

 * A help message from "git branch" now mentions "git help" instead of
   "man" when suggesting to read some documentation.

 * "git repo struct" learned to take "-z" as a synonym to "--format=nul".


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * The list of packfiles used in a running Git process is moved from
   the packed_git structure into the packfile store.

 * Some ref backend storage can hold not just the object name of an
   annotated tag, but the object name of the object the tag points at.
   The code to handle this information has been streamlined.

 * As "git diff --quiet" only cares about the existence of any
   changes, disable rename/copy detection to skip more expensive
   processing whose result will be discarded anyway.

 * A part of code paths that deals with loose objects has been cleaned
   up.

 * "make strip" has been taught to strip "scalar" as well as "git".

 * Dockerised jobs at the GitHub Actions CI have been taught to show
   more details of failed tests.

 * Code refactoring around object database sources.

 * Halve the memory consumed by artificial filepairs created during
   "git diff --find-copioes-harder", also making the operation run
   faster.

 * The "git_istream" abstraction has been revamped to make it easier
   to interface with pluggable object database design.

 * Rewrite the only use of "mktemp()" that is subject to TOCTOU race
   and Stop using the insecure "mktemp()" function.
   (merge 10bba537c4 rs/ban-mktemp later to maint).

 * In-code comment update to clarify that single-letter options are
   outside of the scope of command line completion script.
   (merge dc8a00fafe jc/completion-no-single-letter-options later to maint).

 * MEMZERO_ARRAY() helper is introduced to avoid clearing only the
   first N bytes of an N-element array whose elements are larger than
   a byte.

 * "git diff-files -R --find-copies-harder" has been taught to use
   the potential copy sources from the index correctly.

 * Require C99 style flexible array member support from all platforms.

 * The code path that enumerates promisor objects have been optimized
   to skip pointlessly parsing blob objects.


Fixes since v2.52
-----------------

 * Ever since we added whitespace rules for this project, we misspelt
   an entry, which has been corrected.
   (merge 358e94dc70 jc/gitattributes-whitespace-no-indent-fix later to maint).

 * The code to expand attribute macros has been rewritten to avoid
   recursion to avoid running out of stack space in an uncontrolled
   way.
   (merge 42ed046866 jk/attr-macroexpand-wo-recursion later to maint).

 * Adding a repository that uses a different hash function is a no-no,
   but "git submodule add" did nt prevent it, which has been corrected.
   (merge 6fe288bfbc bc/submodule-force-same-hash later to maint).

 * An earlier check added to osx keychain credential helper to avoid
   storing the credential itself supplied was overeager and rejected
   credential material supplied by other helper backends that it would
   have wanted to store, which has been corrected.
   (merge 4580bcd235 kn/osxkeychain-idempotent-store-fix later to maint).

 * The "git repo structure" subcommand tried to align its output but
   mixed up byte count and display column width, which has been
   corrected.
   (merge 7a03a10a3a jx/repo-struct-utf8width-fix later to maint).

 * Yet another corner case fix around renames in the "ort" merge
   strategy.
   (merge a562d90a35 en/ort-rename-another-fix later to maint).

 * Test leakfix.
   (merge 14b561e768 jk/test-mktemp-leakfix later to maint).

 * Update a version of action used at the GitHub Actrions CI.
   (merge cd99203f86 js/ci-github-setup-go-update later to maint).

 * The "return errno = EFOO, -1" construct, which is heavily used in
   compat/mingw.c and triggers warnings under "-Wcomma", has been
   rewritten to avoid the warnings.
   (merge af3919816f js/mingw-assign-comma-fix later to maint).

 * Makefile based build have recently been updated to build a
   libgit.a that also has reftable and xdiff objects; CMake based
   build procedure has been updated to match.
   (merge b0d5c88cca js/cmake-libgit-fix later to maint).

 * Under-allocation fix.
   (merge d22a488482 js/wincred-get-credential-alloc-fix later to maint).

 * "git worktree list" attempts to show paths to worktrees while
   aligning them, but miscounted display columns for the paths when
   non-ASCII characters were involved, which has been corrected.
   (merge 08dfa59835 pw/worktree-list-display-width-fix later to maint).

 * "Windows+meson" job at the GitHub Actions CI was hard to debug, as
   it did not show and save failed test artifacts, which has been
   corrected.
   (merge 17bd1108ea jk/ci-windows-meson-test-fix later to maint).

 * Emulation code clean-up.
   (merge 2367c6bcd6 gf/win32-pthread-cond-wait-err later to maint).

 * Various issues detected by Asan have been corrected.
   (merge a031b6181a jk/asan-bonanza later to maint).

 * "git config get --path" segfaulted on an ":(optional)path" that
   does not exist, which has been corrected.
   (merge 0bd16856ff jc/optional-path later to maint).

 * The "--committer-date-is-author-date" option of "git am/rebase" is
   a misguided one.  The documentation is updated to discourage its
   use.
   (merge fbf3d0669f kh/doc-committer-date-is-author-date later to maint).

 * The option help text given by "git config unset -h" described
   the "--all" option to "replace", not "unset", multiple variables,
   which has been corrected.
   (merge 18bf67b753 rs/config-unset-opthelp-fix later to maint).

 * The error message given by "git config set", when the variable
   being updated has more than one values defined, used old style "git
   config" syntax with an incorrect option in its hint, both of which
   have been corrected.
   (merge df963f0df4 rs/config-set-multi-error-message-fix later to maint).

 * "git replay" forgot to omit the "gpgsig-sha256" extended header
   from the resulting commit the same way it omits "gpgsig", which has
   been corrected.
   (merge 9f3a115087 pw/replay-exclude-gpgsig-fix later to maint).

 * A few tests have been updated to work under the shell compatible
   mode of zsh.
   (merge a92f243a94 bc/zsh-testsuite later to maint).

 * The way patience diff finds LCS has been optimized.
   (merge c7e3b8085b yc/xdiff-patience-optim later to maint).

 * Recent optimization to "last-modified" command introduced use of
   uninitialized block of memory, which has been corrected.
   (merge fe4e60759b tc/last-modified-active-paths-optimization later to maint).

 * "git last-modified" used to mishandle "--" to mark the beginning of
   pathspec, which has been corrected.
   (merge 05491b90ce js/last-modified-with-sparse-checkouts later to maint).

 * Emulation code clean-up.
   (merge 42aa7603aa gf/win32-pthread-cond-init later to maint).

 * "git submodule add" to add a submodule under <name> segfaulted,
   when a submodule.<name>.something is already in .gitmodules file
   without defining where its submodule.<name>.path is, which has been
   corrected.
   (merge dd8e8c786e jc/submodule-add later to maint).

 * "git fetch" that involves fetching tags, when a tag being fetched
   needs to overwrite existing one, failed to fetch other tags, which
   has been corrected.
   (merge b7b17ec8a6 kn/fix-fetch-backfill-tag-with-batched-ref-updates later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 46207a54cc qj/doc-http-bad-want-response later to maint).
   (merge df90eccd93 kh/doc-commit-extra-references later to maint).
   (merge f18aa68861 rs/xmkstemp-simplify later to maint).
   (merge fddba8f737 ja/doc-synopsis-style later to maint).
   (merge 22ce0cb639 en/xdiff-cleanup-2 later to maint).
   (merge 8ef7355a8f je/doc-pull later to maint).
   (merge 48176f953f jc/capability-leak later to maint).
   (merge 8cbbdc92f7 kh/doc-pre-commit-fix later to maint).
   (merge d4bc39a4d9 mh/doc-config-gui-gcwarning later to maint).
   (merge 41d425008a kh/doc-send-email-paragraph-fix later to maint).
   (merge d4b732899e jc/macports-darwinports later to maint).
   (merge bab391761d kj/pull-options-decl-cleanup later to maint).
   (merge 007b8994d4 rs/t4014-git-version-string-fix later to maint).
   (merge 4ce170c522 ds/doc-scalar-config later to maint).
   (merge a0c813951a jc/doc-commit-signoff-config later to maint).
   (merge 8ee262985a ja/doc-misc-fixes later to maint).
