Git v2.56 Release Notes
=======================

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

 * Advice shown by "git status" when the local branch is behind or has
   diverged from its push branch has been updated to suggest "git pull
   <remote> <branch>".

 * The handling of promisor-remote protocol capability has been updated
   to allow the other side to add to the list of promisor remotes via the
   'promisor.acceptFromServerURL' configuration variable.

 * The 'ort' merge backend has been hardened against corrupt trees by
   ensuring it aborts under appropriate error conditions.

 * The `fetch.followRemoteHEAD` configuration variable has been added to
   provide a default for the per-remote `remote.<name>.followRemoteHEAD`
   setting.

 * "git log --follow" has been updated to better handle non-linear
   history, in which the path being tracked gets renamed differently in
   multiple history lines.

 * The "git repo info" command has been taught new keys to output both
   absolute and relative paths for "gitdir" and "commondir", supported by
   a new path-formatting helper extracted from "git rev-parse".


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

 * The refactoring of 'setup.c' has been continued to drop remaining
   global state (`git_work_tree_cfg`, `is_bare_repository_cfg`), updating
   `is_bare_repository()` to no longer implicitly rely on
   `the_repository`.

 * Project-specific configuration for b4 has been introduced, and the
   documentation has been updated to recommend using it as a
   streamlined method for submitting patches.

 * The default format path of git cat-file --batch has been optimized
   to use strbuf_add_oid_hex() and strbuf_add_uint() instead of
   strbuf_addf(), yielding a noticeable speedup.

 * Commands that list branches and tags (like git branch and git tag)
   have been optimized to pass the namespace prefix when initializing
   their ref iterator, avoiding a loose-ref scaling regression in
   repositories with many unrelated loose references.

 * The packed object source has been refactored into a proper struct
   odb_source.

 * The global configuration variables protect_hfs and protect_ntfs have
   been migrated into struct repo_config_values to tie them to
   per-repository configuration state.

 * The trailer sections in SubmittingPatches have been updated to
   encourage use of standard trailers.

 * The documentation in SubmittingPatches has been updated to clarify how
   patch contributors should respond to design and viability critiques,
   and how the resolution of such critiques should be recorded in the
   final commit messages.

 * The pack-objects command has been updated to support reachability
   bitmaps and delta-islands concurrently with the `--path-walk` option,
   allowing faster packaging by falling back to path-walk when bitmaps
   cannot fully satisfy the request.

 * Documentation on community contribution guidelines has been updated to
   encourage replying to review comments before rerolling, and to advise
   a default limit of at most one reroll per day to give reviewers across
   different time zones enough time to participate.


Fixes since v2.55
-----------------

 * A regression in the error diagnosis code for invalid .git files has
   been fixed, avoiding a potential NULL-pointer crash when reporting
   that a .git file does not point to a valid repository.
   (merge 54a441bcea jk/setup-gitfile-diag-fix later to maint).

 * Support for hashing loose or packed objects larger than 4GB on Windows
   and other LLP64 platforms has been improved by converting object header
   buffers and data-handling functions from 'unsigned long' to 'size_t'.
   (merge d99e13d0be po/hash-object-size-t later to maint).

 * The display of the rebase todo list in "git status" has been
   improved to correctly abbreviate object IDs for more commands and
   avoid misinterpreting refs as object IDs.
   (merge 6f34e5f9e3 pw/status-rebase-todo later to maint).

 * Reference backend configuration has been updated to load lazily to
   avoid recursive calls during repository initialization when 'onbranch'
   configuration conditions are evaluated. This has also fixed a memory
   leak and allowed the unused `chdir_notify_reparent()` machinery to be
   dropped.
   (merge d6522d01df ps/refs-onbranch-fixes later to maint).

 * The connectivity check has been refactored to search for promisor
   objects in a generic way using the object database interface,
   rather than iterating packfiles directly. This allows connectivity
   checks to work properly in repositories that do not use packfiles.
   (merge 66ee9cb930 ps/connected-generic-promisor-checks later to maint).

 * A test checking interactions between git rebase --quit and
   autostash in t3420-rebase-autostash.sh has been corrected to use
   test_path_is_missing instead of ! grep on a file that shouldn't
   exist in the conflicted state.
   (merge eaad121fef sg/t3420-do-not-grep-in-missing-file later to maint).
