aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/RelNotes/2.43.0.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/RelNotes/2.43.0.txt')
-rw-r--r--Documentation/RelNotes/2.43.0.txt287
1 files changed, 195 insertions, 92 deletions
diff --git a/Documentation/RelNotes/2.43.0.txt b/Documentation/RelNotes/2.43.0.txt
index 7f46b10ed9..e0e5b535bb 100644
--- a/Documentation/RelNotes/2.43.0.txt
+++ b/Documentation/RelNotes/2.43.0.txt
@@ -10,67 +10,103 @@ Backward Compatibility Notes
prefix. If you are negatively affected by this change, please use
"--subject-prefix=PATCH --rfc" as a replacement.
+ * In Git 2.42, "git rev-list --stdin" learned to take non-revisions
+ (like "--not") 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 standard 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
+ 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.
+ a branch that is checked out and protect it from getting modified
+ with the same codepath. The message has been rephrased to say that
+ the branch is "in use" to avoid confusion.
- * Hourly and other schedule of "git maintenance" jobs are randomly
+ * Hourly and other schedules 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
+ * The way authentication related data other than passwords (e.g.,
+ oauth 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.
+ * Update the libsecret and wincred credential helpers to correctly
+ match which credential to erase; they erased the wrong entry in
+ some cases.
* 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.
+ * "git format-patch" learned a new "--description-file" option that
+ lets cover letter description to be fed; this can be used on
+ detached HEAD where there is no branch description available, and
+ 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.
+ * Use of the "--max-pack-size" option 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.
+ * "git log --format" has been taught the %(decorate) placeholder for
+ further customization over what the "--decorate" option offers.
* 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
+ to describe complex "revert of revert of revert" situations better in
their own words.
- * The command-line complation support (in contrib/) learned to
+ * The command-line completion 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 update-index" learned the "--show-index-version" option 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 diff" learned the "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 two ranges, instead of using just the specified notes tree,
+ which has been corrected to use only 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.
+ it that the alias should be completed in a similar way to how "git
+ <cmd>" is completed. The parsing code for the alias has 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 in a more flexible way than using
+ separate placeholder letters like %a[eElL] every time we want to
+ come up with small variants.
+
+ * "git repack" machinery learned to pay attention to the "--filter="
+ option.
+
+ * "git repack" learned the "--max-cruft-size" option 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 the "--dd" option that is a
+ short-hand for "--diff-merges=first-parent -p".
+
+ * The attribute subsystem learned to honor the "attr.tree"
+ configuration variable that specifies which tree to read the
+ .gitattributes files from.
+
+ * "git merge-file" learns a mode to read three variants of the
+ contents to be merged from blob objects.
Performance, Internal Implementation, Development Support etc.
@@ -80,141 +116,208 @@ Performance, Internal Implementation, Development Support etc.
* 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.
+ the help text is truly optional.
* Tests that are known to pass with LSan are now marked as such.
- (merge 5fafe8c95f tb/mark-more-tests-as-leak-free later to maint).
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.
- (merge 6ba913629f js/ci-san-skip-p4-and-svn-tests later to maint).
- * Tests with LSan from time to time seem to emit harmless message
- that makes our tests unnecessarily flaky; we work it around by
+ * Tests with LSan from time to time seem to emit harmless messages
+ that make our tests unnecessarily flaky; we work around it by
filtering the uninteresting output.
- (merge 370ef7e40d jk/test-lsan-denoise-output later to maint).
* Unused parameters to functions are marked as such, and/or removed,
- in order to bring us closer to -Wunused-parameter clean.
+ 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 has been optimized to
+ reduce the number of lstat() system calls.
+
+ * The codepaths that read "chunk" formatted files have been corrected
+ to pay attention to the chunk size and notice broken files.
+
+ * Replace macos-12 used at GitHub CI with macos-13.
+ (merge 682a868f67 js/ci-use-macos-13 later to maint).
+
Fixes since v2.42
-----------------
* Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.
- (merge ac300bda10 mp/rebase-label-length-limit later to maint).
* Scalar updates.
- (merge f9a547d3a7 ds/scalar-updates later to maint).
* 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.
- (merge 99fe06cbfd jc/ci-skip-same-commit later to maint).
- * The commit-graph verification code that detects mixture of zero and
+ * The commit-graph verification code that detects a mixture of zero and
non-zero generation numbers has been updated.
- (merge db6044d762 tb/commit-graph-verify-fix later to maint).
* "git diff -w --exit-code" with various options did not work
- correctly, which is being addressed.
- (merge a64f8b2595 jc/diff-exit-code-with-w-fixes later to maint).
+ correctly, which has been corrected.
- * transfer.unpackLimit ought to be used as a fallback, but overrode
- fetch.unpackLimit and receive.unpackLimit instead.
- (merge f3d33f8cfe ts/unpacklimit-config-fix later to maint).
+ * The "transfer.unpackLimit" configuration variable ought to be used
+ as a fallback, but overrode the more specific "fetch.unpackLimit"
+ and "receive.unpackLimit" configuration variables by mistake, which
+ has been corrected.
* The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.
- (merge a9b5955e07 ob/sequencer-empty-hint-fix later to maint).
* "git diff --no-such-option" and other corner cases around the exit
- status of the "diff" command has been corrected.
- (merge 5cc6b2d70b jk/diff-result-code-cleanup later to maint).
+ status of the "diff" command have been corrected.
- * "git for-each-ref --sort='contents:size'" sorts the refs according
+ * "git for-each-ref --sort='contents:size'" sorted 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.
- (merge 6d79cd8474 ks/ref-filter-sort-numerically later to maint).
+ (12) long before showing a blob hundred-byte (100) long, which has
+ been corrected.
- * We now limit depth of the tree objects and maximum length of
+ * We now limit the 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.
- (merge 203573b024 pw/rebase-i-after-failure later to maint).
+ * Various fixes to the behavior of "rebase -i", when the command got
+ interrupted by conflicting changes, have been made.
- * References from description of the `--patch` option in various
+ * References from a description of the `--patch` option in various
manual pages have been simplified and improved.
- (merge 11422f23e3 so/diff-doc-for-patch-update later to maint).
* "git grep -e A --no-or -e B" is accepted, even though the negation
- of "or" did not mean anything, which has been tightened.
- (merge aae8558b10 rs/grep-no-no-or later to maint).
+ of the "--or" option 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.
- (merge 9f892830d6 js/complete-checkout-t later to maint).
* "git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.
- (merge 48944f214c pw/diff-no-index-from-named-pipes later to maint).
- * Update "git maintenance" timers' implementation based on systemd
- timers to work with WSL.
- (merge 5e8515e8e8 js/systemd-timers-wsl-fix later to maint).
+ * "git maintenance" timers' implementation has been updated, 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.
- (merge 6a044a2048 js/diff-cached-fsmonitor-fix later to maint).
+ up behaving as if it were 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.
- (merge 4333267995 pb/completion-aliases-doc later to maint).
+ * How "alias.foo = : git cmd ; aliased-command-string" should be
+ spelled with necessary whitespace around punctuation marks to work
+ has been more clearly documented (but this will be moot with newer
+ versions of Git where the parsing rules have been improved).
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
- (merge 0763c3a2c4 jk/redact-h2h3-headers-fix later to maint).
- * An error message given by "git send-email" when given a malformed
- address did not give correct information, which has been corrected.
- (merge 12288cc44e tb/send-email-extract-valid-address-error-message-fix later to maint).
+ * An error message given by "git send-email", when given a malformed
+ address, did not show the offending address, 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.
- (merge 252d693797 jk/test-pass-ubsan-options-to-http-test later to maint).
* "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 the ".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).
+
+ * "git merge-tree" used to segfault when the "--attr-source"
+ option is used, which has been corrected.
+ (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 the 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 a 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 outgoing 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.
+
+ * The codepath to traverse the commit-graph learned to notice that a
+ commit is missing (e.g., corrupt repository lost an object), even
+ though it knows something about the commit (like its parents) from
+ what is in commit-graph.
+ (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
+
+ * "git rev-list --missing" did not work for missing commit objects,
+ which has been corrected.
+
+ * "git rev-list --unpacked --objects" failed to exclude packed
+ non-commit objects, which has been corrected.
+ (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
+
+ * "To dereference" and "to peel" were sometimes used in in-code
+ comments and documentation but without description in the glossary.
+ (merge 893dce2ffb vd/glossary-dereference-peel later to maint).
+
* Other code cleanup, docfix, build fix, etc.
- (merge fd3ba590d8 ws/git-push-doc-grammofix later to maint).
- (merge 5f33a843de ds/upload-pack-error-sequence-fix later to maint).
- (merge beaa1d952b jk/function-pointer-mismatches-fix later to maint).
- (merge b46d806ea5 ob/t9001-indent-fix later to maint).
- (merge fdc9914c28 ja/worktree-orphan later to maint).
- (merge c2cbefc510 jc/mv-d-to-d-error-message-fix later to maint).
- (merge d0fc552bfc ch/t6300-verify-commit-test-cleanup later to maint).
- (merge aa4b83dd5e ws/git-svn-retire-faketerm later to maint).
- (merge edf80d23f1 jk/ci-retire-allow-ref later to maint).
- (merge 256a94ef6c bc/more-git-var later to maint).
- (merge 82af2c639c ob/sequencer-reword-error-message later to maint).
- (merge 2a63c79dae rs/grep-parseopt-simplify later to maint).
- (merge 078c42531e rs/name-rev-use-opt-hidden-bool later to maint).
- (merge 63642d58b4 ob/sequencer-remove-dead-code later to maint).
- (merge 8aae489756 ob/t3404-typofix later to maint).
- (merge 58be11432e eg/config-type-path-docfix later to maint).
- (merge 563f339d98 ch/clean-docfix later to maint).
- (merge 4fbe83fcd9 hy/doc-show-is-like-log-not-diff-tree later to maint).
- (merge 43abaaf008 ob/am-msgfix later to maint).
+ (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
+ (merge 1bd809938a tb/format-pack-doc-update later to maint).
+ (merge 8f81532599 an/clang-format-typofix later to maint).
+ (merge 3ca86adc2d la/strvec-header-fix later to maint).
+ (merge 6789275d37 jc/test-i18ngrep later to maint).
+ (merge 9972cd6004 ps/leakfixes later to maint).
+ (merge 46edab516b tz/send-email-helpfix later to maint).