Commit d62dad7a authored by Junio C Hamano's avatar Junio C Hamano

Git 2.21-rc0

Signed-off-by: default avatarJunio C Hamano <>
parent 9293bf6f
......@@ -4,6 +4,14 @@ Git 2.21 Release Notes
Backward Compatibility Notes
* Historically, the "-m" (mainline) option can only be used for "git
cherry-pick" and "git revert" when working with a merge commit.
This version of Git no longer warns or errors out when working with
a single-parent commit, as long as the argument to the "-m" option
is 1 (i.e. it has only one parent, and the request is to pick or
revert relative to that first parent). Scripts that relied on the
behaviour may get broken with this change.
Updates since v2.20
......@@ -11,11 +19,11 @@ Updates since v2.20
UI, Workflows & Features
* The "http.version" configuration variable can be used with recent
enough cURL library to force the version of HTTP used to talk when
fetching and pushing.
enough versions of cURL library to force the version of HTTP used
to talk when fetching and pushing.
* Small fixes and features for fast-export and fast-import, mostly on
the fast-export side.
the fast-export side has been made.
* "git push $there $src:$dst" rejects when $dst is not a fully
qualified refname and not clear what the end user meant. The
......@@ -62,13 +70,23 @@ UI, Workflows & Features
* "git instaweb" learned to drive http.server that comes with
"batteries included" Python installation (both Python2 & 3).
* A new encoding UTF-16LE-BOM has been invented to force encoding to
UTF-16 with BOM in little endian byte order, which cannot be directly
generated by using iconv.
* A new date format "--date=human" that morphs its output depending
on how far the time is from the current time has been introduced.
"--date=auto" can be used to use this new format when the output is
going to the pager or to the terminal and otherwise the default
Performance, Internal Implementation, Development Support etc.
* Code clean-up with optimization for the codepath that checks
(non-)existence of loose objects.
* More codepaths become aware of working with in-core repository
* More codepaths have become aware of working with in-core repository
instance other than the default "the_repository".
* The "strncat()" function is now among the banned functions.
......@@ -86,7 +104,6 @@ Performance, Internal Implementation, Development Support etc.
* Flaky tests can now be repeatedly run under load with the
"--stress" option.
(merge fb7d1e3ac8 sg/stress-test later to maint).
* Documentation/Makefile is getting prepared for manpage
......@@ -124,6 +141,39 @@ Performance, Internal Implementation, Development Support etc.
* Cocci rules have been updated to encourage use of strbuf_addbuf().
* "git rebase --merge" has been reimplemented by reusing the internal
machinery used for "git rebase -i".
* More code in "git bisect" has been rewritten in C.
* Instead of going through "git-rebase--am" scriptlet to use the "am"
backend, the built-in version of "git rebase" learned to drive the
"am" backend directly.
* The assumption to work on the single "in-core index" instance has
been reduced from the library-ish part of the codebase.
* The test lint learned to catch non-portable "sed" options.
* "git pack-objects" learned another algorithm to compute the set of
objects to send, that trades the resulting packfile off to save
traversal cost to favor small pushes.
* The travis CI scripts have been corrected to build Git with the
compiler(s) of our choice.
* "git submodule update" learned to abort early when core.worktree
for the submodule is not set correctly to prevent spreading damage.
* Test suite has been adjusted to run on Azure Pipeline.
* Running "Documentation/doc-diff x" from anywhere other than the
top-level of the working tree did not show the usage string
correctly, which has been fixed.
* Use of the sparse tool got easier to customize from the command
line to help developers.
Fixes since v2.20
......@@ -265,7 +315,7 @@ Fixes since v2.20
* "git add --ignore-errors" did not work as advertised and instead
worked as an unintended synonym for "git add --renormalize", which
has been fixed.
(merge 9e5da3d055 jk/add-ignore-errors-bit-assignment-fix later to maint).
(merge e2c2a37545 jk/add-ignore-errors-bit-assignment-fix later to maint).
* On a case-insensitive filesystem, we failed to compare the part of
the path that is above the worktree directory in an absolute
......@@ -309,6 +359,50 @@ Fixes since v2.20
* "git fetch" output cleanup.
(merge dc40b24df4 nd/fetch-compact-update later to maint).
* "git cat-file --batch" reported a dangling symbolic link by
mistake, when it wanted to report that a given name is ambiguous.
* Documentation around core.crlf has been updated.
(merge c9446f0504 jk/autocrlf-overrides-eol-doc later to maint).
* The documentation of "git commit-tree" said that the command
understands "--gpg-sign" in addition to "-S", but the command line
parser did not know about the longhand, which has been corrected.
* "git rebase -x $cmd" did not reject multi-line command, even though
the command is incapable of handling such a command. It now is
rejected upfront.
(merge c762aada1a pw/rebase-x-sanity-check later to maint).
* Output from "git help" was not correctly aligned, which has been
(merge 6195a76da4 nd/help-align-command-desc later to maint).
* The "git submodule summary" subcommand showed shortened commit
object names by mechanically truncating them at 7-hexdigit, which
has been improved to let "rev-parse --short" scale the length of
the abbreviation with the size of the repository.
(merge 0586a438f6 sh/submodule-summary-abbrev-fix later to maint).
* The way the OSX build jobs updates its build environment used the
"--quiet" option to "brew update" command, but it wasn't all that
quiet to be useful. The use of the option has been replaced with
an explicit redirection to the /dev/null (which incidentally would
have worked around a breakage by recent updates to homebrew, which
has fixed itself already).
(merge a1ccaedd62 sg/travis-osx-brew-breakage-workaround later to maint).
* "git --work-tree=$there --git-dir=$here describe --dirty" did not
work correctly as it did not pay attention to the location of the
worktree specified by the user by mistake, which has been
(merge c801170b0c ss/describe-dirty-in-the-right-directory later to maint).
* "git fetch" over protocol v2 that needs to make a second connection
to backfill tags did not clear a variable that holds shallow
repository information correctly, leading to an access of freed
piece of memory.
* Code cleanup, docfix, build fix, etc.
(merge 89ba9a79ae hb/t0061-dot-in-path-fix later to maint).
(merge d173e799ea sb/diff-color-moved-config-option-fixup later to maint).
......@@ -325,8 +419,11 @@ Fixes since v2.20
(merge 0650614982 cy/completion-typofix later to maint).
(merge 6881925ef5 rs/sha1-file-close-mapped-file-on-error later to maint).
(merge bd8d6f0def en/show-ref-doc-fix later to maint).
(merge 1747125e2c cc/parial-clone-doc-typofix later to maint).
(merge 1747125e2c cc/partial-clone-doc-typofix later to maint).
(merge e01378753d cc/fetch-error-message-fix later to maint).
(merge 54e8c11215 jk/remote-insteadof-cleanup later to maint).
(merge d609615f48 js/test-git-installed later to maint).
(merge ba170517be ja/doc-style-fix later to maint).
(merge 86fb1c4e77 km/init-doc-typofix later to maint).
(merge 5cfd4a9d10 nd/commit-doc later to maint).
(merge 9fce19a431 ab/diff-tree-doc-fix later to maint).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment