mirror of
https://github.com/git/git.git
synced 2026-08-09 17:40:16 +00:00
538 lines
26 KiB
Plaintext
538 lines
26 KiB
Plaintext
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.
|
|
|
|
* Option parsing with 'git rev-parse --parseopt' and in most 'git'
|
|
subcommands has been updated to exit with 0 (instead of 129) when the
|
|
help option ('-h' or '--help') is requested directly by the user,
|
|
aligning with standard Unix convention.
|
|
|
|
* The '[includeIf "condition"]' conditional inclusion facility for
|
|
configuration files has been taught to use the location of the
|
|
worktree in its condition.
|
|
|
|
* The usage string and SYNOPSIS for 'git fast-export' have been
|
|
standardized to make them consistent with each other and with other
|
|
commands.
|
|
|
|
* 'git log --graph' has been modified to visually distinguish parentless
|
|
'root' commits (and commits that become roots due to history
|
|
simplification) by indenting them, preventing them from appearing
|
|
falsely related to unrelated commits rendered immediately above them.
|
|
|
|
* Userdiff patterns for Swift have been added, with support for
|
|
Swift-specific constructs such as attributes, modifiers, failable
|
|
initializers, and generics.
|
|
|
|
* Configuration file locking has been updated to retry for a short
|
|
period, avoiding failures when multiple processes attempt to update
|
|
the configuration simultaneously.
|
|
|
|
* The 'remote-object-info' command has been added to 'git cat-file
|
|
--batch-command', allowing clients to request object metadata
|
|
(currently size) from a remote server via protocol v2 without
|
|
downloading the entire object. Format placeholders are dynamically
|
|
filtered on the client based on server-advertised capabilities,
|
|
returning empty strings for inapplicable or unsupported fields.
|
|
|
|
* 'git branch -d' has been taught to report when a branch cannot be
|
|
deleted because it is being used in an active bisect run.
|
|
|
|
|
|
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.
|
|
|
|
* The repository discovery and repository configuration phases, which
|
|
were previously intertwined in 'setup.c', have been split. Repository
|
|
discovery has been updated to populate a 'struct repo_discovery'
|
|
without modifying the repository state, which is then taken by
|
|
repository configuration to initialize the repository, paving the way
|
|
for clean unification of repository configuration.
|
|
|
|
* The 'SubmittingPatches' document has been updated to explicitly
|
|
describe the expectation for contributors to retract or abandon their
|
|
patch series when they are no longer pursuing it.
|
|
|
|
* The contributor guide has been updated to advise new contributors to
|
|
trim irrelevant quoted text when replying to review comments, matching
|
|
the existing advice given to reviewers.
|
|
|
|
* The build system has been updated to support building universal macOS
|
|
binaries when 'Rust' is enabled, by compiling separate static archives
|
|
for each target triple listed in 'RUST_TARGETS' and combining them
|
|
using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
|
|
has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.
|
|
|
|
* The test suite has been updated to use the 'test_grep' helper instead
|
|
of bare 'grep' for test assertions, allowing file contents to be
|
|
printed on failure for easier debugging. A new 'greplint' linter has
|
|
been introduced to detect and prevent new bare 'grep' assertions from
|
|
being added to the test suite.
|
|
|
|
* The pipelines in 't1410-reflog.sh' have been replaced with the
|
|
'test_stdout_line_count' helper to avoid suppressing the exit code of
|
|
'git' commands, ensuring failures are not hidden from the test suite.
|
|
|
|
* The cache-scanning loop in 'next_cache_entry()' has been optimized
|
|
to avoid rescanning already-unpacked index entries, preventing a
|
|
quadratic performance slow-down when diffing the working tree
|
|
against a commit with a pathspec matching early index entries.
|
|
|
|
* The global configuration variable 'ignore_case' (representing the
|
|
'core.ignorecase' configuration) has been migrated into 'struct
|
|
repo_config_values' to tie it to a specific repository instance.
|
|
|
|
* The performance of ref updates and reads using the 'reftable' backend
|
|
in the presence of many deletion tombstone records has been optimized
|
|
by removing the tombstone suppression flag from the merged iterator
|
|
and instead skipping tombstones at higher-level call sites where
|
|
iteration bounds are known.
|
|
|
|
* Various code paths have been hardened against potential NULL-pointer
|
|
dereferences and invalid file descriptor accesses flagged by
|
|
Coverity.
|
|
|
|
* The in-tree 'b4' cover letter template has been updated to include the
|
|
'change-id' trailer, ensuring that sent tags generated by 'b4' contain
|
|
the required tracking information for subsequent runs.
|
|
|
|
* 'git receive-pack' has been refactored to use ODB transaction
|
|
interfaces instead of directly managing 'tmp_objdir' for staging
|
|
incoming objects, bringing it closer to being ODB backend agnostic.
|
|
|
|
* The test script 't/t9811-git-p4-label-import.sh' has been
|
|
modernized to use 'test_path_is_file' and 'test_path_is_missing'
|
|
instead of raw 'test -f' and '! test -f' calls.
|
|
|
|
* A redundant strbuf_reset() call in the 'HAVE_GETDELIM' path of
|
|
strbuf_getwholeline() has been removed, as getdelim() overwrites the
|
|
buffer and the length is updated afterward.
|
|
|
|
* The object database enumeration interface odb_for_each_object() has
|
|
been taught to accept object filters, allowing the underlying backends
|
|
to optimize the traversal by using reachability bitmaps when
|
|
available. 'git cat-file --batch-all-objects' has been updated to use
|
|
this generic interface, simplifying its code and avoiding direct
|
|
access to ODB backend internals.
|
|
|
|
* The test script 't/t1100-commit-tree-options.sh' has been modernized
|
|
by converting test cases to the modern style (using single quotes and
|
|
tab indentation) and moving the creation of the expected file inside
|
|
the setup test so it runs under the protection of the test harness.
|
|
|
|
* The test script 't/t7614-merge-signoff.sh' has been updated to avoid
|
|
suppressing the exit code of 'git' commands in a pipe.
|
|
|
|
* The 'git rev-list --no-walk' command has been corrected to restore
|
|
pathspec filtering, which was lost when the streaming walk was
|
|
refactored.
|
|
|
|
* The ref subsystem and the worktree API have been refactored to pass a
|
|
repository pointer down the call chain, allowing them to drop
|
|
references to the global 'the_repository' variable. As part of this,
|
|
the handling of the 'core.packedRefsTimeout' configuration has been
|
|
moved into the per-repository ref store structure.
|
|
|
|
* 'git branch --contains' and 'git for-each-ref --contains' have been
|
|
optimized to use the memoized commit traversal previously used only by
|
|
'git tag --contains', significantly speeding up connectivity checks
|
|
across many candidate refs with shared history.
|
|
|
|
* The passing of push destination specifications in the 'remote-curl'
|
|
helper has been simplified by removing the explicit 'count' parameter
|
|
and relying on the NULL-termination of the array.
|
|
|
|
* The dependency on the global 'the_repository' variable in the
|
|
'refspec.c' API has been removed by passing the hash algorithm
|
|
explicitly to refspec-parsing functions and storing it in 'struct
|
|
refspec'.
|
|
|
|
* The enumeration of untracked and ignored files in 'git status' has
|
|
been optimized by avoiding quadratic complexity when inserting into
|
|
string lists, reducing the construction cost from O(n^2) to O(n log
|
|
n).
|
|
|
|
* The copy_file() and copy_file_with_time() functions have been
|
|
refactored to take a repository parameter, allowing the removal of the
|
|
implicit dependency on the global 'the_repository' variable in
|
|
'copy.c'.
|
|
|
|
* The tempfile and lockfile APIs have been refactored to stop depending
|
|
on the 'the_repository' global variable, and their callers have been
|
|
updated to use the repository-aware variants.
|
|
|
|
* The 'trust_executable_bit' (coming from the 'core.filemode'
|
|
configuration) has been migrated into 'struct repo_config_values' to
|
|
tie it to a specific repository instance.
|
|
|
|
* The 'excludes_file' and various other global configuration variables
|
|
(including 'editor_program', 'pager_program', 'askpass_program', and
|
|
'push_default') have been migrated into the per-repository structure.
|
|
|
|
* The 'git stash push' command has been optimized to avoid unnecessary
|
|
sparse index expansion when pathspecs are wholly inside the
|
|
sparse-checkout cone. Also, a potential out-of-bounds read in the
|
|
sparse-index expansion check helper pathspec_needs_expanded_index()
|
|
has been fixed by consistently using the parsed, prefixed path.
|
|
|
|
* The logic to write loose objects has been refactored and moved from
|
|
'object-file.c' to the loose backend source file 'odb/source-loose.c',
|
|
making the loose backend more self-contained. This is achieved by
|
|
first refactoring force_object_loose() to use generic ODB write
|
|
interfaces instead of loose-backend internals.
|
|
|
|
* Object database housekeeping in 'git gc' and 'git maintenance' has
|
|
been refactored to be pluggable. The files-backend-specific logic,
|
|
including incremental and geometric repacking as well as object
|
|
pruning, has been moved out of the command implementation and into the
|
|
files object database source, enabling future alternative object
|
|
database backends to implement their own housekeeping services.
|
|
|
|
* The image version used by the static-analysis CI job has been bumped
|
|
to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
|
|
version that resolves a severe performance regression. A false
|
|
positive warning from the 'CHECK_ASSERTION_SIDE_EFFECTS' build with
|
|
GCC 15 in the Bloom filter code has also been silenced to facilitate
|
|
the image upgrade.
|
|
(merge 1a1579c42d jk/ci-static-analysis-image-bump later to maint).
|
|
|
|
* The alias tests in 't/t0014-alias.sh' have been updated to dynamically
|
|
query the list of deprecated commands using 'git
|
|
--list-cmds=deprecated' to avoid test failures when running with
|
|
'WITH_BREAKING_CHANGES' in a build directory that contains stale
|
|
executables of formerly deprecated commands.
|
|
(merge bc57ecb915 jk/t0014-dynamic-deprecated-cmds later to maint).
|
|
|
|
* The code path that deals with relative paths in the diff-lib has
|
|
been cleaned up.
|
|
|
|
* The get_commit_action() function has been refactored to be a pure
|
|
predicate by moving the side-effecting line-level log range folding to
|
|
simplify_commit(). This ensures that evaluating a commit's action
|
|
before the walk reaches it does not prematurely mutate its tracked
|
|
line ranges, making it safer for potential lookahead evaluations.
|
|
|
|
|
|
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).
|
|
|
|
* The wincred credential helper has been updated to avoid memory
|
|
corruption when erasing credentials and to prevent silent
|
|
credential loss when storing OAuth tokens, by correcting buffer
|
|
allocations and arguments passed to safe-CRT APIs.
|
|
(merge f635ab9ab4 js/wincred-fixes later to maint).
|
|
|
|
* Various code paths that initialize a cryptographic hash context but
|
|
bail out or finish without calling 'git_hash_final()' have been taught
|
|
to call 'git_hash_discard()' to release allocated resources, fixing
|
|
memory leaks when Git is built with non-default backends like
|
|
'OpenSSL' or 'libgcrypt'.
|
|
(merge 600588d2aa jk/hash-algo-leak-fixes later to maint).
|
|
|
|
* Various resource leaks, invalid file descriptor closures, and process
|
|
handle ownership issues flagged by Coverity have been fixed.
|
|
(merge 9184231173 js/coverity-fixes later to maint).
|
|
|
|
* Dockerized CI jobs running in private GitHub repositories have been
|
|
adjusted to use explicit process and file limits, preventing resource
|
|
exhaustion errors on private runners.
|
|
(merge bad766fbac js/ci-dockerized-pid-limit later to maint).
|
|
|
|
* Various test scripts have been updated to clean up large temporary
|
|
files and repositories, reducing peak disk usage during testing.
|
|
Also, expensive tests have been disabled on platforms that lack
|
|
sufficient resources (like 32-bit platforms and Windows CI runners),
|
|
and the long test suite has been enabled in GitLab CI.
|
|
(merge 84248444ad ps/t-fixes-for-git-test-long later to maint).
|
|
|
|
* The UTF-8 precomposition wrapper on macOS has been updated to use a
|
|
flexible array member to represent the name of a directory entry,
|
|
preventing fortified libc checks from failing when the name is
|
|
reallocated to be larger than 'NAME_MAX' bytes.
|
|
(merge 1eb281159f ih/precompose-flex-array later to maint).
|
|
|
|
* The 'git_hash_*()' wrappers have been updated to be used consistently
|
|
across the codebase instead of direct calls to members of 'struct
|
|
git_hash_algo', and 'git_hash_discard()' has been made idempotent to
|
|
simplify cleanups.
|
|
(merge 9e396aa553 jk/git-hash-cleanups later to maint).
|
|
|
|
* The sideband demultiplexer has been updated to recognize ANSI SGR
|
|
escape sequences that use colon-separated subfields (e.g., for
|
|
256-color or true-color codes).
|
|
(merge 3792b2aea4 mm/sideband-ansi-sgr-colon-fix later to maint).
|
|
|
|
* The 'reftable' code has been hardened against corrupted tables by
|
|
fixing out-of-bounds writes, out-of-bounds reads, and abort calls
|
|
during parsing.
|
|
(merge ca93c27328 ps/reftable-hardening later to maint).
|
|
|
|
* A description in the release notes for Git 2.55.0 has been
|
|
retroactively updated to clarify that Rust support is enabled by
|
|
default, but still optional, and will become mandatory in Git 3.0.
|
|
(merge 18b2009d14 jc/relnotes-2.55-rust-fix later to maint).
|
|
|
|
* The early-exit optimization in 'paint_down_to_common()' has been
|
|
gated on the queue being generation-ordered, fixing a bug where
|
|
'git merge-base' (without '--all') could return incorrect results
|
|
on repositories with v1 commit graphs and clock skew.
|
|
(merge ae68032a8d kk/commit-reach-find-all-fix later to maint).
|
|
|
|
* The client-side parser of the server-advertised bundle-URI list has
|
|
been updated to drain the remaining response in order to avoid
|
|
protocol desynchronization when the server sends a misconfigured list.
|
|
Also, the server-side has been taught to omit empty configuration
|
|
values instead of sending invalid key-value lines.
|
|
(merge 50de1169e4 tc/bundle-uri-empty-fix later to maint).
|
|
|
|
* The 'topo_levels' slab was propagated only to the topmost layer of a
|
|
split commit-graph chain, causing topological levels for commits in
|
|
base layers to be recomputed during incremental writes. This has been
|
|
corrected.
|
|
|
|
* The stream-based object signature verification path has been
|
|
corrected to avoid double-closing the stream on read errors.
|
|
(merge cfd52a74a0 ps/odb-stream-double-close-fix later to maint).
|
|
|
|
* The '-i' shorthand for the '--init' option, which was accepted by the
|
|
'git submodule update' command until it was broken in a modernization
|
|
of the option-parsing code, has been restored.
|
|
(merge ff1da37f58 dm/submodule-update-i-shorthand later to maint).
|
|
|
|
* An accidental use of the '%zu' format specifier in 'git
|
|
submodule--helper' has been corrected to use 'PRIuMAX' and cast the
|
|
value to 'uintmax_t' to avoid portability issues.
|
|
(merge 3279c13c00 jc/submodule-helper-avoid-zu later to maint).
|
|
|
|
* The rebase post-rewrite notes-copying logic has been corrected. When
|
|
a commit is dropped during rebase (e.g., because its changes are
|
|
already upstream), it is no longer recorded as rewritten, preventing
|
|
its notes from being copied to an unrelated commit.
|
|
(merge 42554b78fd pw/rebase-drop-notes-with-commit later to maint).
|
|
|
|
* A few memory problems in the Rust interface to C hash functions have
|
|
been corrected. The 'Clone' implementation of 'CryptoHasher' now
|
|
properly initializes the context before cloning, and its 'Drop'
|
|
implementation now discards the context to prevent leaks.
|
|
|
|
* The object ID shortening and linking in the 'commitdiff' view of
|
|
'gitweb' has been corrected to work even when the index line carries
|
|
a trailing file mode.
|
|
(merge fda513d6fe tl/gitweb-shorten-hashes-with-modes later to maint).
|
|
|
|
* When the push remote is specified as a URL, the fetch refspec of a
|
|
uniquely matching configured remote is now used to find and update
|
|
the remote-tracking branch (e.g., '@{push}').
|
|
|
|
* Traversals with '--exclude-first-parent-only' have been corrected
|
|
to properly stop after the first parent even when it has already
|
|
been marked as 'SEEN'.
|
|
(merge 47382f7398 jc/exclude-first-parent-seen later to maint).
|
|
|
|
* A segfault when 'git clone --revision' talks to a server that does not
|
|
support protocol v2 (falling back to protocol v0) has been corrected.
|
|
(merge 1034ad383f af/clone-revision-v0-segfault-fix later to maint).
|
|
|
|
* rewrites_release() in 'remote.c' has been updated to free 'struct
|
|
rewrite' instances, their '.instead_of' arrays, and their contents.
|
|
(merge dcef3bf041 jc/remote-insteadof-leakfix later to maint).
|
|
|
|
* The remote-matching logic for submodules has been corrected to resolve
|
|
'url.*.insteadOf' aliases before comparing the inventoried URL from
|
|
'.gitmodules' with the URLs of configured remotes.
|
|
|
|
* 'git diff --relative' running with '--cached' has been corrected to
|
|
avoid a segfault when encountering unmerged paths outside the
|
|
prefix.
|
|
(merge 447126ed7d jk/diff-relative-cached-unmerged later to maint).
|
|
|
|
* Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
|
|
commands have been fixed. One bug caused an incorrect commit count to
|
|
be shown in the template message when multiple commands were skipped,
|
|
and another prevented the editor from opening when the final command
|
|
in a chain containing 'fixup -c' was skipped.
|
|
|
|
* Git for Windows has been updated to avoid auto-detecting the symlink
|
|
type if the target path starts with a slash, preventing NTLM
|
|
credential leaks when checking out repositories with crafted
|
|
symbolic links pointing to network shares.
|
|
|
|
* 'git cat-file --batch-command' that asked for 'contents' without
|
|
'type' segfaults, which has been corrected.
|
|
(merge 2abc7f0304 jk/cat-file-batch-wo-type-fix later to maint).
|
|
|
|
* A memory leak in 'git merge' when run without arguments (which
|
|
triggers the default-to-upstream path) has been fixed. A test has
|
|
been added to cover this case.
|
|
(merge 68cce04a02 tc/merge-default-to-upstream-leakfix later to maint).
|
|
|
|
* A boundary case check in reachability bitmap traversal has been
|
|
corrected to properly handle the object at position zero, which was
|
|
previously skipped, leading to redundant bitmap loading.
|
|
(merge b56b48301e dl/pack-bitmap-position-zero later to maint).
|
|
|
|
* A crash in the 'sparse-index' collapse code when encountering an
|
|
invalidated cache-tree node (due to an intent-to-add path) has been
|
|
fixed by avoiding collapsing such subtrees.
|
|
(merge eede1e69fe ds/sparse-index-ita-crash later to maint).
|