Git v2.48 Release Notes ======================= UI, Workflows & Features ------------------------ * A new configuration variable remote..serverOption makes the transport layer act as if the --serverOption= option is given from the command line. * "git rebase --rebase-merges" now uses branch names as labels when able. * Describe the policy to introduce breaking changes. * Teach 'git notes add' and 'git notes append' a new '-e' flag, instructing them to open the note in $GIT_EDITOR before saving. * Documentation for "git bundle" saw improvements to more prominently call out the use of '--all' when creating bundles. Performance, Internal Implementation, Development Support etc. -------------------------------------------------------------- * Document "amlog" notes. (merge ddfb5bcfc6 tb/notes-amlog-doc later to maint). * The way AsciiDoc is used for SYNOPSIS part of the manual pages has been revamped. The sources, at least for the simple cases, got vastly pleasant to work with. * The reftable library is now prepared to expect that the memory allocation function given to it may fail to allocate and to deal with such an error. * An extra worktree attached to a repository points at each other to allow finding the repository from the worktree and vice versa possible. Turn this linkage to relative paths. * Enable Windows-based CI in GitLab. * Commands that can also work outside Git have learned to take the repository instance "repo" when we know we are in a repository, and NULL when we are not, in a parameter. The uses of the_repository variable in a few of them have been removed using the new calling convention. * The reftable sub-system grew a new reftable-specific strbuf replacement to reduce its dependency on Git-specific data structures. * The ref-filter machinery learns to recognize and avoid cases where sorting would be redundant. * Various platform compatibility fixes split out of the larger effort to use Meson as the primary build tool. * Treat ECONNABORTED the same as ECONNRESET in 'git credential-cache' to work around a possible Cygwin regression. This resolves a race condition caused by changes in Cygwin's handling of socket closures, allowing the client to exit cleanly when encountering ECONNABORTED. * Demonstrate an assertion failure in 'git mv'. * Documentation update to clarify that 'uploadpack.allowAnySHA1InWant' implies both 'allowTipSHA1InWant' and 'allowReachableSHA1InWant'. * Replace various calls to atoi() with strtol_i() and strtoul_ui(), and add improved error handling. * Documentation updates to 'git-update-ref(1)'. * Update the project's CodingGuidelines to discourage naming functions with a "_1()" suffix. * Updates the '.clang-format' to match project conventions. * Centralize documentation for repository extensions into a single place. * Buildfix and upgrade of Clar to a newer version. * Documentation mark-up updates. * Renaming a handful of variables and structure fields. * Fix for clar unit tests to support CMake build. * C23 compatibility updates. * GCC 15 compatibility updates. * We now ensure "index-pack" is used with the "--promisor" option only during a "git fetch". Fixes since v2.47 ----------------- * Doc update to clarify how periodical maintenance are scheduled, spread across time to avoid thundering hurds. (merge 3d6ab4177d sk/doc-maintenance-schedule later to maint). * Use after free and double freeing at the end in "git log -L... -p" had been identified and fixed. * On macOS, fsmonitor can fall into a race condition that results in a client waiting forever to be notified for an event that have already happened. This problem has been corrected. * "git maintenance start" crashed due to an uninitialized variable reference, which has been corrected. * Fail gracefully instead of crashing when attempting to write the contents of a corrupt in-core index as a tree object. * A "git fetch" from the superproject going down to a submodule used a wrong remote when the default remote names are set differently between them. * Fixes compile time warnings with 64-bit MSVC. * Teaches 'shortlog' to explicitly use SHA-1 when operating outside of a repository. * Fix 'git grep' regression on macOS by disabling lookahead when encountering invalid UTF-8 byte sequences. * The dumb-http code regressed when the result of re-indexing a pack yielded an *.idx file that differs in content from the *.idx file it downloaded from the remote. This has been corrected by no longer relying on: the *.idx file we got from the remote. * When called with '--left-right' and '--use-bitmap-index', 'rev-list' will produce output without any left/right markers, which has been corrected. * More leakfixes. * Test modernization. * The "--shallow-exclude=" option to various history transfer commands takes a ref, not an arbitrary revision. * A regression where commit objects missing from a commit-graph can cause an infinite loop when doing a fetch in a partial clone has been fixed. * The MinGW compatibility layer has been taught to support POSIX semantics for atomic renames when other process(es) have a file opened at the destination path. * "git gc" discards any objects that are outside promisor packs that are referred to by an object in a promisor pack, and we do not refetch them from the promisor at runtime, resulting an unusable repository. Work it around by including these objects in the referring promisor pack at the receiving end of the fetch. * Avoid build/test breakage on a system without working malloc debug support dynamic library. (merge 72ad6dc368 jk/test-malloc-debug-check later to maint). * Double-free fix. (merge fe17a25905 jk/fetch-prefetch-double-free-fix later to maint). * Use of some uninitialized variables in "git difftool" has been corrected. * Object reuse code based on multi-pack-index sent an unwanted copy of object. (merge e199290592 tb/multi-pack-reuse-dupfix later to maint). * "git fast-import" can be tricked into a replace ref that maps an object to itself, which is a useless thing to do. (merge 5e904f1a4a en/fast-import-avoid-self-replace later to maint). * The ref-transaction hook triggered for reflog updates, which has been corrected. (merge b886db48c6 kn/ref-transaction-hook-with-reflog later to maint). * Other code cleanup, docfix, build fix, etc. (merge 1164e270b5 jk/output-prefix-cleanup later to maint). (merge f36b8cbaef jh/config-unset-doc-fix later to maint). (merge 4154ed4108 js/doc-platform-support-link-fix later to maint). (merge 77af53f56f aa/t7300-modernize later to maint). (merge 8ead1bba3e jc/doc-refspec-syntax later to maint). (merge 432f666aa6 kn/loose-object-layer-wo-global-hash later to maint). (merge c4b8fb6ef2 kh/merge-tree-doc later to maint). (merge b8139c8f4e kh/checkout-ignore-other-docfix later to maint). (merge 6dab49b9fb tc/bundle-uri-leakfix later to maint). (merge f1ed39987b xx/protocol-v2-doc-markup-fix later to maint). (merge 41869f7447 ak/typofixes later to maint). (merge dcd590a39d bf/t-readme-mention-reftable later to maint). (merge 68e3c69efa kh/trailer-in-glossary later to maint).