| Git v2.48 Release Notes |
| ======================= |
| |
| UI, Workflows & Features |
| ------------------------ |
| |
| * A new configuration variable remote.<name>.serverOption makes the |
| transport layer act as if the --serverOption=<value> 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. |
| |
| * Drop support for older libcURL and Perl. |
| |
| * End-user experience of "git mergetool" when the command errors out |
| has been improved. |
| |
| * "git bundle --unbundle" and "git clone" running on a bundle file |
| both learned to trigger fsck over the new objects with configurable |
| fck check levels. |
| |
| * When "git fetch $remote" notices that refs/remotes/$remote/HEAD is |
| missing and discovers what branch the other side points with its |
| HEAD, refs/remotes/$remote/HEAD is updated to point to it. |
| |
| * "git fetch" honors "remote.<remote>.followRemoteHEAD" settings to |
| tweak the remote-tracking HEAD in "refs/remotes/<remote>/HEAD". |
| |
| * "git range-diff" learned to optionally show and compare merge |
| commits in the ranges being compared, with the --diff-merges |
| option. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| -------------------------------------------------------------- |
| |
| * Document "amlog" notes. |
| |
| * 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 more 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. Use relative paths for this linkage. |
| |
| * 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. |
| |
| * Update '.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". |
| |
| * The migration procedure between two ref backends has been optimized. |
| |
| * "git fsck" learned to issue warnings on "curiously formatted" ref |
| contents that have always been treated as valid but that Git |
| wouldn't have written itself (e.g., missing terminating end-of-line |
| after the full object name). |
| |
| * Work around Coverity warning that would not trigger in practice. |
| |
| * Built-in Git subcommands are supplied the repository object to work |
| with; they learned to do the same when they invoke sub-subcommands. |
| |
| * Drop support for ancient environments in various CI jobs. |
| |
| * Isolate the reftable subsystem from the rest of Git's codebase by |
| using fewer pieces of Git's infrastructure. |
| |
| * Optimize reading random references out of the reftable backend by |
| allowing reuse of iterator objects. |
| |
| * Backport oss-fuzz tests to our codebase. |
| |
| * Introduce a new repository extension to prevent older Git versions |
| from mis-interpreting worktrees created with relative paths. |
| |
| * Yet another "pass the repository through the callchain" topic. |
| |
| * "git describe" learned to stop digging the history needlessly |
| deeper. |
| |
| * Build procedure update plus introduction of Meson based builds. |
| |
| * Recent reftable updates mistook a NULL return from a request for |
| 0-byte allocation as OOM and died unnecessarily, which has been |
| corrected. |
| |
| * Reftable backend adds check for upper limit of log's update_index. |
| |
| * Start working to make the codebase buildable with -Wsign-compare. |
| |
| * Regression fix for 'show-index' when run outside of a repository. |
| |
| * The meson-build procedure is integrated into CI to catch and |
| prevent bitrotting. |
| |
| * "git refs migrate" learned to also migrate the reflog data across |
| backends. |
| |
| * The developer documentation has been updated to give the latest |
| info on gitk and git-gui maintainer. |
| |
| |
| * CI jobs that run threaded programs under LSan has been giving false |
| positives from time to time, which has been worked around. |
| |
| |
| Fixes since v2.47 |
| ----------------- |
| |
| * Doc update to clarify how periodical maintenance are scheduled, |
| spread across time to avoid thundering herds. |
| |
| * 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 about an event that has |
| 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=<ref>" 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 around it 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). |
| |
| * Give a bit of advice/hint message when "git maintenance" stops finding a |
| lock file left by another instance that still is potentially running. |
| (merge ba874d1dac ps/gc-stale-lock-warning later to maint). |
| |
| * Use the right helper program to measure file size in performance tests. |
| (merge 3f97f1bce6 tb/use-test-file-size-more later to maint). |
| |
| * A double-free that may not trigger in practice by luck has been |
| corrected in the reference resolution code. |
| (merge b6318cf23a sj/refs-symref-referent-fix later to maint). |
| |
| * The sequencer failed to honor core.commentString in some places. |
| |
| * Describe a case where an option value needs to be spelled as a |
| separate argument, i.e. "--opt val", not "--opt=val". |
| (merge 1bc1e94091 jc/doc-opt-tilde-expand later to maint). |
| |
| * Loosen overly strict ownership check introduced in the recent past, |
| to keep the promise "cloning a suspicious repository is a safe |
| first step to inspect it". |
| (merge 0ffb5a6bf1 bc/allow-upload-pack-from-other-people later to maint). |
| |
| * "git fast-import" learned to reject paths with ".." and "." as |
| their components to avoid creating invalid tree objects. |
| (merge 8cb4c6e62f en/fast-import-verify-path later to maint). |
| |
| * The --ancestry-path option is designed to be given a commit that is |
| on the path, which was not documented, which has been corrected. |
| (merge bc1a980759 kk/doc-ancestry-path later to maint). |
| |
| * "git tag" has been taught to refuse to create refs/tags/HEAD |
| since such a tag will be confusing in the context of the UI provided by |
| the Git Porcelain commands. |
| (merge bbd445d5ef jc/forbid-head-as-tagname later to maint). |
| |
| * The advice messages now tell the newer 'git config set' command to |
| set the advice.token configuration variable to squelch a message. |
| (merge 6c397d0104 bf/explicit-config-set-in-advice-messages later to maint). |
| |
| * The syntax ":/<text>" to name the latest commit with the matching |
| text was broken with a recent change, which has been corrected. |
| (merge 0ff919e87a ps/commit-with-message-syntax-fix later to maint). |
| |
| * Fix performance regression of a recent "fatten promisor pack with |
| local objects" protection against an unwanted gc. |
| |
| * "git log -p --remerge-diff --reverse" was completely broken. |
| (merge f94bfa1516 js/log-remerge-keep-ancestry later to maint). |
| |
| * "git bundle create" with an annotated tag on the positive end of |
| the revision range had a workaround code for older limitation in |
| the revision walker, which has become unnecessary. |
| (merge dd1072dfa8 tc/bundle-with-tag-remove-workaround later to maint). |
| |
| * GitLab CI updates. |
| (merge c6b43f663e ps/ci-gitlab-update later to maint). |
| |
| * Code to reuse objects based on bitmap contents have been tightened |
| to avoid race condition even when multiple packs are involved. |
| (merge 62b3ec8a3f tb/bitmap-fix-pack-reuse later to maint). |
| |
| * An earlier "csum-file checksum does not have to be computed with |
| sha1dc" topic had a few code paths that had initialized an |
| implementation of a hash function to be used by an unmatching hash |
| by mistake, which have been corrected. |
| (merge 599a63409b ps/weak-sha1-for-tail-sum-fix later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge 77af53f56f aa/t7300-modernize later to maint). |
| (merge dcd590a39d bf/t-readme-mention-reftable later to maint). |
| (merge 68e3c69efa kh/trailer-in-glossary later to maint). |
| (merge 91f88f76e6 tb/boundary-traversal-fix later to maint). |
| (merge 168ebb7159 jc/doc-error-message-guidelines later to maint). |
| (merge 18693d7d65 kh/doc-bundle-typofix later to maint). |
| (merge e2f5d3b491 kh/doc-update-ref-grammofix later to maint). |
| (merge 8525e92886 mh/doc-windows-home-env later to maint). |