286 lines
12 KiB
Plaintext
286 lines
12 KiB
Plaintext
Git v2.43 Release Notes
|
|
=======================
|
|
|
|
Backward Compatibility Notes
|
|
|
|
* The "--rfc" option of "git format-patch" used to be a valid way to
|
|
override an earlier "--subject-prefix=<something>" on the command
|
|
line and replace it with "[RFC PATCH]", but from this release, it
|
|
merely prefixes the string "RFC " in front of the given subject
|
|
prefix. If you are negatively affected by this change, please use
|
|
"--subject-prefix=PATCH --rfc" as a replacement.
|
|
|
|
* "git rev-list --stdin" learned to take non-revisions (like "--not")
|
|
recently from the standard input, but the way such a "--not" was
|
|
handled was quite confusing, which has been rethought. The updated
|
|
rule is that "--not" given from the command line only affects revs
|
|
given from the command line that comes but not revs read from the
|
|
standard input, and "--not" read from the standard input affects
|
|
revs given from the stanrdard input and not revs given from the
|
|
command line.
|
|
|
|
UI, Workflows & Features
|
|
|
|
* A message written in olden time prevented a branch from getting
|
|
checked out saying it is already checked out elsewhere, but these
|
|
days, we treat a branch that is being bisected or rebased just like
|
|
a branch that is checked out and protect it. Rephrase the message
|
|
to say that the branch is in use.
|
|
|
|
* Hourly and other schedule of "git maintenance" jobs are randomly
|
|
distributed now.
|
|
|
|
* "git cmd -h" learned to signal which options can be negated by
|
|
listing such options like "--[no-]opt".
|
|
|
|
* The way authentication related data other than passwords (e.g.
|
|
oath token and password expiration data) are stored in libsecret
|
|
keyrings has been rethought.
|
|
|
|
* Update two credential helpers to correctly match which credential
|
|
to erase; they dropped not the ones with stale password.
|
|
|
|
* Git GUI updates.
|
|
|
|
* "git format-patch" learns a way to feed cover letter description,
|
|
that (1) can be used on detached HEAD where there is no branch
|
|
description available, and (2) also can override the branch
|
|
description if there is one.
|
|
|
|
* Use of --max-pack-size to allow multiple packfiles to be created is
|
|
now supported even when we are sending unreachable objects to cruft
|
|
packs.
|
|
|
|
* "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
|
|
"--subject-prefix" option and used "[RFC PATCH]"; now we will add
|
|
"RFC" prefix to whatever subject prefix is specified.
|
|
|
|
* "git log --format" has been taught the %(decorate) placeholder.
|
|
|
|
* The default log message created by "git revert", when reverting a
|
|
commit that records a revert, has been tweaked, to encourage people
|
|
describe complex "revert of revert of revert" situation better in
|
|
their own words.
|
|
|
|
* The command-line complation support (in contrib/) learned to
|
|
complete "git commit --trailer=" for possible trailer keys.
|
|
|
|
* "git update-index" learns "--show-index-version" to inspect
|
|
the index format version used by the on-disk index file.
|
|
|
|
* "git diff" learned diff.statNameWidth configuration variable, to
|
|
give the default width for the name part in the "--stat" output.
|
|
|
|
* "git range-diff --notes=foo" compared "log --notes=foo --notes" of
|
|
the two ranges, instead of using just the specified notes tree.
|
|
|
|
* The command line completion script (in contrib/) can be told to
|
|
complete aliases by including ": git <cmd> ;" in the alias to tell
|
|
it that the alias should be completed similar to how "git <cmd>" is
|
|
completed. The parsing code for the alias as been loosened to
|
|
allow ';' without an extra space before it.
|
|
|
|
* "git for-each-ref" and friends learned to apply mailmap to
|
|
authorname and other fields.
|
|
|
|
* "git repack" machinery learns to pay attention to the "--filter="
|
|
option.
|
|
|
|
* "git repack" learned "--max-cruft-size" to prevent cruft packs from
|
|
growing without bounds.
|
|
|
|
* "git merge-tree" learned to take strategy backend specific options
|
|
via the "-X" option, like "git merge" does.
|
|
|
|
* "git log" and friends learned "--dd" that is a short-hand for
|
|
"--diff-merges=first-parent -p".
|
|
|
|
* The attribute subsystem learned to honor `attr.tree` configuration
|
|
that specifies which tree to read the .gitattributes files from.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* "git check-attr" has been taught to work better with sparse-index.
|
|
|
|
* It may be tempting to leave the help text NULL for a command line
|
|
option that is either hidden or too obvious, but "git subcmd -h"
|
|
and "git subcmd --help-all" would have segfaulted if done so. Now
|
|
the help text is optional.
|
|
|
|
* Tests that are known to pass with LSan are now marked as such.
|
|
|
|
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
|
|
in the (rather expensive) sanitizer CI job.
|
|
|
|
* Tests with LSan from time to time seem to emit harmless message
|
|
that makes our tests unnecessarily flaky; we work it around by
|
|
filtering the uninteresting output.
|
|
|
|
* Unused parameters to functions are marked as such, and/or removed,
|
|
in order to bring us closer to -Wunused-parameter clean.
|
|
|
|
* The code to keep track of existing packs in the repository while
|
|
repacking has been refactored.
|
|
|
|
* The "streaming" interface used for bulk-checkin codepath has been
|
|
narrowed to take only blob objects for now, with no real loss of
|
|
functionality.
|
|
|
|
* GitHub CI workflow has learned to trigger Coverity check.
|
|
|
|
* Test coverage for trailers has been improved.
|
|
|
|
* The code to iterate over loose references have been optimized to
|
|
reduce the number of lstat() system calls.
|
|
(merge 2cdb796101 vd/loose-ref-iteration-optimization later to maint).
|
|
|
|
* The codepaths that read "chunk" formatted files have been corrected
|
|
to pay attention to the chunk size and notice broken files.
|
|
|
|
|
|
Fixes since v2.42
|
|
-----------------
|
|
|
|
* Overly long label names used in the sequencer machinery are now
|
|
chopped to fit under filesystem limitation.
|
|
|
|
* Scalar updates.
|
|
|
|
* Tweak GitHub Actions CI so that pushing the same commit to multiple
|
|
branch tips at the same time will not waste building and testing
|
|
the same thing twice.
|
|
|
|
* The commit-graph verification code that detects mixture of zero and
|
|
non-zero generation numbers has been updated.
|
|
|
|
* "git diff -w --exit-code" with various options did not work
|
|
correctly, which is being addressed.
|
|
|
|
* transfer.unpackLimit ought to be used as a fallback, but overrode
|
|
fetch.unpackLimit and receive.unpackLimit instead.
|
|
|
|
* The use of API between two calls to require_clean_work_tree() from
|
|
the sequencer code has been cleaned up for consistency.
|
|
|
|
* "git diff --no-such-option" and other corner cases around the exit
|
|
status of the "diff" command has been corrected.
|
|
|
|
* "git for-each-ref --sort='contents:size'" sorts the refs according
|
|
to size numerically, giving a ref that points at a blob twelve-byte
|
|
(12) long before showing a blob hundred-byte (100) long.
|
|
|
|
* We now limit depth of the tree objects and maximum length of
|
|
pathnames recorded in tree objects.
|
|
(merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
|
|
|
|
* Various fixes to the behavior of "rebase -i" when the command got
|
|
interrupted by conflicting changes.
|
|
|
|
* References from description of the `--patch` option in various
|
|
manual pages have been simplified and improved.
|
|
|
|
* "git grep -e A --no-or -e B" is accepted, even though the negation
|
|
of "or" did not mean anything, which has been tightened.
|
|
|
|
* The completion script (in contrib/) has been taught to treat the
|
|
"-t" option to "git checkout" and "git switch" just like the
|
|
"--track" option, to complete remote-tracking branches.
|
|
|
|
* "git diff --no-index -R <(one) <(two)" did not work correctly,
|
|
which has been corrected.
|
|
|
|
* Update "git maintenance" timers' implementation based on systemd
|
|
timers to work with WSL.
|
|
|
|
* "git diff --cached" codepath did not fill the necessary stat
|
|
information for a file when fsmonitor knows it is clean and ended
|
|
up behaving as if it is not clean, which has been corrected.
|
|
|
|
* Clarify how "alias.foo = : git cmd ; aliased-command-string" should
|
|
be spelled with necessary whitespaces around punctuation marks to
|
|
work.
|
|
|
|
* HTTP Header redaction code has been adjusted for a newer version of
|
|
cURL library that shows its traces differently from earlier
|
|
versions.
|
|
|
|
* An error message given by "git send-email" when given a malformed
|
|
address did not give correct information, which has been corrected.
|
|
|
|
* UBSan options were not propagated through the test framework to git
|
|
run via the httpd, unlike ASan options, which has been corrected.
|
|
|
|
* "checkout --merge -- path" and "update-index --unresolve path" did
|
|
not resurrect conflicted state that was resolved to remove path,
|
|
but now they do.
|
|
(merge 5bdedac3c7 jc/unresolve-removal later to maint).
|
|
|
|
* The display width table for unicode characters has been updated for
|
|
Unicode 15.1
|
|
(merge 872976c37e bb/unicode-width-table-15 later to maint).
|
|
|
|
* Update mailmap entry for Derrick.
|
|
(merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
|
|
|
|
* In .gitmodules files, submodules are keyed by their names, and the
|
|
path to the submodule whose name is $name is specified by the
|
|
submodule.$name.path variable. There were a few codepaths that
|
|
mixed the name and path up when consulting the submodule database,
|
|
which have been corrected. It took long for these bugs to be found
|
|
as the name of a submodule initially is the same as its path, and
|
|
the problem does not surface until it is moved to a different path,
|
|
which apparently happens very rarely.
|
|
|
|
* "git diff --merge-base X other args..." insisted that X must be a
|
|
commit and errored out when given an annotated tag that peels to a
|
|
commit, but we only need it to be a committish. This has been
|
|
corrected.
|
|
(merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
|
|
|
|
* Fix "git merge-tree" to stop segfaulting when the --attr-source
|
|
option is used.
|
|
(merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
|
|
|
|
* Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
|
|
not auto-initialize the decoration subsystem, which has been
|
|
corrected.
|
|
|
|
* Feeding "git stash store" with a random commit that was not created
|
|
by "git stash create" now errors out.
|
|
(merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
|
|
|
|
* The index file has room only for lower 32-bit of the file size in
|
|
the cached stat information, which means cached stat information
|
|
will have 0 in its sd_size member for a file whose size is multiple
|
|
of 4GiB. This is mistaken for a racily clean path. Avoid it by
|
|
storing a bogus sd_size value instead for such files.
|
|
(merge 5143ac07b1 bc/racy-4gb-files later to maint).
|
|
|
|
* "git p4" tried to store symlinks to LFS when told, but has been
|
|
fixed not to do so, because it does not make sense.
|
|
(merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
|
|
|
|
* The codepath to handle recipient addresses `git send-email
|
|
--compose` learns from the user was completely broken, which has
|
|
been corrected.
|
|
(merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
|
|
|
|
* "cd sub && git grep -f patterns" tried to read "patterns" file at
|
|
the top level of the working tree; it has been corrected to read
|
|
"sub/patterns" instead.
|
|
|
|
|
|
* "git reflog expire --single-worktree" has been broken for the past
|
|
20 months or so, which has been corrected.
|
|
|
|
* "git send-email" did not have certain pieces of data computed yet
|
|
when it tried to validate the outging messages and its recipient
|
|
addresses, which has been sorted out.
|
|
|
|
* "git bugreport" learned to complain when it received a command line
|
|
argument that it will not use.
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
|