341 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			341 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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).
 |