mirror of
https://github.com/git/git
synced 2024-08-28 20:20:07 +00:00
330 lines
15 KiB
Plaintext
330 lines
15 KiB
Plaintext
Git v2.42 Release Notes
|
|
=======================
|
|
|
|
UI, Workflows & Features
|
|
|
|
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
|
|
hierarchy to be packed using pattern matching.
|
|
|
|
* 'git worktree add' learned how to create a worktree based on an
|
|
orphaned branch with `--orphan`.
|
|
|
|
* "git pack-objects" learned to invoke a new hook program that
|
|
enumerates extra objects to be used as anchoring points to keep
|
|
otherwise unreachable objects in cruft packs.
|
|
|
|
* Add more "git var" for toolsmiths to learn various locations Git is
|
|
configured with either via the configuration or hard-coded defaults.
|
|
|
|
* 'git notes append' was taught '--separator' to specify string to insert
|
|
between paragraphs.
|
|
|
|
* The "git for-each-ref" family of commands learned placeholders
|
|
related to GPG signature verification.
|
|
|
|
* "git diff --no-index" learned to read from named pipes as if they
|
|
were regular files, to allow "git diff <(process) <(substitution)"
|
|
some shells support.
|
|
|
|
* Help newbies by suggesting that there are cases where force-pushing
|
|
is a valid and sensible thing to update a branch at a remote
|
|
repository, rather than reconciling with merge/rebase.
|
|
|
|
* "git blame --contents=file" has been taught to work in a bare
|
|
repository.
|
|
|
|
* "git branch -f X" to repoint the branch X said that X was "checked
|
|
out" in another worktree, even when branch X was not and instead
|
|
being bisected or rebased. The message was reworded to say the
|
|
branch was "in use".
|
|
|
|
* Tone down the warning on SHA-256 repositories being an experimental
|
|
curiosity. We do not have support for them to interoperate with
|
|
traditional SHA-1 repositories, but at this point, we do not plan
|
|
to make breaking changes to SHA-256 repositories and there is no
|
|
longer need for such a strongly phrased warning.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* "git diff-tree" has been taught to take advantage of the
|
|
sparse-index feature.
|
|
|
|
* Clang's sanitizer implementation seems to work better than GCC's.
|
|
(merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
|
|
|
|
* The object traversal using reachability bitmap done by
|
|
"pack-object" has been tweaked to take advantage of the fact that
|
|
using "boundary" commits as representative of all the uninteresting
|
|
ones can save quite a lot of object enumeration.
|
|
|
|
* discover_git_directory() no longer touches the_repository.
|
|
|
|
* "git worktree" learned to work better with sparse index feature.
|
|
|
|
* When the external merge driver is killed by a signal, its output
|
|
should not be trusted as a resolution with conflicts that is
|
|
proposed by the driver, but the code did.
|
|
|
|
* The set-up code for the get_revision() API now allows feeding
|
|
options like --all and --not in the --stdin mode.
|
|
|
|
* Move functions that are not about pure string manipulation out of
|
|
strbuf.[ch]
|
|
|
|
* "imap-send" codepaths got cleaned up to get rid of unused
|
|
parameters.
|
|
|
|
* Enumerating refs in the packed-refs file, while excluding refs that
|
|
match certain patterns, has been optimized.
|
|
|
|
* Mark-up unused parameters in the code so that we can eventually
|
|
enable -Wunused-parameter by default.
|
|
|
|
* Instead of inventing a custom counter variables for debugging,
|
|
use existing trace2 facility in the fsync customization codepath.
|
|
|
|
* "git branch --list --format=<format>" and friends are taught
|
|
a new "%(describe)" placeholder.
|
|
|
|
* Clarify how to choose the starting point for a new topic in
|
|
developer guidance document.
|
|
|
|
* The implementation of "get_sha1_hex()" that reads a hexadecimal
|
|
string that spells a full object name has been extended to cope
|
|
with any hash function used in the repository, but the "sha1" in
|
|
its name survived. Rename it to get_hash_hex(), a name that is
|
|
more consistent within its friends like get_hash_hex_algop().
|
|
|
|
* Command line parser fix, and a small parse-options API update.
|
|
|
|
|
|
Fixes since v2.41
|
|
-----------------
|
|
|
|
* "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
|
|
command failed, so that the user can salvage what they typed.
|
|
(merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
|
|
|
|
* The "-s" (silent, squelch) option of the "diff" family of commands
|
|
did not interact with other options that specify the output format
|
|
well. This has been cleaned up so that it will clear all the
|
|
formatting options given before.
|
|
(merge 9d484b92ed jc/diff-s-with-other-options later to maint).
|
|
|
|
* Update documentation regarding Coccinelle patches.
|
|
(merge 3bd0097cfc gc/doc-cocci-updates later to maint).
|
|
|
|
* Some atoms that can be used in "--format=<format>" for "git ls-tree"
|
|
were not supported by "git ls-files", even though they were relevant
|
|
in the context of the latter.
|
|
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
|
|
|
|
* Document more pseudo-refs and teach the command line completion
|
|
machinery to complete AUTO_MERGE.
|
|
(merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
|
|
|
|
* "git submodule" code trusted the data coming from the config (and
|
|
the in-tree .gitmodules file) too much without validating, leading
|
|
to NULL dereference if the user mucks with a repository (e.g.
|
|
submodule.<name>.url is removed). This has been corrected.
|
|
(merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
|
|
|
|
* The value of config.worktree is per-repository, but has been kept
|
|
in a singleton global variable per process. This has been OK as
|
|
most Git operations interacted with a single repository at a time,
|
|
but not right for operations like recursive "grep" that want to
|
|
access multiple repositories from a single process without forking.
|
|
|
|
The global variable has been eliminated and made into a member in
|
|
the per-repository data structure.
|
|
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
|
|
|
|
* "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
|
|
(merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
|
|
|
|
* Introduce a mechanism to disable replace refs globally and per
|
|
repository.
|
|
(merge 9c7d1b057f ds/disable-replace-refs later to maint).
|
|
|
|
* "git cat-file --batch" and friends learned "-Z" that uses NUL
|
|
delimiter for both input and output.
|
|
(merge f79e18849b ps/cat-file-null-output later to maint).
|
|
|
|
* The reimplemented "git add -i" did not honor color.ui configuration.
|
|
(merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
|
|
|
|
* Compilation fix for platforms without D_TYPE in struct dirent.
|
|
(merge 03bf92b9bf as/dtype-compilation-fix later to maint).
|
|
|
|
* Suggest to refrain from using hex literals that are non-portable
|
|
when writing printf(1) format strings.
|
|
(merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
|
|
|
|
* Simplify error message when run-command fails to start a command.
|
|
(merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
|
|
|
|
* Gracefully deal with a stale MIDX file that lists a packfile that
|
|
no longer exists.
|
|
(merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
|
|
|
|
* Even when diff.ignoreSubmodules tells us to ignore submodule
|
|
changes, "git commit" with an index that already records changes to
|
|
submodules should include the submodule changes in the resulting
|
|
commit, but it did not.
|
|
(merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
|
|
|
|
* When "git commit --trailer=..." invokes the interpret-trailers
|
|
machinery, it knows what it feeds to interpret-trailers is a full
|
|
log message without any patch, but failed to express that by
|
|
passing the "--no-divider" option, which has been corrected.
|
|
(merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
|
|
|
|
* Avoid breakage of "git pack-objects --cruft" due to inconsistency
|
|
between the way the code enumerates packfiles in the repository.
|
|
(merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
|
|
|
|
* We create .pack and then .idx, we consider only packfiles that have
|
|
.idx usable (those with only .pack are not ready yet), so we should
|
|
remove .idx before removing .pack for consistency.
|
|
(merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
|
|
|
|
* Partially revert a sanity check that the rest of the config code
|
|
was not ready, to avoid triggering it in a corner case.
|
|
(merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
|
|
|
|
* "git apply" punts when it is fed too large a patch input; the error
|
|
message it gives when it happens has been clarified.
|
|
(merge 42612e18d2 pw/apply-too-large later to maint).
|
|
|
|
* During a cherry-pick or revert session that works on multiple
|
|
commits, "git status" did not give correct information, which has
|
|
been corrected.
|
|
(merge a096a889f4 jk/cherry-pick-revert-status later to maint).
|
|
|
|
* A few places failed to differentiate the case where the index is
|
|
truly empty (nothing added) and we haven't yet read from the
|
|
on-disk index file, which have been corrected.
|
|
(merge 2ee045eea1 js/empty-index-fixes later to maint).
|
|
|
|
* "git bugreport" tests did not test what it wanted to test, which
|
|
has been corrected.
|
|
(merge 1aa92b8500 ma/t0091-fixup later to maint).
|
|
|
|
* Code snippets in a tutorial document no longer compiled after
|
|
recent header shuffling, which have been corrected.
|
|
(merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
|
|
|
|
* "git ls-files '(attr:X)D/'" that triggers the common prefix
|
|
optimization codepath failed to read from "D/.gitattributes",
|
|
which has been corrected.
|
|
(merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
|
|
|
|
* "git fsck --no-progress" still spewed noise from the commit-graph
|
|
subsystem, which has been corrected.
|
|
(merge 9281cd07f0 tb/fsck-no-progress later to maint).
|
|
|
|
* Various offset computation in the code that accesses the packfiles
|
|
and other data in the object layer has been hardened against
|
|
arithmetic overflow, especially on 32-bit systems.
|
|
(merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
|
|
|
|
* Names of MinGW header files are spelled in mixed case in some
|
|
source files, but the build host can be using case sensitive
|
|
filesystem with header files with their name spelled in all
|
|
lowercase.
|
|
(merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
|
|
|
|
* Update message mark-up for i18n in "git bundle".
|
|
(merge bbb6acd998 dk/bundle-i18n-more later to maint).
|
|
|
|
* "git tag --list --points-at X" showed tags that directly refers to
|
|
object X, but did not list a tag that points at such a tag, which
|
|
has been corrected.
|
|
|
|
* "./configure --with-expat=no" did not work as a way to refuse use
|
|
of the expat library on a system with the library installed, which
|
|
has been corrected.
|
|
(merge fb8f7269c2 ah/autoconf-fixes later to maint).
|
|
|
|
* When the user edits "rebase -i" todo file so that it starts with a
|
|
"fixup", which would make it invalid, the command truncated the
|
|
rest of the file before giving an error and returning the control
|
|
back to the user. Stop truncating to make it easier to correct
|
|
such a malformed todo file.
|
|
(merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).
|
|
|
|
* Rewrite the description of giving a custom command to the
|
|
submodule.<name>.update configuration variable.
|
|
(merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).
|
|
|
|
* Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
|
|
its traditional API, by using its EVP API instead.
|
|
(merge bda9c12073 ew/hash-with-openssl-evp later to maint).
|
|
|
|
* Exclude "." from the set of characters to be removed from the
|
|
beginning and the end of the human-readable name.
|
|
(merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).
|
|
|
|
* "git bisect visualize" stopped running "gitk" on Git for Windows
|
|
when the command was reimplemented in C around Git 2.34 timeframe.
|
|
This has been corrected.
|
|
(merge fff1594fa7 ma/locate-in-path-for-windows later to maint).
|
|
|
|
* "git rebase -i" with a series of squash/fixup, when one of the
|
|
steps stopped in conflicts and ended up getting skipped, did not
|
|
handle the accumulated commit log messages, which has been
|
|
corrected.
|
|
(merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).
|
|
|
|
* Adjust to newer Term::ReadLine to prevent it from breaking
|
|
the interactive prompt code in send-email.
|
|
(merge c016726c2d jk/send-email-with-new-readline later to maint).
|
|
|
|
* Windows updates.
|
|
(merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).
|
|
|
|
* Correct use of lstat() that assumed a failing call would not
|
|
clobber the statbuf.
|
|
(merge 72695d8214 st/mv-lstat-fix later to maint).
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
|
|
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
|
|
(merge f7e063f326 ps/fetch-cleanups later to maint).
|
|
(merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
|
|
(merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
|
|
(merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
|
|
(merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
|
|
(merge aeee1408ce kh/use-default-notes-doc later to maint).
|
|
(merge 3b8724bce6 jc/test-modernization later to maint).
|
|
(merge 447a3b7331 jc/test-modernization-2 later to maint).
|
|
(merge d57fa7fc73 la/doc-interpret-trailers later to maint).
|
|
(merge 548afb0d9a la/docs-typofixes later to maint).
|
|
(merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
|
|
(merge 6c26da8404 mh/credential-erase-improvements later to maint).
|
|
(merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
|
|
(merge 80d32e84b5 rj/leakfixes later to maint).
|
|
(merge 0a868031ed pb/complete-diff-options later to maint).
|
|
(merge d4f28279ad jc/doc-hash-object-types later to maint).
|
|
(merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
|
|
(merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
|
|
(merge 3e81b896f7 rs/packet-length-simplify later to maint).
|
|
(merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
|
|
(merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
|
|
(merge 947ebd62a0 jc/am-parseopt-fix later to maint).
|
|
(merge e12cb98e1e jc/branch-parseopt-fix later to maint).
|
|
(merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
|
|
(merge a2dad4868b jc/transport-parseopt-fix later to maint).
|
|
(merge 68cbb20e73 jc/parse-options-show-branch later to maint).
|
|
(merge 3821eb6c3d jc/parse-options-reset later to maint).
|
|
(merge c48af99a3e bb/trace2-comment-fix later to maint).
|
|
(merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
|
|
(merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
|
|
(merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
|
|
(merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
|
|
(merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
|
|
(merge a5c01603b3 bc/ignore-clangd-cache later to maint).
|
|
(merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
|
|
(merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).
|