2020-03-25 21:37:05 +01:00
|
|
|
Git 2.27 Release Notes
|
|
|
|
======================
|
|
|
|
|
|
|
|
Updates since v2.26
|
|
|
|
-------------------
|
|
|
|
|
2020-03-27 01:00:57 +01:00
|
|
|
Backward compatibility notes
|
|
|
|
|
|
|
|
* When "git describe C" finds that commit C is pointed by a signed or
|
|
|
|
annotated tag, which records T as its tagname in the object, the
|
|
|
|
command gives T as its answer. Even if the user renames or moves
|
|
|
|
such a tag from its natural location in the "refs/tags/" hierarchy,
|
|
|
|
"git describe C" would still give T as the answer, but in such a
|
|
|
|
case "git show T^0" would no longer work as expected. There may be
|
|
|
|
nothing at "refs/tags/T" or even worse there may be a different tag
|
|
|
|
instead.
|
|
|
|
|
|
|
|
Starting from this version, "git describe" will always use the
|
|
|
|
"long" version, as if the "--long" option were given, when giving
|
|
|
|
its output based on such a misplaced tag to work around the problem.
|
|
|
|
|
|
|
|
* "git pull" issues a warning message until the pull.rebase
|
|
|
|
configuration variable is explicitly given, which some existing
|
|
|
|
users may find annoying---those who prefer not to rebase need to
|
|
|
|
set the variable to false to squelch the warning.
|
|
|
|
|
|
|
|
|
2020-03-25 21:37:05 +01:00
|
|
|
UI, Workflows & Features
|
|
|
|
|
|
|
|
* A handful of options to configure SSL when talking to proxies have
|
|
|
|
been added.
|
|
|
|
|
2020-03-27 01:00:57 +01:00
|
|
|
* Smudge/clean conversion filters are now given more information
|
|
|
|
(e.g. the object of the tree-ish in which the blob being converted
|
|
|
|
appears, in addition to its path, which has already been given).
|
|
|
|
|
|
|
|
* When "git describe C" finds an annotated tag with tagname A to be
|
|
|
|
the best name to explain commit C, and the tag is stored in a
|
|
|
|
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
|
|
|
|
command gave a warning message but used A (not B) to describe C.
|
|
|
|
If C is exactly at the tag, the describe output would be "A", but
|
|
|
|
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
|
|
|
|
behavior of the command has been changed to use the "long" form
|
|
|
|
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
|
|
|
|
|
|
|
|
* "git pull" learned to warn when no pull.rebase configuration
|
|
|
|
exists, and neither --[no-]rebase nor --ff-only is given (which
|
|
|
|
would result a merge).
|
|
|
|
|
2020-04-22 22:42:29 +02:00
|
|
|
* "git p4" learned four new hooks and also "--no-verify" option to
|
|
|
|
bypass them (and the existing "p4-pre-submit" hook).
|
|
|
|
|
|
|
|
* "git pull" shares many options with underlying "git fetch", but
|
|
|
|
some of them were not documented and some of those that would make
|
|
|
|
sense to pass down were not passed down.
|
|
|
|
|
|
|
|
* "git rebase" learned the "--no-gpg-sign" option to countermand
|
|
|
|
commit.gpgSign the user may have.
|
|
|
|
|
|
|
|
* The output from "git format-patch" uses RFC 2047 encoding for
|
|
|
|
non-ASCII letters on From: and Subject: headers, so that it can
|
|
|
|
directly be fed to e-mail programs. A new option has been added
|
|
|
|
to produce these headers in raw.
|
|
|
|
|
|
|
|
* "git log" learned "--show-pulls" that helps pathspec limited
|
|
|
|
history views; a merge commit that takes the whole change from a
|
|
|
|
side branch, which is normally omitted from the output, is shown
|
|
|
|
in addition to the commits that introduce real changes.
|
|
|
|
|
|
|
|
* The interactive input from various codepaths are consolidated and
|
|
|
|
any prompt possibly issued earlier are fflush()ed before we read.
|
|
|
|
|
|
|
|
* Allow "git rebase" to reapply all local commits, even if the may be
|
|
|
|
already in the upstream, without checking first.
|
|
|
|
|
|
|
|
* The 'pack.useSparse' configuration variable now defaults to 'true',
|
|
|
|
enabling an optimization that has been experimental since Git 2.21.
|
|
|
|
|
2020-04-29 00:50:33 +02:00
|
|
|
* "git rebase" happens to call some hooks meant for "checkout" and
|
|
|
|
"commit" by this was not a designed behaviour than historical
|
|
|
|
accident. This has been documented.
|
|
|
|
|
2020-04-30 01:15:42 +02:00
|
|
|
* "git merge" learns the "--autostash" option.
|
|
|
|
|
|
|
|
* "sparse-checkout" UI improvements.
|
|
|
|
|
|
|
|
* "git update-ref --stdin" learned a handful of new verbs to let the
|
|
|
|
user control ref update transactions more explicitly, which helps
|
|
|
|
as an ingredient to implement two-phase commit-style atomic
|
|
|
|
ref-updates across multiple repositories.
|
|
|
|
|
2020-03-25 21:37:05 +01:00
|
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
|
|
|
|
* The advise API has been revamped to allow more systematic enumeration of
|
|
|
|
advice knobs in the future.
|
|
|
|
|
2020-03-27 01:00:57 +01:00
|
|
|
* SHA-256 transition continues.
|
|
|
|
|
|
|
|
* The code to interface with GnuPG has been refactored.
|
|
|
|
|
|
|
|
* "git stash" has kept an escape hatch to use the scripted version
|
|
|
|
for a few releases, which got stale. It has been removed.
|
|
|
|
|
2020-04-22 22:42:29 +02:00
|
|
|
* Enable tests that require GnuPG on Windows.
|
|
|
|
|
|
|
|
* Minor test usability improvement.
|
|
|
|
|
|
|
|
* Trace2 enhancement to allow logging of the environment variables.
|
|
|
|
|
|
|
|
* Test clean-up continues.
|
|
|
|
|
|
|
|
* Perf-test update.
|
|
|
|
|
|
|
|
* A Windows-specific test element has been made more robust against
|
|
|
|
misuse from both user's environment and programmer's errors.
|
|
|
|
|
2020-04-29 00:50:33 +02:00
|
|
|
* Various tests have been updated to work around issues found with
|
|
|
|
shell utilities that come with busybox etc.
|
|
|
|
|
|
|
|
* The config API made mixed uses of int and size_t types to represent
|
|
|
|
length of various pieces of text it parsed, which has been updated
|
|
|
|
to use the correct type (i.e. size_t) throughout.
|
|
|
|
|
|
|
|
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
|
|
|
|
log" takes have learned a companion configuration variable
|
|
|
|
log.excludeDecoration that sits at the lowest priority in the
|
|
|
|
family.
|
|
|
|
|
2020-04-30 01:15:42 +02:00
|
|
|
* A new CI job to build and run test suite on linux with musl libc
|
|
|
|
has been added.
|
|
|
|
|
|
|
|
* Update the CI configuration to use GitHub Actions, retiring the one
|
|
|
|
based on Azure Pipelines.
|
|
|
|
|
|
|
|
* The directory traversal code had redundant recursive calls which
|
|
|
|
made its performance characteristics exponential with respect to
|
|
|
|
the depth of the tree, which was corrected.
|
|
|
|
|
2020-03-25 21:37:05 +01:00
|
|
|
|
|
|
|
Fixes since v2.26
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
* The real_path() convenience function can easily be misused; with a
|
|
|
|
bit of code refactoring in the callers' side, its use has been
|
|
|
|
eliminated.
|
|
|
|
(merge 49d3c4b481 am/real-path-fix later to maint).
|
|
|
|
|
|
|
|
* Update "git p4" to work with Python 3.
|
|
|
|
(merge 6bb40ed20a yz/p4-py3 later to maint).
|
|
|
|
|
|
|
|
* The mechanism to prevent "git commit" from making an empty commit
|
|
|
|
or amending during an interrupted cherry-pick was broken during the
|
|
|
|
rewrite of "git rebase" in C, which has been corrected.
|
|
|
|
(merge 430b75f720 pw/advise-rebase-skip later to maint).
|
|
|
|
|
2020-03-27 01:00:57 +01:00
|
|
|
* Fix "git checkout --recurse-submodules" of a nested submodule
|
|
|
|
hierarchy.
|
|
|
|
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
|
|
|
|
|
|
|
|
* The "--fork-point" mode of "git rebase" regressed when the command
|
|
|
|
was rewritten in C back in 2.20 era, which has been corrected.
|
|
|
|
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
|
|
|
|
|
2020-04-22 22:42:29 +02:00
|
|
|
* The import-tars importer (in contrib/fast-import/) used to create
|
|
|
|
phony files at the top-level of the repository when the archive
|
|
|
|
contains global PAX headers, which made its own logic to detect and
|
|
|
|
omit the common leading directory ineffective, which has been
|
|
|
|
corrected.
|
|
|
|
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
|
|
|
|
|
|
|
|
* Simplify the commit ancestry connectedness check in a partial clone
|
|
|
|
repository in which "promised" objects are assumed to be obtainable
|
|
|
|
lazily on-demand from promisor remote repositories.
|
|
|
|
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
|
|
|
|
|
|
|
|
* The server-end of the v2 protocol to serve "git clone" and "git
|
|
|
|
fetch" was not prepared to see a delim packets at unexpected
|
|
|
|
places, which led to a crash.
|
|
|
|
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
|
|
|
|
|
|
|
|
* When fed a midx that records no objects, some codepaths tried to
|
|
|
|
loop from 0 through (num_objects-1), which, due to integer
|
|
|
|
arithmetic wrapping around, made it nonsense operation with out of
|
|
|
|
bounds array accesses. The code has been corrected to reject such
|
|
|
|
an midx file.
|
|
|
|
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
|
|
|
|
|
|
|
|
* Utitiles run via the run_command() API were not spawned correctly
|
|
|
|
on Cygwin, when the paths to them are given as a full path with
|
|
|
|
backslashes.
|
|
|
|
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
|
|
|
|
|
|
|
|
* "git pull --rebase" tried to run a rebase even after noticing that
|
|
|
|
the pull results in a fast-forward and no rebase is needed nor
|
|
|
|
sensible, for the past few years due to a mistake nobody noticed.
|
|
|
|
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
|
|
|
|
|
|
|
|
* "git rebase" with the merge backend did not work well when the
|
|
|
|
rebase.abbreviateCommands configuration was set.
|
|
|
|
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
|
|
|
|
|
|
|
|
* The logic to auto-follow tags by "git clone --single-branch" was
|
|
|
|
not careful to avoid lazy-fetching unnecessary tags, which has been
|
|
|
|
corrected.
|
|
|
|
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
|
|
|
|
|
|
|
|
* "git rebase -i" did not leave the reflog entries correctly.
|
|
|
|
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
|
|
|
|
|
|
|
|
* The more aggressive updates to remote-tracking branches we had for
|
|
|
|
the past 7 years or so were not reflected in the documentation,
|
|
|
|
which has been corrected.
|
|
|
|
(merge a44088435c pb/pull-fetch-doc later to maint).
|
|
|
|
|
|
|
|
* We've left the command line parsing of "git log :/a/b/" broken for
|
|
|
|
about a full year without anybody noticing, which has been
|
|
|
|
corrected.
|
|
|
|
(merge 0220461071 jc/missing-ref-store-fix later to maint).
|
|
|
|
|
|
|
|
* Misc fixes for Windows.
|
|
|
|
(merge 3efc128cd5 js/mingw-fixes later to maint).
|
|
|
|
|
|
|
|
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
|
|
|
|
the user to discard commits that are empty from the beginning (as
|
|
|
|
opposed to the ones that become empty because of rebasing). The
|
|
|
|
interactive rebase also marks commits that are empty in the todo.
|
|
|
|
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
|
|
|
|
|
|
|
|
* Parsing the host part out of URL for the credential helper has been corrected.
|
|
|
|
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
|
|
|
|
|
2020-04-29 00:50:33 +02:00
|
|
|
* Document the recommended way to abort a failing test early (e.g. by
|
|
|
|
exiting a loop), which is to say "return 1".
|
|
|
|
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
|
|
|
|
|
|
|
|
* The code that refreshes the last access and modified time of
|
|
|
|
on-disk packfiles and loose object files have been updated.
|
|
|
|
(merge 312cd76130 lr/freshen-file-fix later to maint).
|
|
|
|
|
|
|
|
* Validation of push certificate has been made more robust against
|
|
|
|
timing attacks.
|
|
|
|
(merge 719483e547 bc/constant-memequal later to maint).
|
|
|
|
|
|
|
|
* The custom hash function used by "git fast-import" has been
|
|
|
|
replaced with the one from hashmap.c, which gave us a nice
|
|
|
|
performance boost.
|
|
|
|
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
|
|
|
|
|
|
|
|
* The "git submodule" command did not initialize a few variables it
|
|
|
|
internally uses and was affected by variable settings leaked from
|
|
|
|
the environment.
|
|
|
|
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
|
|
|
|
|
|
|
|
* Raise the minimum required version of docbook-xsl package to 1.74,
|
|
|
|
as 1.74.0 was from late 2008, which is more than 10 years old, and
|
|
|
|
drop compatibility cruft from our documentation suite.
|
|
|
|
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
|
|
|
|
|
|
|
|
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
|
|
|
|
(merge 88acccda38 jc/log-no-mailmap later to maint).
|
|
|
|
|
|
|
|
* "git commit-graph write --expire-time=<timestamp>" did not use the
|
|
|
|
given timestamp correctly, which has been corrected.
|
|
|
|
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
|
|
|
|
|
|
|
|
* Tests update to use "test-chmtime" instead of "touch -t".
|
|
|
|
(merge e892a56845 ds/t5319-touch-fix later to maint).
|
|
|
|
|
|
|
|
* "git diff" in a partial clone learned to avoid lazy loading blob
|
|
|
|
objects in more casese when they are not needed.
|
|
|
|
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
|
|
|
|
|
|
|
|
* "git push --atomic" used to show failures for refs that weren't
|
|
|
|
even pushed, which has been corrected.
|
|
|
|
(merge dfe1b7f19c jx/atomic-push later to maint).
|
|
|
|
|
|
|
|
* Code in builtin/*, i.e. those can only be called from within
|
|
|
|
built-in subcommands, that implements bulk of a couple of
|
|
|
|
subcommands have been moved to libgit.a so that they could be used
|
|
|
|
by others.
|
|
|
|
(merge 9460fd48b5 dl/libify-a-few later to maint).
|
|
|
|
|
|
|
|
* Allowing the user to split a patch hunk while "git stash -p" does
|
|
|
|
not work well; a band-aid has been added to make this (partially)
|
|
|
|
work better.
|
|
|
|
|
|
|
|
* "git diff-tree --pretty --notes" used to hit an assertion failure,
|
|
|
|
as it forgot to initialize the notes subsystem.
|
|
|
|
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
|
|
|
|
|
|
|
|
* "git range-diff" fixes.
|
|
|
|
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
|
|
|
|
|
|
|
|
* "git grep" did not quote a path with unusual character like other
|
|
|
|
commands (like "git diff", "git status") do, but did quote when run
|
|
|
|
from a subdirectory, both of which has been corrected.
|
|
|
|
(merge 45115d8490 mt/grep-cquote-path later to maint).
|
|
|
|
|
|
|
|
* GNU/Hurd is also among the ones that need the fopen() wrapper.
|
|
|
|
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
|
|
|
|
|
|
|
|
* Those fetching over protocol v2 from linux-next and other kernel
|
|
|
|
repositories are reporting that v2 often fetches way too much than
|
|
|
|
needed.
|
|
|
|
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
|
|
|
|
|
2020-03-25 21:37:05 +01:00
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
|
|
(merge 564956f358 jc/maintain-doc later to maint).
|
|
|
|
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
|
|
|
|
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
|
|
|
|
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
|
|
|
|
(merge 8312aa7d74 jc/config-tar later to maint).
|
|
|
|
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
|
2020-04-22 22:42:29 +02:00
|
|
|
(merge 64d1022e14 ar/test-style-fixes later to maint).
|
|
|
|
(merge 4a465443a6 ds/doc-clone-filter later to maint).
|
|
|
|
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
|
|
|
|
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
|
|
|
|
(merge 2149b6748f bc/faq later to maint).
|
|
|
|
(merge 12dc0879f1 jk/test-cleanup later to maint).
|
|
|
|
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
|
|
|
|
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
|
|
|
|
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
|
|
|
|
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
|
|
|
|
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
|
|
|
|
(merge a1aba0c95c js/t0007-typofix later to maint).
|
|
|
|
(merge 76ba7fa225 ma/config-doc-fix later to maint).
|
2020-04-29 00:50:33 +02:00
|
|
|
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
|
|
|
|
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
|
|
|
|
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
|
|
|
|
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
|