
We presently use the ".txt" extension for our AsciiDoc files. While not wrong, most editors do not associate this extension with AsciiDoc, meaning that contributors don't get automatic editor functionality that could be useful, such as syntax highlighting and prose linting. It is much more common to use the ".adoc" extension for AsciiDoc files, since this helps editors automatically detect files and also allows various forges to provide rich (HTML-like) rendering. Let's do that here, renaming all of the files and updating the includes where relevant. Adjust the various build scripts and makefiles to use the new extension as well. Note that this should not result in any user-visible changes to the documentation. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
439 lines
18 KiB
Plaintext
439 lines
18 KiB
Plaintext
Git 2.34 Release Notes
|
|
======================
|
|
|
|
Updates since Git 2.33
|
|
----------------------
|
|
|
|
Backward compatibility notes
|
|
|
|
* The "--preserve-merges" option of "git rebase" has been removed.
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
* Pathname expansion (like "~username/") learned a way to specify a
|
|
location relative to Git installation (e.g. its $sharedir which is
|
|
$(prefix)/share), with "%(prefix)".
|
|
|
|
* The `ort` strategy is used instead of `recursive` as the default
|
|
merge strategy.
|
|
|
|
* The userdiff pattern for "java" language has been updated.
|
|
|
|
* "git rebase" by default skips changes that are equivalent to
|
|
commits that are already in the history the branch is rebased onto;
|
|
give messages when this happens to let the users be aware of
|
|
skipped commits, and also teach them how to tell "rebase" to keep
|
|
duplicated changes.
|
|
|
|
* The advice message that "git cherry-pick" gives when it asks
|
|
conflicted replay of a commit to be resolved by the end user has
|
|
been updated.
|
|
|
|
* After "git clone --recurse-submodules", all submodules are cloned
|
|
but they are not by default recursed into by other commands. With
|
|
submodule.stickyRecursiveClone configuration set, submodule.recurse
|
|
configuration is set to true in a repository created by "clone"
|
|
with "--recurse-submodules" option.
|
|
|
|
* The logic for auto-correction of misspelt subcommands learned to go
|
|
interactive when the help.autocorrect configuration variable is set
|
|
to 'prompt'.
|
|
|
|
* "git maintenance" scheduler learned to use systemd timers as a
|
|
possible backend.
|
|
|
|
* "git diff --submodule=diff" showed failure from run_command() when
|
|
trying to run diff inside a submodule, when the user manually
|
|
removes the submodule directory.
|
|
|
|
* "git bundle unbundle" learned to show progress display.
|
|
|
|
* In cone mode, the sparse-index code path learned to remove ignored
|
|
files (like build artifacts) outside the sparse cone, allowing the
|
|
entire directory outside the sparse cone to be removed, which is
|
|
especially useful when the sparse patterns change.
|
|
|
|
* Taking advantage of the CGI interface, http-backend has been
|
|
updated to enable protocol v2 automatically when the other side
|
|
asks for it.
|
|
|
|
* The credential-cache helper has been adjusted to Windows.
|
|
|
|
* The error in "git help no-such-git-command" is handled better.
|
|
|
|
* The unicode character width table (used for output alignment) has
|
|
been updated.
|
|
|
|
* The ref iteration code used to optionally allow dangling refs to be
|
|
shown, which has been tightened up.
|
|
|
|
* "git add", "git mv", and "git rm" have been adjusted to avoid
|
|
updating paths outside of the sparse-checkout definition unless
|
|
the user specifies a "--sparse" option.
|
|
|
|
* "git repack" has been taught to generate multi-pack reachability
|
|
bitmaps.
|
|
|
|
* "git fsck" has been taught to report mismatch between expected and
|
|
actual types of an object better.
|
|
|
|
* In addition to GnuPG, ssh public crypto can be used for object and
|
|
push-cert signing. Note that this feature cannot be used with
|
|
ssh-keygen from OpenSSH 8.7, whose support for it is broken. Avoid
|
|
using it unless you update to OpenSSH 8.8.
|
|
|
|
* "git log --grep=string --author=name" learns to highlight hits just
|
|
like "git grep string" does.
|
|
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* "git bisect" spawned "git show-branch" only to pretty-print the
|
|
title of the commit after checking out the next version to be
|
|
tested; this has been rewritten in C.
|
|
|
|
* "git add" can work better with the sparse index.
|
|
|
|
* Support for ancient versions of cURL library (pre 7.19.4) has been
|
|
dropped.
|
|
|
|
* A handful of tests that assumed implementation details of files
|
|
backend for refs have been cleaned up.
|
|
|
|
* trace2 logs learned to show parent process name to see in what
|
|
context Git was invoked.
|
|
|
|
* Loading of ref tips to prepare for common ancestry negotiation in
|
|
"git fetch-pack" has been optimized by taking advantage of the
|
|
commit graph when available.
|
|
|
|
* Remind developers that the userdiff patterns should be kept simple
|
|
and permissive, assuming that the contents they apply are always
|
|
syntactically correct.
|
|
|
|
* The current implementation of GIT_TEST_FAIL_PREREQS is broken in
|
|
that checking for the lack of a prerequisite would not work. Avoid
|
|
the use of "if ! test_have_prereq X" in a test script.
|
|
|
|
* The revision traversal API has been optimized by taking advantage
|
|
of the commit-graph, when available, to determine if a commit is
|
|
reachable from any of the existing refs.
|
|
|
|
* "git fetch --quiet" optimization to avoid useless computation of
|
|
info that will never be displayed.
|
|
|
|
* Callers from older advice_config[] based API has been updated to
|
|
use the newer advice_if_enabled() and advice_enabled() API.
|
|
|
|
* Teach "test_pause" and "debug" helpers to allow using the HOME and
|
|
TERM environment variables the user usually uses.
|
|
|
|
* "make INSTALL_STRIP=-s install" allows the installation step to use
|
|
"install -s" to strip the binaries as they get installed.
|
|
|
|
* Code that handles large number of refs in the "git fetch" code
|
|
path has been optimized.
|
|
|
|
* The reachability bitmap file used to be generated only for a single
|
|
pack, but now we've learned to generate bitmaps for history that
|
|
span across multiple packfiles.
|
|
|
|
* The code to make "git grep" recurse into submodules has been
|
|
updated to migrate away from the "add submodule's object store as
|
|
an alternate object store" mechanism (which is suboptimal).
|
|
|
|
* The tracing of process ancestry information has been enhanced.
|
|
|
|
* Reduce number of write(2) system calls while sending the
|
|
ref advertisement.
|
|
|
|
* Update the build procedure to use the "-pedantic" build when
|
|
DEVELOPER makefile macro is in effect.
|
|
|
|
* Large part of "git submodule add" gets rewritten in C.
|
|
|
|
* The run-command API has been updated so that the callers can easily
|
|
ask the file descriptors open for packfiles to be closed immediately
|
|
before spawning commands that may trigger auto-gc.
|
|
|
|
* An oddball OPTION_ARGUMENT feature has been removed from the
|
|
parse-options API.
|
|
|
|
* The mergesort implementation used to sort linked list has been
|
|
optimized.
|
|
|
|
* Remove external declaration of functions that no longer exist.
|
|
|
|
* "git multi-pack-index write --bitmap" learns to propagate the
|
|
hashcache from original bitmap to resulting bitmap.
|
|
|
|
* CI learns to run the leak sanitizer builds.
|
|
|
|
* "git grep --recurse-submodules" takes trees and blobs from the
|
|
submodule repository, but the textconv settings when processing a
|
|
blob from the submodule is not taken from the submodule repository.
|
|
A test is added to demonstrate the issue, without fixing it.
|
|
|
|
* Teach "git help -c" into helping the command line completion of
|
|
configuration variables.
|
|
|
|
* When "git cmd -h" shows more than one line of usage text (e.g.
|
|
the cmd subcommand may take sub-sub-command), parse-options API
|
|
learned to align these lines, even across i18n/l10n.
|
|
|
|
* Prevent "make sparse" from running for the source files that
|
|
haven't been modified.
|
|
|
|
* The code path to write a new version of .midx multi-pack index files
|
|
has learned to release the mmaped memory holding the current
|
|
version of .midx before removing them from the disk, as some
|
|
platforms do not allow removal of a file that still has mapping.
|
|
|
|
* A new feature has been added to abort early in the test framework.
|
|
|
|
|
|
Fixes since v2.33
|
|
-----------------
|
|
|
|
* Input validation of "git pack-objects --stdin-packs" has been
|
|
corrected.
|
|
|
|
* Bugfix for common ancestor negotiation recently introduced in "git
|
|
push" code path.
|
|
|
|
* "git pull" had various corner cases that were not well thought out
|
|
around its --rebase backend, e.g. "git pull --ff-only" did not stop
|
|
but went ahead and rebased when the history on other side is not a
|
|
descendant of our history. The series tries to fix them up.
|
|
|
|
* "git apply" miscounted the bytes and failed to read to the end of
|
|
binary hunks.
|
|
|
|
* "git range-diff" code clean-up.
|
|
|
|
* "git commit --fixup" now works with "--edit" again, after it was
|
|
broken in v2.32.
|
|
|
|
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
|
|
new version has a blocker bug for that architecture.
|
|
|
|
* Checking out all the paths from HEAD during the last conflicted
|
|
step in "git rebase" and continuing would cause the step to be
|
|
skipped (which is expected), but leaves MERGE_MSG file behind in
|
|
$GIT_DIR and confuses the next "git commit", which has been
|
|
corrected.
|
|
|
|
* Various bugs in "git rebase -r" have been fixed.
|
|
|
|
* mmap() imitation used to call xmalloc() that dies upon malloc()
|
|
failure, which has been corrected to just return an error to the
|
|
caller to be handled.
|
|
|
|
* "git diff --relative" segfaulted and/or produced incorrect result
|
|
when there are unmerged paths.
|
|
|
|
* The delayed checkout code path in "git checkout" etc. were chatty
|
|
even when --quiet and/or --no-progress options were given.
|
|
|
|
* "git branch -D <branch>" used to refuse to remove a broken branch
|
|
ref that points at a missing commit, which has been corrected.
|
|
|
|
* Build update for Apple clang.
|
|
|
|
* The parser for the "--nl" option of "git column" has been
|
|
corrected.
|
|
|
|
* "git upload-pack" which runs on the other side of "git fetch"
|
|
forgot to take the ref namespaces into account when handling
|
|
want-ref requests.
|
|
|
|
* The sparse-index support can corrupt the index structure by storing
|
|
a stale and/or uninitialized data, which has been corrected.
|
|
|
|
* Buggy tests could damage repositories outside the throw-away test
|
|
area we created. We now by default export GIT_CEILING_DIRECTORIES
|
|
to limit the damage from such a stray test.
|
|
|
|
* Even when running "git send-email" without its own threaded
|
|
discussion support, a threading related header in one message is
|
|
carried over to the subsequent message to result in an unwanted
|
|
threading, which has been corrected.
|
|
|
|
* The output from "git fast-export", when its anonymization feature
|
|
is in use, showed an annotated tag incorrectly.
|
|
|
|
* Recent "diff -m" changes broke "gitk", which has been corrected.
|
|
|
|
* The "git apply -3" code path learned not to bother the lower level
|
|
merge machinery when the three-way merge can be trivially resolved
|
|
without the content level merge. This fixes a regression caused by
|
|
recent "-3way first and fall back to direct application" change.
|
|
|
|
* The code that optionally creates the *.rev reverse index file has
|
|
been optimized to avoid needless computation when it is not writing
|
|
the file out.
|
|
|
|
* "git range-diff -I... <range> <range>" segfaulted, which has been
|
|
corrected.
|
|
|
|
* The order in which various files that make up a single (conceptual)
|
|
packfile has been reevaluated and straightened up. This matters in
|
|
correctness, as an incomplete set of files must not be shown to a
|
|
running Git.
|
|
|
|
* The "mode" word is useless in a call to open(2) that does not
|
|
create a new file. Such a call in the files backend of the ref
|
|
subsystem has been cleaned up.
|
|
|
|
* "git update-ref --stdin" failed to flush its output as needed,
|
|
which potentially led the conversation to a deadlock.
|
|
|
|
* When "git am --abort" fails to abort correctly, it still exited
|
|
with exit status of 0, which has been corrected.
|
|
|
|
* Correct nr and alloc members of strvec struct to be of type size_t.
|
|
|
|
* "git stash", where the tentative change involves changing a
|
|
directory to a file (or vice versa), was confused, which has been
|
|
corrected.
|
|
|
|
* "git clone" from a repository whose HEAD is unborn into a bare
|
|
repository didn't follow the branch name the other side used, which
|
|
is corrected.
|
|
|
|
* "git cvsserver" had a long-standing bug in its authentication code,
|
|
which has finally been corrected (it is unclear and is a separate
|
|
question if anybody is seriously using it, though).
|
|
|
|
* "git difftool --dir-diff" mishandled symbolic links.
|
|
|
|
* Sensitive data in the HTTP trace were supposed to be redacted, but
|
|
we failed to do so in HTTP/2 requests.
|
|
|
|
* "make clean" has been updated to remove leftover .depend/
|
|
directories, even when it is not told to use them to compute header
|
|
dependencies.
|
|
|
|
* Protocol v0 clients can get stuck parsing a malformed feature line.
|
|
|
|
* A few kinds of changes "git status" can show were not documented.
|
|
(merge d2a534c515 ja/doc-status-types-and-copies later to maint).
|
|
|
|
* The mergesort implementation used to sort linked list has been
|
|
optimized.
|
|
(merge c90cfc225b rs/mergesort later to maint).
|
|
|
|
* An editor session launched during a Git operation (e.g. during 'git
|
|
commit') can leave the terminal in a funny state. The code path
|
|
has updated to save the terminal state before, and restore it
|
|
after, it spawns an editor.
|
|
(merge 3d411afabc cm/save-restore-terminal later to maint).
|
|
|
|
* "git cat-file --batch" with the "--batch-all-objects" option is
|
|
supposed to iterate over all the objects found in a repository, but
|
|
it used to translate these object names using the replace mechanism,
|
|
which defeats the point of enumerating all objects in the repository.
|
|
This has been corrected.
|
|
(merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).
|
|
|
|
* Recent sparse-index work broke safety against attempts to add paths
|
|
with trailing slashes to the index, which has been corrected.
|
|
(merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
|
|
|
|
* The "--color-lines" and "--color-by-age" options of "git blame"
|
|
have been missing, which are now documented.
|
|
(merge 8c32856133 bs/doc-blame-color-lines later to maint).
|
|
|
|
* The PATH used in CI job may be too wide and let incompatible dlls
|
|
to be grabbed, which can cause the build&test to fail. Tighten it.
|
|
(merge 7491ef6198 js/windows-ci-path-fix later to maint).
|
|
|
|
* Avoid performance measurements from getting ruined by gc and other
|
|
housekeeping pauses interfering in the middle.
|
|
(merge be79131a53 rs/disable-gc-during-perf-tests later to maint).
|
|
|
|
* Stop "git add --dry-run" from creating new blob and tree objects.
|
|
(merge e578d0311d rs/add-dry-run-without-objects later to maint).
|
|
|
|
* "git commit" gave duplicated error message when the object store
|
|
was unwritable, which has been corrected.
|
|
(merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).
|
|
|
|
* Recent sparse-index addition, namely any use of index_name_pos(),
|
|
can expand sparse index entries and breaks any code that walks
|
|
cache-tree or existing index entries. One such instance of such a
|
|
breakage has been corrected.
|
|
|
|
* The xxdiff difftool backend can exit with status 128, which the
|
|
difftool-helper that launches the backend takes as a significant
|
|
failure, when it is not significant at all. Work it around.
|
|
(merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).
|
|
|
|
* Improve test framework around unwritable directories.
|
|
(merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).
|
|
|
|
* "git push" client talking to an HTTP server did not diagnose the
|
|
lack of the final status report from the other side correctly,
|
|
which has been corrected.
|
|
(merge c5c3486f38 jk/http-push-status-fix later to maint).
|
|
|
|
* Update "git archive" documentation and give explicit mention on the
|
|
compression level for both zip and tar.gz format.
|
|
(merge c4b208c309 bs/archive-doc-compression-level later to maint).
|
|
|
|
* Drop "git sparse-checkout" from the list of common commands.
|
|
(merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
|
|
|
|
* "git branch -c/-m new old" was not described to copy config, which
|
|
has been corrected.
|
|
(merge 8252ec300e jc/branch-copy-doc later to maint).
|
|
|
|
* Squelch over-eager warning message added during this cycle.
|
|
|
|
* Fix long-standing shell syntax error in the completion script.
|
|
(merge 46b0585286 re/completion-fix-test-equality later to maint).
|
|
|
|
* Teach "git commit-graph" command not to allow using replace objects
|
|
at all, as we do not use the commit-graph at runtime when we see
|
|
object replacement.
|
|
(merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).
|
|
|
|
* "git pull --no-verify" did not affect the underlying "git merge".
|
|
(merge 47bfdfb3fd ar/fix-git-pull-no-verify later to maint).
|
|
|
|
* One CI task based on Fedora image noticed a not-quite-kosher
|
|
construct recently, which has been corrected.
|
|
|
|
* "git pull --ff-only" and "git pull --rebase --ff-only" should make
|
|
it a no-op to attempt pulling from a remote that is behind us, but
|
|
instead the command errored out by saying it was impossible to
|
|
fast-forward, which may technically be true, but not a useful thing
|
|
to diagnose as an error. This has been corrected.
|
|
(merge 361cb52383 jc/fix-pull-ff-only-when-already-up-to-date later to maint).
|
|
|
|
* The way Cygwin emulates a unix-domain socket, on top of which the
|
|
simple-ipc mechanism is implemented, can race with the program on
|
|
the other side that wants to use the socket, and briefly make it
|
|
appear as a regular file before lstat(2) starts reporting it as a
|
|
socket. We now have a workaround on the side that connects to a
|
|
unix domain socket.
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge f188160be9 ab/bundle-remove-verbose-option later to maint).
|
|
(merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
|
|
(merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
|
|
(merge dd20e4a6db ab/make-compdb-fix later to maint).
|
|
(merge 6ffb990dc4 os/status-docfix later to maint).
|
|
(merge 100c2da2d3 rs/p3400-lose-tac later to maint).
|
|
(merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
|
|
(merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
|
|
(merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
|
|
(merge ec9a37d69b ab/pkt-line-cleanup later to maint).
|
|
(merge 8650c6298c ab/fix-make-lint-docs later to maint).
|
|
(merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
|
|
(merge 6b615dbece ks/submodule-add-message-fix later to maint).
|
|
(merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
|
|
(merge 559664c792 ab/test-lib later to maint).
|