Git v2.52 Release Notes
=======================

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

 * The "list" subcommand of "git refs" acts as a front-end for
   "git for-each-ref".

 * "git cmd --help-all" now works outside repositories.

 * "git diff-tree" learned "--max-depth" option.

 * A new subcommand "git repo" gives users a way to grab various
   repository characteristics.


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

 * string_list_split*() family of functions have been extended to
   simplify common use cases.

 * Arrays of strbuf is often a wrong data structure to use, and
   strbuf_split*() family of functions that create them often have
   better alternatives.  Update several code paths and replace
   strbuf_split*().

 * Revision traversal limited with pathspec, like "git log dir/*",
   used to ignore changed-paths Bloom filter when the pathspec
   contained wildcards; now they take advantage of the filter when
   they can.

 * Doc lint updates to encourage the newer and easier-to-use
   `synopsis` format, with fixes to a handful of existing uses.

 * Remove dependency on the_repository and other globals from the
   commit-graph code, and other changes unrelated to de-globaling.


Fixes since v2.51
-----------------

Unless otherwise noted, all the changes in 2.51.X maintenance track,
including security updates, are included in this release.

 * During interactive rebase, using 'drop' on a merge commit lead to
   an error, which was incorrect.
   (merge 4d491ade8f js/rebase-i-allow-drop-on-a-merge later to maint).

 * "git refs migrate" to migrate the reflog entries from a refs
   backend to another had a handful of bugs squashed.
   (merge 465eff81de ps/reflog-migrate-fixes later to maint).

 * "git remote rename origin upstream" failed to move origin/HEAD to
   upstream/HEAD when origin/HEAD is unborn and performed other
   renames extremely inefficiently, which has been corrected.
   (merge 16c4fa26b9 ps/remote-rename-fix later to maint).

 * "git describe" has been optimized by using better data structure.
   (merge 08bb69d70f rs/describe-with-prio-queue later to maint).

 * "git push" had a code path that led to BUG() but it should have
   been a die(), as it is a response to a usual but invalid end-user
   action to attempt pushing an object that does not exist.
   (merge dfbfc2221b dl/push-missing-object-error later to maint).

 * Various bugs about rename handling in "ort" merge strategy have
   been fixed.
   (merge f6ecb603ff en/ort-rename-fixes later to maint).

 * "git jump" (in contrib/) fails to parse the diff header correctly
   when a file has a space in its name, which has been corrected.
   (merge 621ce9c1c6 gh/git-jump-pathname-with-sp later to maint).

 * "git diff --no-index" run inside a subdirectory under control of a
   Git repository operated at the top of the working tree and stripped
   the prefix from the output, and oddballs like "-" (stdin) did not
   work correctly because of it.  Correct the set-up by undoing what
   the set-up sequence did to cwd and prefix.
   (merge e1d3d61a45 jc/diff-no-index-in-subdir later to maint).

 * Various options to "git diff" that makes comparison ignore certain
   aspects of the differences (like "space changes are ignored",
   "differences in lines that match these regular expressions are
   ignored") did not work well with "--name-only" and friends.
   (merge b55e6d36eb ly/diff-name-only-with-diff-from-content later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 823d537fa7 kh/doc-git-log-markup-fix later to maint).
   (merge cf7efa4f33 rj/t6137-cygwin-fix later to maint).
   (merge 529a60a885 ua/t1517-short-help-tests later to maint).
   (merge 22d421fed9 ac/deglobal-fmt-merge-log-config later to maint).
   (merge 741f36c7d9 kr/clone-synopsis-fix later to maint).
   (merge a60203a015 dk/t7005-editor-updates later to maint).
   (merge 7d4a5fef7d ds/doc-count-objects-fix later to maint).
