You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
341 lines
14 KiB
341 lines
14 KiB
Git 2.26 Release Notes |
|
====================== |
|
|
|
Updates since v2.25 |
|
------------------- |
|
|
|
Backward compatibility notes |
|
|
|
* "git rebase" uses a different backend that is based on the 'merge' |
|
machinery by default. There are a few known differences in the |
|
behaviour from the traditional machinery based on patch+apply. |
|
|
|
If your workflow is negatively affected by this change, please |
|
report it to git@vger.kernel.org so that we can take a look into |
|
it. After doing so, you can set the 'rebase.backend' configuration |
|
variable to 'apply', in order to use the old default behaviour in |
|
the meantime. |
|
|
|
|
|
UI, Workflows & Features |
|
|
|
* Sample credential helper for using .netrc has been updated to work |
|
out of the box. |
|
|
|
* gpg.minTrustLevel configuration variable has been introduced to |
|
tell various signature verification codepaths the required minimum |
|
trust level. |
|
|
|
* The command line completion (in contrib/) learned to complete |
|
subcommands and arguments to "git worktree". |
|
|
|
* Disambiguation logic to tell revisions and pathspec apart has been |
|
tweaked so that backslash-escaped glob special characters do not |
|
count in the "wildcards are pathspec" rule. |
|
|
|
* One effect of specifying where the GIT_DIR is (either with the |
|
environment variable, or with the "git --git-dir=<where> cmd" |
|
option) is to disable the repository discovery. This has been |
|
placed a bit more stress in the documentation, as new users often |
|
get confused. |
|
|
|
* Two help messages given when "git add" notices the user gave it |
|
nothing to add have been updated to use advise() API. |
|
|
|
* A new version of fsmonitor-watchman hook has been introduced, to |
|
avoid races. |
|
|
|
* "git config" learned to show in which "scope", in addition to in |
|
which file, each config setting comes from. |
|
|
|
* The basic 7 colors learned the brighter counterparts |
|
(e.g. "brightred"). |
|
|
|
* "git sparse-checkout" learned a new "add" subcommand. |
|
|
|
* A configuration element used for credential subsystem can now use |
|
wildcard pattern to specify for which set of URLs the entry |
|
applies. |
|
|
|
* "git clone --recurse-submodules --single-branch" now uses the same |
|
single-branch option when cloning the submodules. |
|
|
|
* "git rm" and "git stash" learns the new "--pathspec-from-file" |
|
option. |
|
|
|
* "git am --show-current-patch" is a way to show the piece of e-mail |
|
for the stopped step, which is not suitable to directly feed "git |
|
apply" (it is designed to be a good "git am" input). It learned a |
|
new option to show only the patch part. |
|
|
|
* Handling of conflicting renames in merge-recursive have further |
|
been made consistent with how existing codepaths try to mimic what |
|
is done to add/add conflicts. |
|
|
|
|
|
Performance, Internal Implementation, Development Support etc. |
|
|
|
* Tell .editorconfig that in this project, *.txt files are indented |
|
with tabs. |
|
|
|
* The test-lint machinery knew to check "VAR=VAL shell_function" |
|
construct, but did not check "VAR= shell_function", which has been |
|
corrected. |
|
|
|
* Replace "git config --bool" calls with "git config --type=bool" in |
|
sample templates. |
|
|
|
* The effort to move "git-add--interactive" to C continues. |
|
|
|
* Improve error message generation for "git submodule add". |
|
|
|
* Preparation of test scripts for the day when the object names will |
|
use SHA-256 continues. |
|
|
|
* Warn programmers about pretend_object_file() that allows the code |
|
to tentatively use in-core objects. |
|
|
|
* The way "git pack-objects" reuses objects stored in existing pack |
|
to generate its result has been improved. |
|
|
|
* The transport protocol version 2 becomes the default one. |
|
|
|
* Traditionally, we avoided threaded grep while searching in objects |
|
(as opposed to files in the working tree) as accesses to the object |
|
layer is not thread-safe. This limitation is getting lifted. |
|
|
|
* "git rebase -i" (and friends) used to unnecessarily check out the |
|
tip of the branch to be rebased, which has been corrected. |
|
|
|
* A low-level API function get_oid(), that accepts various ways to |
|
name an object, used to issue end-user facing error messages |
|
without l10n, which has been updated to be translatable. |
|
|
|
* Unneeded connectivity check is now disabled in a partial clone when |
|
fetching into it. |
|
|
|
* Some rough edges in the sparse-checkout feature, especially around |
|
the cone mode, have been cleaned up. |
|
|
|
* The diff-* plumbing family of subcommands now pay attention to the |
|
diff.wsErrorHighlight configuration, which has been ignored before; |
|
this allows "git add -p" to also show the whitespace problems to |
|
the end user. |
|
|
|
* Some codepaths were given a repository instance as a parameter to |
|
work in the repository, but passed the_repository instance to its |
|
callees, which has been cleaned up (somewhat). |
|
|
|
* Memory footprint and performance of "git name-rev" has been |
|
improved. |
|
|
|
* The object reachability bitmap machinery and the partial cloning |
|
machinery were not prepared to work well together, because some |
|
object-filtering criteria that partial clones use inherently rely |
|
on object traversal, but the bitmap machinery is an optimization |
|
to bypass that object traversal. There however are some cases |
|
where they can work together, and they were taught about them. |
|
|
|
* "git rebase" has learned to use the merge backend (i.e. the |
|
machinery that drives "rebase -i") by default, while allowing |
|
"--apply" option to use the "apply" backend (e.g. the moral |
|
equivalent of "format-patch piped to am"). The rebase.backend |
|
configuration variable can be set to customize. |
|
|
|
* Underlying machinery of "git bisect--helper" is being refactored |
|
into pieces that are more easily reused. |
|
|
|
|
|
Fixes since v2.25 |
|
----------------- |
|
|
|
* "git commit" gives output similar to "git status" when there is |
|
nothing to commit, but without honoring the advise.statusHints |
|
configuration variable, which has been corrected. |
|
|
|
* has_object_file() said "no" given an object registered to the |
|
system via pretend_object_file(), making it inconsistent with |
|
read_object_file(), causing lazy fetch to attempt fetching an |
|
empty tree from promisor remotes. |
|
|
|
* Complete an update to tutorial that encourages "git switch" over |
|
"git checkout" that was done only half-way. |
|
|
|
* C pedantry ;-) fix. |
|
|
|
* The code that tries to skip over the entries for the paths in a |
|
single directory using the cache-tree was not careful enough |
|
against corrupt index file. |
|
|
|
* Reduce unnecessary round-trip when running "ls-remote" over the |
|
stateless RPC mechanism. |
|
|
|
* "git restore --staged" did not correctly update the cache-tree |
|
structure, resulting in bogus trees to be written afterwards, which |
|
has been corrected. |
|
|
|
* The code recently added to move to the entry beyond the ones in the |
|
same directory in the index in the sparse-cone mode did not count |
|
the number of entries to skip over incorrectly, which has been |
|
corrected. |
|
|
|
* Rendering by "git log --graph" of ancestry lines leading to a merge |
|
commit were made suboptimal to waste vertical space a bit with a |
|
recent update, which has been corrected. |
|
|
|
* Work around test breakages caused by custom regex engine used in |
|
libasan, when address sanitizer is used with more recent versions |
|
of gcc and clang. |
|
|
|
* Minor bugfixes to "git add -i" that has recently been rewritten in C. |
|
|
|
* "git fetch --refmap=" option has got a better documentation. |
|
|
|
* "git checkout X" did not correctly fail when X is not a local |
|
branch but could name more than one remote-tracking branches |
|
(i.e. to be dwimmed as the starting point to create a corresponding |
|
local branch), which has been corrected. |
|
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint). |
|
|
|
* Corner case bugs in "git clean" that stems from a (necessarily for |
|
performance reasons) awkward calling convention in the directory |
|
enumeration API has been corrected. |
|
|
|
* A fetch that is told to recursively fetch updates in submodules |
|
inevitably produces reams of output, and it becomes hard to spot |
|
error messages. The command has been taught to enumerate |
|
submodules that had errors at the end of the operation. |
|
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint). |
|
|
|
* The "--recurse-submodules" option of various subcommands did not |
|
work well when run in an alternate worktree, which has been |
|
corrected. |
|
|
|
* Futureproofing a test not to depend on the current implementation |
|
detail. |
|
|
|
* Running "git rm" on a submodule failed unnecessarily when |
|
.gitmodules is only cache-dirty, which has been corrected. |
|
|
|
* C pedantry ;-) fix. |
|
|
|
* "git grep --no-index" should not get affected by the contents of |
|
the .gitmodules file but when "--recurse-submodules" is given or |
|
the "submodule.recurse" variable is set, it did. Now these |
|
settings are ignored in the "--no-index" mode. |
|
|
|
* Technical details of the bundle format has been documented. |
|
|
|
* Unhelpful warning messages during documentation build have been squelched. |
|
|
|
* "git rebase -i" identifies existing commits in its todo file with |
|
their abbreviated object name, which could become ambiguous as it |
|
goes to create new commits, and has a mechanism to avoid ambiguity |
|
in the main part of its execution. A few other cases however were |
|
not covered by the protection against ambiguity, which has been |
|
corrected. |
|
|
|
* Allow the rebase.missingCommitsCheck configuration to kick in when |
|
"rebase --edit-todo" and "rebase --continue" restarts the procedure. |
|
(merge 5a5445d878 ag/edit-todo-drop-check later to maint). |
|
|
|
* The way "git submodule status" reports an initialized but not yet |
|
populated submodule has not been reimplemented correctly when a |
|
part of the "git submodule" command was rewritten in C, which has |
|
been corrected. |
|
(merge f38c92452d pk/status-of-uncloned-submodule later to maint). |
|
|
|
* The code to automatically shrink the fan-out in the notes tree had |
|
an off-by-one bug, which has been killed. |
|
|
|
* The index-pack code now diagnoses a bad input packstream that |
|
records the same object twice when it is used as delta base; the |
|
code used to declare a software bug when encountering such an |
|
input, but it is an input error. |
|
|
|
|
|
* The code to compute the commit-graph has been taught to use a more |
|
robust way to tell if two object directories refer to the same |
|
thing. |
|
(merge a7df60cac8 tb/commit-graph-object-dir later to maint). |
|
|
|
* "git remote rename X Y" needs to adjust configuration variables |
|
(e.g. branch.<name>.remote) whose value used to be X to Y. |
|
branch.<name>.pushRemote is now also updated. |
|
|
|
* Update to doc-diff. |
|
|
|
* Doc markup fix. |
|
|
|
* "git check-ignore" did not work when the given path is explicitly |
|
marked as not ignored with a negative entry in the .gitignore file. |
|
|
|
* The merge-recursive machinery failed to refresh the cache entry for |
|
a merge result in a couple of places, resulting in an unnecessary |
|
merge failure, which has been fixed. |
|
|
|
* Fix for a bug revealed by a recent change to make the protocol v2 |
|
the default. |
|
|
|
* In rare cases "git worktree add <path>" could think that <path> |
|
was already a registered worktree even when it wasn't and refuse |
|
to add the new worktree. This has been corrected. |
|
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint). |
|
|
|
* "git push" should stop from updating a branch that is checked out |
|
when receive.denyCurrentBranch configuration is set, but it failed |
|
to pay attention to checkouts in secondary worktrees. This has |
|
been corrected. |
|
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint). |
|
|
|
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and |
|
checked it out, even when the BRANCH is checked out in a different |
|
worktree. This has been corrected. |
|
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint). |
|
|
|
* "git describe" in a repository with multiple root commits sometimes |
|
gave up looking for the best tag to describe a given commit with |
|
too early, which has been adjusted. |
|
|
|
* "git merge signed-tag" while lacking the public key started to say |
|
"No signature", which was utterly wrong. This regression has been |
|
reverted. |
|
|
|
* MinGW's poll() emulation has been improved. |
|
|
|
* "git show" and others gave an object name in raw format in its |
|
error output, which has been corrected to give it in hex. |
|
|
|
* "git fetch" over HTTP walker protocol did not show any progress |
|
output. We inherently do not know how much work remains, but still |
|
we can show something not to bore users. |
|
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint). |
|
|
|
* Both "git ls-remote -h" and "git grep -h" give short usage help, |
|
like any other Git subcommand, but it is not unreasonable to expect |
|
that the former would behave the same as "git ls-remote --head" |
|
(there is no other sensible behaviour for the latter). The |
|
documentation has been updated in an attempt to clarify this. |
|
|
|
* Other code cleanup, docfix, build fix, etc. |
|
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint). |
|
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint). |
|
(merge c513a958b6 ss/t6025-modernize later to maint). |
|
(merge b441717256 dl/test-must-fail-fixes later to maint). |
|
(merge d031049da3 mt/sparse-checkout-doc-update later to maint). |
|
(merge 145136a95a jc/skip-prefix later to maint). |
|
(merge 5290d45134 jk/alloc-cleanups later to maint). |
|
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint). |
|
(merge 517b60564e rs/strbuf-insertstr later to maint). |
|
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint). |
|
(merge de26f02db1 js/test-avoid-pipe later to maint). |
|
(merge a2dc43414c es/doc-mentoring later to maint). |
|
(merge 02bbbe9df9 es/worktree-cleanup later to maint). |
|
(merge 2ce6d075fa rs/micro-cleanups later to maint). |
|
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint). |
|
(merge 3c29e21eb0 ma/test-cleanup later to maint). |
|
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint). |
|
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint). |
|
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint). |
|
(merge fd0bc17557 kk/complete-diff-color-moved later to maint). |
|
(merge 65bf820d0e en/test-cleanup later to maint).
|
|
|