026dd738a6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
411 lines
18 KiB
Plaintext
411 lines
18 KiB
Plaintext
Git 2.23 Release Notes
|
|
======================
|
|
|
|
Updates since v2.22
|
|
-------------------
|
|
|
|
Backward compatibility note
|
|
|
|
* The "--base" option of "format-patch" computed the patch-ids for
|
|
prerequisite patches in an unstable way, which has been updated to
|
|
compute in a way that is compatible with "git patch-id --stable".
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
* The "git fast-export/import" pair has been taught to handle commits
|
|
with log messages in encoding other than UTF-8 better.
|
|
|
|
* In recent versions of Git, per-worktree refs are exposed in
|
|
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
|
|
must be a valid refname component. The code now sanitizes the names
|
|
given to worktrees, to make sure these refs are well-formed.
|
|
|
|
* "git merge" learned "--quit" option that cleans up the in-progress
|
|
merge while leaving the working tree and the index still in a mess.
|
|
|
|
* "git format-patch" learns a configuration to set the default for
|
|
its --notes=<ref> option.
|
|
|
|
* The code to show args with potential typo that cannot be
|
|
interpreted as a commit-ish has been improved.
|
|
|
|
* "git clone --recurse-submodules" learned to set up the submodules
|
|
to ignore commit object names recorded in the superproject gitlink
|
|
and instead use the commits that happen to be at the tip of the
|
|
remote-tracking branches from the get-go, by passing the new
|
|
"--remote-submodules" option.
|
|
|
|
* The pattern "git diff/grep" use to extract funcname and words
|
|
boundary for Matlab has been extend to cover Octave, which is more
|
|
or less equivalent.
|
|
|
|
* "git help git" was hard to discover (well, at least for some
|
|
people).
|
|
|
|
* The pattern "git diff/grep" use to extract funcname and words
|
|
boundary for Rust has been added.
|
|
|
|
* "git status" can be told a non-standard default value for the
|
|
"--[no-]ahead-behind" option with a new configuration variable
|
|
status.aheadBehind.
|
|
|
|
* "git fetch" and "git pull" reports when a fetch results in
|
|
non-fast-forward updates to let the user notice unusual situation.
|
|
The commands learned "--no-shown-forced-updates" option to disable
|
|
this safety feature.
|
|
|
|
* Two new commands "git switch" and "git restore" are introduced to
|
|
split "checking out a branch to work on advancing its history" and
|
|
"checking out paths out of the index and/or a tree-ish to work on
|
|
advancing the current history" out of the single "git checkout"
|
|
command.
|
|
|
|
* "git branch --list" learned to always output the detached HEAD as
|
|
the first item (when the HEAD is detached, of course), regardless
|
|
of the locale.
|
|
|
|
* The conditional inclusion mechanism learned to base the choice on
|
|
the branch the HEAD currently is on.
|
|
|
|
* "git rev-list --objects" learned with "--no-object-names" option to
|
|
squelch the path to the object that is used as a grouping hint for
|
|
pack-objects.
|
|
|
|
* A new tag.gpgSign configuration variable turns "git tag -a" into
|
|
"git tag -s".
|
|
|
|
* "git multi-pack-index" learned expire and repack subcommands.
|
|
|
|
* "git blame" learned to "ignore" commits in the history, whose
|
|
effects (as well as their presence) get ignored.
|
|
|
|
* "git cherry-pick/revert" learned a new "--skip" action.
|
|
|
|
* The tips of refs from the alternate object store can be used as
|
|
starting point for reachability computation now.
|
|
|
|
* Extra blank lines in "git status" output have been reduced.
|
|
|
|
* The commits in a repository can be described by multiple
|
|
commit-graph files now, which allows the commit-graph files to be
|
|
updated incrementally.
|
|
|
|
* The "git log" command learns to issue a warning when log.mailmap
|
|
configuration is not set and --[no-]mailmap option is not used, to
|
|
prepare users for future versions of Git that uses the mailmap by
|
|
default.
|
|
|
|
* "git range-diff" output has been tweaked for easier identification
|
|
of which part of what file the patch shown is about.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* Update supporting parts of "git rebase" to remove code that should
|
|
no longer be used.
|
|
|
|
* Developer support to emulate unsatisfied prerequisites in tests to
|
|
ensure that the remainer of the tests still succeeds when tests
|
|
with prerequisites are skipped.
|
|
|
|
* "git update-server-info" learned not to rewrite the file with the
|
|
same contents.
|
|
|
|
* The way of specifying the path to find dynamic libraries at runtime
|
|
has been simplified. The old default to pass -R/path/to/dir has been
|
|
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
|
|
which is the more recent GCC uses. Those who need to build with an
|
|
old GCC can still use "CC_LD_DYNPATH=-R"
|
|
|
|
* Prepare use of reachability index in topological walker that works
|
|
on a range (A..B).
|
|
|
|
* A new tutorial targetting specifically aspiring git-core
|
|
developers has been added.
|
|
|
|
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
|
|
libraries from at runtime.
|
|
|
|
* "git mergetool" and its tests now spawn fewer subprocesses.
|
|
|
|
* Dev support update to help tracing out tests.
|
|
|
|
* Support to build with MSVC has been updated.
|
|
|
|
* "git fetch" that grabs from a group of remotes learned to run the
|
|
auto-gc only once at the very end.
|
|
|
|
* A handful of Windows build patches have been upstreamed.
|
|
|
|
* The code to read state files used by the sequencer machinery for
|
|
"git status" has been made more robust against a corrupt or stale
|
|
state files.
|
|
|
|
* "git for-each-ref" with multiple patterns have been optimized.
|
|
|
|
* The tree-walk API learned to pass an in-core repository
|
|
instance throughout more codepaths.
|
|
|
|
* When one step in multi step cherry-pick or revert is reset or
|
|
committed, the command line prompt script failed to notice the
|
|
current status, which has been improved.
|
|
|
|
* Many GIT_TEST_* environment variables control various aspects of
|
|
how our tests are run, but a few followed "non-empty is true, empty
|
|
or unset is false" while others followed the usual "there are a few
|
|
ways to spell true, like yes, on, etc., and also ways to spell
|
|
false, like no, off, etc." convention.
|
|
|
|
* Adjust the dir-iterator API and apply it to the local clone
|
|
optimization codepath.
|
|
|
|
* We have been trying out a few language features outside c89; the
|
|
coding guidelines document did not talk about them and instead had
|
|
a blanket ban against them.
|
|
(merge cc0c42975a jc/post-c89-rules-doc later to maint).
|
|
|
|
* A test helper has been introduced to optimize preparation of test
|
|
repositories with many simple commits, and a handful of test
|
|
scripts have been updated to use it.
|
|
|
|
|
|
Fixes since v2.22
|
|
-----------------
|
|
|
|
* A relative pathname given to "git init --template=<path> <repo>"
|
|
ought to be relative to the directory "git init" gets invoked in,
|
|
but it instead was made relative to the repository, which has been
|
|
corrected.
|
|
(merge e1df7fe43f nd/init-relative-template-fix later to maint).
|
|
|
|
* "git worktree add" used to fail when another worktree connected to
|
|
the same repository was corrupt, which has been corrected.
|
|
(merge 105df73e71 nd/corrupt-worktrees later to maint).
|
|
|
|
* The ownership rule for the file descriptor to fast-import remote
|
|
backend was mixed up, leading to unrelated file descriptor getting
|
|
closed, which has been fixed.
|
|
(merge 3203566a71 mh/import-transport-fd-fix later to maint).
|
|
|
|
* A "merge -c" instruction during "git rebase --rebase-merges" should
|
|
give the user a chance to edit the log message, even when there is
|
|
otherwise no need to create a new merge and replace the existing
|
|
one (i.e. fast-forward instead), but did not. Which has been
|
|
corrected.
|
|
|
|
* Code cleanup and futureproof.
|
|
(merge 31f5256c82 ds/object-info-for-prefetch-fix later to maint).
|
|
|
|
* More parameter validation.
|
|
(merge de99eb0c24 es/grep-require-name-when-needed later to maint).
|
|
|
|
* "git update-server-info" used to leave stale packfiles in its
|
|
output, which has been corrected.
|
|
(merge e941c48d49 ew/server-info-remove-crufts later to maint).
|
|
|
|
* The server side support for "git fetch" used to show incorrect
|
|
value for the HEAD symbolic ref when the namespace feature is in
|
|
use, which has been corrected.
|
|
(merge 533e088250 jk/HEAD-symref-in-xfer-namespaces later to maint).
|
|
|
|
* "git am -i --resolved" segfaulted after trying to see a commit as
|
|
if it were a tree, which has been corrected.
|
|
(merge 7663e438c5 jk/am-i-resolved-fix later to maint).
|
|
|
|
* "git bundle verify" needs to see if prerequisite objects exist in
|
|
the receiving repository, but the command did not check if we are
|
|
in a repository upfront, which has been corrected.
|
|
(merge 3bbbe467f2 js/bundle-verify-require-object-store later to maint).
|
|
|
|
* "git merge --squash" is designed to update the working tree and the
|
|
index without creating the commit, and this cannot be countermanded
|
|
by adding the "--commit" option; the command now refuses to work
|
|
when both options are given.
|
|
(merge 1d14d0c994 vv/merge-squash-with-explicit-commit later to maint).
|
|
|
|
* The data collected by fsmonitor was not properly written back to
|
|
the on-disk index file, breaking t7519 tests occasionally, which
|
|
has been corrected.
|
|
(merge b5a8169752 js/fsmonitor-unflake later to maint).
|
|
|
|
* Update to Unicode 12.1 width table.
|
|
(merge 5817f9caa3 bb/unicode-12.1-reiwa later to maint).
|
|
|
|
* The command line to invoke a "git cat-file" command from inside
|
|
"git p4" was not properly quoted to protect a caret and running a
|
|
broken command on Windows, which has been corrected.
|
|
(merge c3f2358de3 mm/p4-unshelve-windows-fix later to maint).
|
|
|
|
* "git request-pull" learned to warn when the ref we ask them to pull
|
|
from in the local repository and in the published repository are
|
|
different.
|
|
(merge 0454220d66 pb/request-pull-verify-remote-ref later to maint).
|
|
|
|
* When creating a partial clone, the object filtering criteria is
|
|
recorded for the origin of the clone, but this incorrectly used a
|
|
hardcoded name "origin" to name that remote; it has been corrected
|
|
to honor the "--origin <name>" option.
|
|
(merge 1c4a9f9114 xl/record-partial-clone-origin later to maint).
|
|
|
|
* "git fetch" into a lazy clone forgot to fetch base objects that are
|
|
necessary to complete delta in a thin packfile, which has been
|
|
corrected.
|
|
(merge 810e19322d jt/partial-clone-missing-ref-delta-base later to maint).
|
|
|
|
* The filter_data used in the list-objects-filter (which manages a
|
|
lazily sparse clone repository) did not use the dynamic array API
|
|
correctly---'nr' is supposed to point at one past the last element
|
|
of the array in use. This has been corrected.
|
|
(merge 7140600e2e md/list-objects-filter-memfix later to maint).
|
|
|
|
* The description about slashes in gitignore patterns (used to
|
|
indicate things like "anchored to this level only" and "only
|
|
matches directories") has been revamped.
|
|
(merge 1a58bad014 an/ignore-doc-update later to maint).
|
|
|
|
* The URL decoding code has been updated to avoid going past the end
|
|
of the string while parsing %-<hex>-<hex> sequence.
|
|
(merge d37dc239a4 md/url-parse-harden later to maint).
|
|
|
|
* The list of for-each like macros used by clang-format has been
|
|
updated.
|
|
(merge fc7e03aace mo/clang-format-for-each-update later to maint).
|
|
|
|
* "git branch --list" learned to show branches that are checked out
|
|
in other worktrees connected to the same repository prefixed with
|
|
'+', similar to the way the currently checked out branch is shown
|
|
with '*' in front.
|
|
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
|
|
|
|
* Code restructuring during 2.20 period broke fetching tags via
|
|
"import" based transports.
|
|
(merge f80d922355 fc/fetch-with-import-fix later to maint).
|
|
|
|
* The commit-graph file is now part of the "files that the runtime
|
|
may keep open file descriptors on, all of which would need to be
|
|
closed when done with the object store", and the file descriptor to
|
|
an existing commit-graph file now is closed before "gc" finalizes a
|
|
new instance to replace it.
|
|
(merge 2d511cfc0b ds/close-object-store later to maint).
|
|
|
|
* "git checkout -p" needs to selectively apply a patch in reverse,
|
|
which did not work well.
|
|
(merge 2bd69b9024 pw/add-p-recount later to maint).
|
|
|
|
* Code clean-up to avoid signed integer wraparounds during binary search.
|
|
(merge 568a05c5ec rs/avoid-overflow-in-midpoint-computation later to maint).
|
|
|
|
* "git interpret-trailers" always treated '#' as the comment
|
|
character, regardless of core.commentChar setting, which has been
|
|
corrected.
|
|
(merge 29c83fc23f jk/trailers-use-config later to maint).
|
|
|
|
* "git stash show 23" used to work, but no more after getting
|
|
rewritten in C; this regression has been corrected.
|
|
(merge 63b50c8ffe tg/stash-ref-by-index-fix later to maint).
|
|
|
|
* "git rebase --abort" used to leave refs/rewritten/ when concluding
|
|
"git rebase -r", which has been corrected.
|
|
(merge d559f502c5 pw/rebase-abort-clean-rewritten later to maint).
|
|
|
|
* An incorrect list of options was cached after command line
|
|
completion failed (e.g. trying to complete a command that requires
|
|
a repository outside one), which has been corrected.
|
|
(merge 69702523af nd/completion-no-cache-failure later to maint).
|
|
|
|
* The code to parse scaled numbers out of configuration files has
|
|
been made more robust and also easier to follow.
|
|
(merge 39c575c969 rs/config-unit-parsing later to maint).
|
|
|
|
* The codepath to compute delta islands used to spew progress output
|
|
without giving the callers any way to squelch it, which has been
|
|
fixed.
|
|
(merge bdbdf42f8a jk/delta-islands-progress-fix later to maint).
|
|
|
|
* Protocol capabilities that go over wire should never be translated,
|
|
but it was incorrectly marked for translation, which has been
|
|
corrected. The output of protocol capabilities for debugging has
|
|
been tweaked a bit.
|
|
|
|
* Use "Erase in Line" CSI sequence that is already used in the editor
|
|
support to clear cruft in the progress output.
|
|
(merge 5b12e3123b sg/rebase-progress later to maint).
|
|
|
|
* "git submodule foreach" did not protect command line options passed
|
|
to the command to be run in each submodule correctly, when the
|
|
"--recursive" option was in use.
|
|
(merge 30db18b148 ms/submodule-foreach-fix later to maint).
|
|
|
|
* The configuration variable rebase.rescheduleFailedExec should be
|
|
effective only while running an interactive rebase and should not
|
|
affect anything when running an non-interactive one, which was not
|
|
the case. This has been corrected.
|
|
(merge 906b63942a js/rebase-reschedule-applies-only-to-interactive later to maint).
|
|
|
|
* The "git clone" documentation refers to command line options in its
|
|
description in the short form; they have been replaced with long
|
|
forms to make them more recognisable.
|
|
(merge bfc8c84ed5 qn/clone-doc-use-long-form later to maint).
|
|
|
|
* Generation of pack bitmaps are now disabled when .keep files exist,
|
|
as these are mutually exclusive features.
|
|
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
|
|
|
|
* "git rm" to resolve a conflicted path leaked an internal message
|
|
"needs merge" before actually removing the path, which was
|
|
confusing. This has been corrected.
|
|
(merge b2b1f615ce jc/denoise-rm-to-resolve later to maint).
|
|
|
|
* "git stash --keep-index" did not work correctly on paths that have
|
|
been removed, which has been fixed.
|
|
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
|
|
|
|
* Window 7 update ;-)
|
|
(merge eb7c786314 js/mingw-spawn-with-spaces-in-path later to maint).
|
|
|
|
* A codepath that reads from GPG for signed object verification read
|
|
past the end of allocated buffer, which has been fixed.
|
|
(merge 64c45dc72e sr/gpg-interface-stop-at-the-end later to maint).
|
|
|
|
* "git clean" silently skipped a path when it cannot lstat() it; now
|
|
it gives a warning.
|
|
(merge b09364c47a js/clean-report-too-long-a-path later to maint).
|
|
|
|
* "git push --atomic" that goes over the transport-helper (namely,
|
|
the smart http transport) failed to prevent refs to be pushed when
|
|
it can locally tell that one of the ref update will fail without
|
|
having to consult the other end, which has been corrected.
|
|
(merge 2581ea3d31 es/local-atomic-push-failure-with-http later to maint).
|
|
|
|
* The internal diff machinery can be made to read out of bounds while
|
|
looking for --funcion-context line in a corner case, which has been
|
|
corrected.
|
|
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge f547101b26 es/git-debugger-doc later to maint).
|
|
(merge 7877ac3d7b js/bisect-helper-check-get-oid-return-value later to maint).
|
|
(merge 0108f47eb3 sw/git-p4-unshelve-branched-files later to maint).
|
|
(merge 9df8f734fd cm/send-email-document-req-modules later to maint).
|
|
(merge afc3bf6eb1 ab/hash-object-doc later to maint).
|
|
(merge 1fde99cfc7 po/doc-branch later to maint).
|
|
(merge 459842e1c2 dl/config-alias-doc later to maint).
|
|
(merge 5d137fc2c7 cb/fsmonitor-intfix later to maint).
|
|
(merge 921d49be86 rs/copy-array later to maint).
|
|
(merge cc8d872e69 js/t3404-typofix later to maint).
|
|
(merge 729a9b558b cb/mkstemps-uint-type-fix later to maint).
|
|
(merge 9dae4fe79f js/gcc-8-and-9 later to maint).
|
|
(merge ed33bd8f30 js/t0001-case-insensitive later to maint).
|
|
(merge dfa880e336 jw/gitweb-sample-update later to maint).
|
|
(merge e532a90a9f sg/t5551-fetch-smart-error-is-translated later to maint).
|
|
(merge 8d45ad8c29 jt/t5551-test-chunked later to maint).
|
|
(merge 1a64e07d23 sg/git-C-empty-doc later to maint).
|
|
(merge 37a2e35395 sg/ci-brew-gcc-workaround later to maint).
|
|
(merge 24df0d49c4 js/trace2-signo-typofix later to maint).
|
|
(merge fbec05c210 cc/test-oidmap later to maint).
|
|
(merge 7926cee904 di/readme-markup-fix later to maint).
|
|
(merge 02638d1e11 vn/xmmap-gently later to maint).
|
|
(merge f7bf24d4dd rm/gpg-program-doc-fix later to maint).
|
|
(merge 3aef54e8b8 js/unmap-before-ext-diff later to maint).
|