324 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			324 lines
		
	
	
		
			14 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.
 | 
						|
 | 
						|
 * 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
 | 
						|
   days, we treat a branch that is being bisected or rebased just like
 | 
						|
   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 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.,
 | 
						|
   oauth token and password expiration data) are stored in libsecret
 | 
						|
   keyrings has been rethought.
 | 
						|
 | 
						|
 * 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" 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 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 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
 | 
						|
   to describe complex "revert of revert of revert" situations better in
 | 
						|
   their own words.
 | 
						|
 | 
						|
 * The command-line completion support (in contrib/) learned to
 | 
						|
   complete "git commit --trailer=" for possible trailer keys.
 | 
						|
 | 
						|
 * "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 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,
 | 
						|
   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 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.
 | 
						|
 | 
						|
 * "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 truly 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 messages
 | 
						|
   that make our tests unnecessarily flaky; we work around it 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 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.
 | 
						|
 | 
						|
 * 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 a mixture of zero and
 | 
						|
   non-zero generation numbers has been updated.
 | 
						|
 | 
						|
 * "git diff -w --exit-code" with various options did not work
 | 
						|
   correctly, which has been corrected.
 | 
						|
 | 
						|
 * 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.
 | 
						|
 | 
						|
 * "git diff --no-such-option" and other corner cases around the exit
 | 
						|
   status of the "diff" command have been corrected.
 | 
						|
 | 
						|
 * "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, which has
 | 
						|
   been corrected.
 | 
						|
 | 
						|
 * 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, have been made.
 | 
						|
 | 
						|
 * References from a 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 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.
 | 
						|
 | 
						|
 * "git diff --no-index -R <(one) <(two)" did not work correctly,
 | 
						|
   which has been corrected.
 | 
						|
 | 
						|
 * "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 were not clean, which has been corrected.
 | 
						|
 | 
						|
 * 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.
 | 
						|
 | 
						|
 * 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.
 | 
						|
 | 
						|
 * "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 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).
 |