Skip to content

Latest commit

 

History

History
171 lines (131 loc) · 7.66 KB

File metadata and controls

171 lines (131 loc) · 7.66 KB

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".

  • When git push origin/main or git branch origin main is run, the command is now recognized as a potential typo, and advice has been added to offer a typo fix.

  • The git refs toolbox has been extended with new create, delete, update, and rename subcommands to create, delete, update, and rename references, respectively.

  • The experimental git history command has been taught a new drop subcommand to remove a commit, with its descendants replayed onto its parent.

  • The alignment of commit object name abbreviations in git blame output has been optimized to reserve a column for marks (caret, question mark, or asterisk) only when such marks are actually shown.

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.

  • The lazy priority queue optimization pattern (deferring actual removal in prio_queue_get() to allow get+put fusion) has been folded directly into prio_queue itself, speeding up commit traversal workflows and simplifying callers.

  • The reprepare() callback for object database sources has been generalized into a prepare() callback with an optional flush cache flag, and a new odb_prepare() wrapper has been introduced to allow pre-opening object database sources.

  • The whence field in struct object_info has been removed. The backend-specific object information retrieval has been refactored into an opt-in struct object_info_source structure.

  • A racy build failure under Meson has been corrected by ensuring that the generated header file hook-list.h is built before compiling files in builtin_sources that depend on it.

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).

  • The GPG and SSH signature parsing code has been corrected to strip carriage return characters only when they immediately precede line feeds, instead of unconditionally stripping all carriage returns. (merge 5dea8b690b ad/gpg-strip-cr-before-lf later to maint).

  • A memory leak in the reftable_writer_new() initialization function has been fixed by delaying the allocation of struct reftable_writer until after input options are validated. (merge c6fb3b9c3e jk/reftable-leakfix later to maint).

  • A memory leak in the --base handling of git format-patch has been plugged, and the leak reporting of the test suite when running under a TAP harness has been improved. (merge 973a0373ff jk/format-patch-leakfix later to maint).

  • A write file stream resource leak has been fixed as part of a code cleanup. (merge ebb4d2ffa3 jc/history-message-prep-fix later to maint).

  • Various memory leaks in the Bloom-filter code paths that are exposed when running tests with the GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1 environment variable have been plugged. (merge 459088ec2e jk/bloom-leak-fixes later to maint).