399 lines
17 KiB
Text
399 lines
17 KiB
Text
|
Git 2.24 Release Notes
|
||
|
======================
|
||
|
|
||
|
Updates since v2.23
|
||
|
-------------------
|
||
|
|
||
|
Backward compatibility note
|
||
|
|
||
|
* "filter-branch" is showing its age and alternatives are available.
|
||
|
From this release, we started to discourage its use and hint
|
||
|
people about filter-repo.
|
||
|
|
||
|
UI, Workflows & Features
|
||
|
|
||
|
* We now have an active interim maintainer for the Git-Gui part of
|
||
|
the system. Praise and thank Pratyush Yadav for volunteering.
|
||
|
|
||
|
* The command line parser learned "--end-of-options" notation; the
|
||
|
standard convention for scripters to have hardcoded set of options
|
||
|
first on the command line, and force the command to treat end-user
|
||
|
input as non-options, has been to use "--" as the delimiter, but
|
||
|
that would not work for commands that use "--" as a delimiter
|
||
|
between revs and pathspec.
|
||
|
|
||
|
* A mechanism to affect the default setting for a (related) group of
|
||
|
configuration variables is introduced.
|
||
|
|
||
|
* "git fetch" learned "--set-upstream" option to help those who first
|
||
|
clone from their private fork they intend to push to, add the true
|
||
|
upstream via "git remote add" and then "git fetch" from it.
|
||
|
|
||
|
* Device-tree files learned their own userdiff patterns.
|
||
|
(merge 3c81760bc6 sb/userdiff-dts later to maint).
|
||
|
|
||
|
* "git rebase --rebase-merges" learned to drive different merge
|
||
|
strategies and pass strategy specific options to them.
|
||
|
|
||
|
* A new "pre-merge-commit" hook has been introduced.
|
||
|
|
||
|
* Command line completion updates for "git -c var.name=val" have been
|
||
|
added.
|
||
|
|
||
|
* The lazy clone machinery has been taught that there can be more
|
||
|
than one promisor remote and consult them in order when downloading
|
||
|
missing objects on demand.
|
||
|
|
||
|
* The list-objects-filter API (used to create a sparse/lazy clone)
|
||
|
learned to take a combined filter specification.
|
||
|
|
||
|
* The documentation and tests for "git format-patch" have been
|
||
|
cleaned up.
|
||
|
|
||
|
* On Windows, the root level of UNC share is now allowed to be used
|
||
|
just like any other directory.
|
||
|
|
||
|
* The command line completion support (in contrib/) learned about the
|
||
|
"--skip" option of "git revert" and "git cherry-pick".
|
||
|
|
||
|
* "git rebase --keep-base <upstream>" tries to find the original base
|
||
|
of the topic being rebased and rebase on top of that same base,
|
||
|
which is useful when running the "git rebase -i" (and its limited
|
||
|
variant "git rebase -x").
|
||
|
|
||
|
The command also has learned to fast-forward in more cases where it
|
||
|
can instead of replaying to recreate identical commits.
|
||
|
|
||
|
* A configuration variable tells "git fetch" to write the commit
|
||
|
graph after finishing.
|
||
|
|
||
|
* "git add -i" has been taught to show the total number of hunks and
|
||
|
the hunks that has been processed so far when showing prompts.
|
||
|
|
||
|
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
|
||
|
submodules, but this did not apply to "git fetch --multiple" that
|
||
|
fetches from multiple remote repositories. It now does.
|
||
|
|
||
|
* The installation instruction for zsh completion script (in
|
||
|
contrib/) has been a bit improved.
|
||
|
|
||
|
|
||
|
Performance, Internal Implementation, Development Support etc.
|
||
|
|
||
|
* The code to write commit-graph over given commit object names has
|
||
|
been made a bit more robust.
|
||
|
|
||
|
* The first line of verbose output from each test piece now carries
|
||
|
the test name and number to help scanning with eyeballs.
|
||
|
|
||
|
* Further clean-up of the initialization code.
|
||
|
|
||
|
* xmalloc() used to have a mechanism to ditch memory and address
|
||
|
space resources as the last resort upon seeing an allocation
|
||
|
failure from the underlying malloc(), which made the code complex
|
||
|
and thread-unsafe with dubious benefit, as major memory resource
|
||
|
users already do limit their uses with various other mechanisms.
|
||
|
It has been simplified away.
|
||
|
|
||
|
* Unnecessary full-tree diff in "git log -L" machinery has been
|
||
|
optimized away.
|
||
|
|
||
|
* The http transport lacked some optimization the native transports
|
||
|
learned to avoid unnecessary ref advertisement, which has been
|
||
|
corrected.
|
||
|
|
||
|
* Preparation for SHA-256 upgrade continues in the test department.
|
||
|
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
|
||
|
|
||
|
* The memory ownership model of the "git fast-import" got
|
||
|
straightened out.
|
||
|
|
||
|
* Output from trace2 subsystem is formatted more prettily now.
|
||
|
|
||
|
* The internal code originally invented for ".gitignore" processing
|
||
|
got reshuffled and renamed to make it less tied to "excluding" and
|
||
|
stress more that it is about "matching", as it has been reused for
|
||
|
things like sparse checkout specification that want to check if a
|
||
|
path is "included".
|
||
|
|
||
|
* "git stash" learned to write refreshed index back to disk.
|
||
|
|
||
|
* Coccinelle checks are done on more source files than before now.
|
||
|
|
||
|
* The cache-tree code has been taught to be less aggressive in
|
||
|
attempting to see if a tree object it computed already exists in
|
||
|
the repository.
|
||
|
|
||
|
* The code to parse and use the commit-graph file has been made more
|
||
|
robust against corrupted input.
|
||
|
|
||
|
* The hg-to-git script (in contrib/) has been updated to work with
|
||
|
Python 3.
|
||
|
|
||
|
* Update the way build artifacts in t/helper/ directory are ignored.
|
||
|
|
||
|
* Preparation for SHA-256 upgrade continues.
|
||
|
|
||
|
* "git log --graph" for an octopus merge is sometimes colored
|
||
|
incorrectly, which is demonstrated and documented but not yet
|
||
|
fixed.
|
||
|
|
||
|
* The trace2 output, when sending them to files in a designated
|
||
|
directory, can populate the directory with too many files; a
|
||
|
mechanism is introduced to set the maximum number of files and
|
||
|
discard further logs when the maximum is reached.
|
||
|
|
||
|
* We have adopted a Code-of-conduct document.
|
||
|
(merge 3f9ef874a7 jk/coc later to maint).
|
||
|
|
||
|
|
||
|
Fixes since v2.23
|
||
|
-----------------
|
||
|
|
||
|
* "git grep --recurse-submodules" that looks at the working tree
|
||
|
files looked at the contents in the index in submodules, instead of
|
||
|
files in the working tree.
|
||
|
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
|
||
|
|
||
|
* Codepaths to walk tree objects have been audited for integer
|
||
|
overflows and hardened.
|
||
|
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
|
||
|
|
||
|
* "git pack-refs" can lose refs that are created while running, which
|
||
|
is getting corrected.
|
||
|
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
|
||
|
|
||
|
* "git checkout" and "git restore" to re-populate the index from a
|
||
|
tree-ish (typically HEAD) did not work correctly for a path that
|
||
|
was removed and then added again with the intent-to-add bit, when
|
||
|
the corresponding working tree file was empty. This has been
|
||
|
corrected.
|
||
|
|
||
|
* Compilation fix.
|
||
|
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
|
||
|
|
||
|
* "git gui" learned to call the clean-up procedure before exiting.
|
||
|
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
|
||
|
|
||
|
* We promoted the "indent heuristics" that decides where to split
|
||
|
diff hunks from experimental to the default a few years ago, but
|
||
|
some stale documentation still marked it as experimental, which has
|
||
|
been corrected.
|
||
|
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
|
||
|
|
||
|
* Fix a mismerge that happened in 2.22 timeframe.
|
||
|
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
|
||
|
|
||
|
* "git archive" recorded incorrect length in extended pax header in
|
||
|
some corner cases, which has been corrected.
|
||
|
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
|
||
|
|
||
|
* On-demand object fetching in lazy clone incorrectly tried to fetch
|
||
|
commits from submodule projects, while still working in the
|
||
|
superproject, which has been corrected.
|
||
|
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
|
||
|
|
||
|
* Prepare get_short_oid() codepath to be thread-safe.
|
||
|
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
|
||
|
|
||
|
* "for-each-ref" and friends that show refs did not protect themselves
|
||
|
against ancient tags that did not record tagger names when asked to
|
||
|
show "%(taggername)", which have been corrected.
|
||
|
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
|
||
|
|
||
|
* The "git am" based backend of "git rebase" ignored the result of
|
||
|
updating ".gitattributes" done in one step when replaying
|
||
|
subsequent steps.
|
||
|
(merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
|
||
|
|
||
|
* Tell cURL library to use the same malloc() implementation, with the
|
||
|
xmalloc() wrapper, as the rest of the system, for consistency.
|
||
|
(merge 93b980e58f cb/curl-use-xmalloc later to maint).
|
||
|
|
||
|
* Build fix to adjust .gitignore to unignore a path that we started to track.
|
||
|
(merge aac6ff7b5b js/visual-studio later to maint).
|
||
|
|
||
|
* A few implementation fixes in the notes API.
|
||
|
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
|
||
|
|
||
|
* Fix an earlier regression to "git push --all" which should have
|
||
|
been forbidden when the target remote repository is set to be a
|
||
|
mirror.
|
||
|
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
|
||
|
|
||
|
* Fix an earlier regression in the test suite, which mistakenly
|
||
|
stopped running HTTPD tests.
|
||
|
(merge 3960290675 sg/git-test-boolean later to maint).
|
||
|
|
||
|
* "git rebase --autostash <upstream> <branch>", when <branch> is
|
||
|
different from the current branch, incorrectly moved the tip of the
|
||
|
current branch, which has been corrected.
|
||
|
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
|
||
|
|
||
|
* Update support for Asciidoctor documentation toolchain.
|
||
|
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
|
||
|
|
||
|
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
|
||
|
no longer works with the older one.
|
||
|
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
|
||
|
|
||
|
* The markup used in user-manual has been updated to work better with
|
||
|
asciidoctor.
|
||
|
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
|
||
|
|
||
|
* Make sure the grep machinery does not abort when seeing a payload
|
||
|
that is not UTF-8 even when JIT is not in use with PCRE1.
|
||
|
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
|
||
|
|
||
|
* The name of the blob object that stores the filter specification
|
||
|
for sparse cloning/fetching was interpreted in a wrong place in the
|
||
|
code, causing Git to abort.
|
||
|
|
||
|
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
|
||
|
overruled when the "--simplify-by-decoration" option is used, which
|
||
|
has been corrected.
|
||
|
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
|
||
|
|
||
|
* The "upload-pack" (the counterpart of "git fetch") needs to disable
|
||
|
commit-graph when responding to a shallow clone/fetch request, but
|
||
|
the way this was done made Git panic, which has been corrected.
|
||
|
|
||
|
* The object traversal machinery has been optimized not to load tree
|
||
|
objects when we are only interested in commit history.
|
||
|
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
|
||
|
|
||
|
* The object name parser for "Nth parent" syntax has been made more
|
||
|
robust against integer overflows.
|
||
|
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
|
||
|
|
||
|
* The code used in following tags in "git fetch" has been optimized.
|
||
|
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
|
||
|
|
||
|
* Regression fix for progress output.
|
||
|
(merge 2bb74b53a4 sg/progress-fix later to maint).
|
||
|
|
||
|
* A bug in merge-recursive code that triggers when a branch with a
|
||
|
symbolic link is merged with a branch that replaces it with a
|
||
|
directory has been fixed.
|
||
|
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
|
||
|
|
||
|
* The rename detection logic sorts a list of rename source candidates
|
||
|
by similarity to pick the best candidate, which means that a tie
|
||
|
between sources with the same similarity is broken by the original
|
||
|
location in the original candidate list (which is sorted by path).
|
||
|
Force the sorting by similarity done with a stable sort, which is
|
||
|
not promised by system supplied qsort(3), to ensure consistent
|
||
|
results across platforms.
|
||
|
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
|
||
|
|
||
|
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
|
||
|
message, did not work correctly when the prefix was "UTF", which
|
||
|
has been fixed.
|
||
|
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
|
||
|
|
||
|
* The author names taken from SVN repositories may have extra leading
|
||
|
or trailing whitespaces, which are now munged away.
|
||
|
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
|
||
|
|
||
|
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
|
||
|
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
|
||
|
|
||
|
* A few simplification and bugfixes to PCRE interface.
|
||
|
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
|
||
|
|
||
|
* PCRE fixes.
|
||
|
(merge ff61681b46 cb/pcre1-cleanup later to maint).
|
||
|
|
||
|
* "git range-diff" segfaulted when diff.noprefix configuration was
|
||
|
used, as it blindly expected the patch it internally generates to
|
||
|
have the standard a/ and b/ prefixes. The command now forces the
|
||
|
internal patch to be built without any prefix, not to be affected
|
||
|
by any end-user configuration.
|
||
|
(merge 937b76ed49 js/range-diff-noprefix later to maint).
|
||
|
|
||
|
* "git stash apply" in a subdirectory of a secondary worktree failed
|
||
|
to access the worktree correctly, which has been corrected.
|
||
|
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
|
||
|
|
||
|
* The merge-recursive machinery is one of the most complex parts of
|
||
|
the system that accumulated cruft over time. This large series
|
||
|
cleans up the implementation quite a bit.
|
||
|
(merge b657047719 en/merge-recursive-cleanup later to maint).
|
||
|
|
||
|
* Pretty-printed command line formatter (used in e.g. reporting the
|
||
|
command being run by the tracing API) had a bug that lost an
|
||
|
argument that is an empty string, which has been corrected.
|
||
|
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
|
||
|
|
||
|
* "git range-diff" failed to handle mode-only change, which has been
|
||
|
corrected.
|
||
|
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
|
||
|
|
||
|
* Dev support update.
|
||
|
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
|
||
|
|
||
|
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
|
||
|
not "mkdir -p <outdir>", which was corrected.
|
||
|
|
||
|
* "git stash save" lost local changes to submodules, which has been
|
||
|
corrected.
|
||
|
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).
|
||
|
|
||
|
* The atomic push over smart HTTP transport did not work, which has
|
||
|
been corrected.
|
||
|
(merge 6f1194246a bc/smart-http-atomic-push later to maint).
|
||
|
|
||
|
* Other code cleanup, docfix, build fix, etc.
|
||
|
(merge d1387d3895 en/fast-import-merge-doc later to maint).
|
||
|
(merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
|
||
|
(merge 415b770b88 ds/midx-expire-repack later to maint).
|
||
|
(merge 19800bdc3f nd/diff-parseopt later to maint).
|
||
|
(merge 58166c2e9d tg/t0021-racefix later to maint).
|
||
|
(merge 7027f508c7 dl/compat-cleanup later to maint).
|
||
|
(merge e770fbfeff jc/test-cleanup later to maint).
|
||
|
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
|
||
|
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
|
||
|
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
|
||
|
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
|
||
|
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
|
||
|
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
|
||
|
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
|
||
|
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
|
||
|
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
|
||
|
(merge 47b27c96fa ss/get-time-cleanup later to maint).
|
||
|
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
|
||
|
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
|
||
|
(merge 40e747e89d dl/submodule-set-branch later to maint).
|
||
|
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
|
||
|
(merge 0eb7c37a8a js/doc-patch-text later to maint).
|
||
|
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
|
||
|
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
|
||
|
(merge af78249463 cc/svn-fe-py-shebang later to maint).
|
||
|
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
|
||
|
(merge c46ebc2496 sg/travis-help-debug later to maint).
|
||
|
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
|
||
|
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
|
||
|
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
|
||
|
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
|
||
|
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
|
||
|
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
|
||
|
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
|
||
|
(merge 53d687bf5f ah/cleanups later to maint).
|
||
|
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
|
||
|
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
|
||
|
(merge d928a8388a am/t0028-utf16-tests later to maint).
|
||
|
(merge b05b40930e dl/t0000-skip-test-test later to maint).
|
||
|
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
|
||
|
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
|
||
|
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
|
||
|
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
|
||
|
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
|
||
|
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
|
||
|
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
|
||
|
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
|
||
|
(merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
|
||
|
(merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
|
||
|
(merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
|
||
|
(merge 60e6569a12 js/mingw-needs-hiding-fix later to maint).
|
||
|
(merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint).
|