mirror of
https://github.com/git/git
synced 2024-09-12 21:04:12 +00:00
bc7ee2e5e1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
289 lines
13 KiB
Plaintext
289 lines
13 KiB
Plaintext
Git v2.44 Release Notes
|
|
=======================
|
|
|
|
Backward Compatibility Notes
|
|
|
|
* "git chekcout -B <branch>" used to allow switching to a branch that
|
|
is in use on another worktree, but this was by mistake. The users
|
|
need to use "--ignore-other-worktrees" option.
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
* "git add" and "git stash" learned to support the ":(attr:...)"
|
|
magic pathspec.
|
|
|
|
* "git rebase --autosquash" is now enabled for non-interactive rebase,
|
|
but it is still incompatible with the apply backend.
|
|
|
|
* Introduce "git replay", a tool meant on the server side without
|
|
working tree to recreate a history.
|
|
|
|
* "git merge-file" learned to take the "--diff-algorithm" option to
|
|
use algorithm different from the default "myers" diff.
|
|
|
|
* Command line completion (in contrib/) learned to complete path
|
|
arguments to the "add/set" subcommands of "git sparse-checkout"
|
|
better.
|
|
|
|
* "git checkout -B <branch> [<start-point>]" allowed a branch that is
|
|
in use in another worktree to be updated and checked out, which
|
|
might be a bit unexpected. The rule has been tightened, which is a
|
|
breaking change. "--ignore-other-worktrees" option is required to
|
|
unbreak you, if you are used to the current behaviour that "-B"
|
|
overrides the safety.
|
|
|
|
* The builtin_objectmode attribute is populated for each path
|
|
without adding anything in .gitattributes files, which would be
|
|
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
|
|
to limit to executables.
|
|
|
|
* "git fetch" learned to pay attention to "fetch.all" configuration
|
|
variable, which pretends as if "--all" was passed from the command
|
|
line when no remote parameter was given.
|
|
|
|
* In addition to (rather cryptic) Security Identifiers, show username
|
|
and domain in the error message when we barf on mismatch between
|
|
the Git directory and the current user on Windows.
|
|
|
|
* The error message given when "git branch -d branch" fails due to
|
|
commits unique to the branch has been split into an error and a new
|
|
conditional advice message.
|
|
|
|
* When given an existing but unreadable file as a configuration file,
|
|
gitweb behaved as if the file did not exist at all, but now it
|
|
errors out. This is a change that may break backward compatibility.
|
|
|
|
* When $HOME/.gitignore is missing but XDG config file available, we
|
|
should write into the latter, not former. "git gc" and "git
|
|
maintenance" wrote into a wrong "global config" file, which have
|
|
been corrected.
|
|
|
|
* Define "special ref" as a very narrow set that consists of
|
|
FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
|
|
be classified as such are actually just pseudorefs.
|
|
|
|
* All conditional "advice" messages show how to turn them off, which
|
|
becomes repetitive. Setting advice.* configuration explicitly on
|
|
now omits the instruction part.
|
|
|
|
* The "disable repository discovery of a bare repository" check,
|
|
triggered by setting safe.bareRepository configuration variable to
|
|
'explicit', has been loosened to exclude the ".git/" directory inside
|
|
a non-bare repository from the check. So you can do "cd .git &&
|
|
git cmd" to run a Git command that works on a bare repository without
|
|
explicitly specifying $GIT_DIR now.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* Process to add some form of low-level unit tests has started.
|
|
|
|
* Add support for GitLab CI.
|
|
|
|
* "git for-each-ref --no-sort" still sorted the refs alphabetically
|
|
which paid non-trivial cost. It has been redefined to show output
|
|
in an unspecified order, to allow certain optimizations to take
|
|
advantage of.
|
|
|
|
* Simplify API implementation to delete references by eliminating
|
|
duplication.
|
|
|
|
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
|
|
|
|
* A new helper to let us pretend that we called lstat() when we know
|
|
our cache_entry is up-to-date via fsmonitor.
|
|
|
|
* The optimization based on fsmonitor in the "diff --cached"
|
|
codepath is resurrected with the "fake-lstat" introduced earlier.
|
|
|
|
* Test balloon to use C99 "bool" type from <stdbool.h> has been
|
|
added.
|
|
|
|
* "git clone" has been prepared to allow cloning a repository with
|
|
non-default hash function into a repository that uses the reftable
|
|
backend.
|
|
|
|
* Streaming spans of packfile data used to be done only from a
|
|
single, primary, pack in a repository with multiple packfiles. It
|
|
has been extended to allow reuse from other packfiles, too.
|
|
|
|
* Comment updates to help developers not to attempt to modify
|
|
messages from plumbing commands that must stay constant.
|
|
|
|
It might make sense to reassess the plumbing needs every few years,
|
|
but that should be done as a separate effort.
|
|
|
|
* Move test-ctype helper to the unit-test framework.
|
|
|
|
* Instead of manually creating refs/ hierarchy on disk upon a
|
|
creation of a secondary worktree, which is only usable via the
|
|
files backend, use the refs API to populate it.
|
|
|
|
* CI for GitLab learned to drive macOS jobs.
|
|
|
|
* A few tests to "git commit -o <pathspec>" and "git commit -i
|
|
<pathspec>" has been added.
|
|
|
|
|
|
Fixes since v2.43
|
|
-----------------
|
|
|
|
* The way CI testing used "prove" could lead to running the test
|
|
suite twice needlessly, which has been corrected.
|
|
(merge e7e03ef995 js/ci-discard-prove-state later to maint).
|
|
|
|
* Update ref-related tests.
|
|
|
|
* "git format-patch --encode-email-headers" ignored the option when
|
|
preparing the cover letter, which has been corrected.
|
|
|
|
* Newer versions of Getopt::Long started giving warnings against our
|
|
(ab)use of it in "git send-email". Bump the minimum version
|
|
requirement for Perl to 5.8.1 (from September 2002) to allow
|
|
simplifying our implementation.
|
|
(merge 6ff658cc78 tz/send-email-negatable-options later to maint).
|
|
|
|
* Earlier we stopped relying on commit-graph that (still) records
|
|
information about commits that are lost from the object store,
|
|
which has negative performance implications. The default has been
|
|
flipped to disable this pessimization.
|
|
(merge b1df3b3867 ps/commit-graph-less-paranoid later to maint).
|
|
|
|
* Stale URLs have been updated to their current counterparts (or
|
|
archive.org) and HTTP links are replaced with working HTTPS links.
|
|
(merge 62b4f7b9c6 js/update-urls-in-doc-and-comment later to maint).
|
|
|
|
* trace2 streams used to record the URLs that potentially embed
|
|
authentication material, which has been corrected.
|
|
(merge 16fa3eebc0 jh/trace2-redact-auth later to maint).
|
|
|
|
* The sample pre-commit hook that tries to catch introduction of new
|
|
paths that use potentially non-portable characters did not notice
|
|
an existing path getting renamed to such a problematic path, when
|
|
rename detection was enabled.
|
|
(merge d9fd71fa2a jp/use-diff-index-in-pre-commit-sample later to maint).
|
|
|
|
* The command line parser for the "log" family of commands was too
|
|
loose when parsing certain numbers, e.g., silently ignoring the
|
|
extra 'q' in "git log -n 1q" without complaining, which has been
|
|
tightened up.
|
|
(merge 71a1e94821 jc/revision-parse-int later to maint).
|
|
|
|
* "git $cmd --end-of-options --rev -- --path" for some $cmd failed
|
|
to interpret "--rev" as a rev, and "--path" as a path. This was
|
|
fixed for many programs like "reset" and "checkout".
|
|
(merge 9385174627 jk/end-of-options later to maint).
|
|
|
|
* "git bisect reset" has been taught to clean up state files and refs
|
|
even when BISECT_START file is gone.
|
|
(merge daaa03e54c jk/bisect-reset-fix later to maint).
|
|
|
|
* Some codepaths did not correctly parse configuration variables
|
|
specified with valueless "true", which has been corrected.
|
|
(merge d49cb162fa jk/implicit-true later to maint).
|
|
|
|
* Code clean-up for sanity checking of command line options for "git
|
|
show-ref".
|
|
(merge 7382497372 rs/show-ref-incompatible-options later to maint).
|
|
|
|
* The code to parse the From e-mail header has been updated to avoid
|
|
recursion.
|
|
(merge dee182941f jk/mailinfo-iterative-unquote-comment later to maint).
|
|
|
|
* "git fetch --atomic" issued an unnecessary empty error message,
|
|
which has been corrected.
|
|
(merge 18ce48918c jx/fetch-atomic-error-message-fix later to maint).
|
|
|
|
* Command line completion script (in contrib/) learned to work better
|
|
with the reftable backend.
|
|
(merge 44dbb3bf29 sh/completion-with-reftable later to maint).
|
|
|
|
* "git status" is taught to show both the branch being bisected and
|
|
being rebased when both are in effect at the same time.
|
|
(merge 990adccbdf rj/status-bisect-while-rebase later to maint).
|
|
|
|
* "git archive --list extra garbage" silently ignored excess command
|
|
line parameters, which has been corrected.
|
|
(merge d6b6cd1393 jc/archive-list-with-extra-args later to maint).
|
|
|
|
* "git sparse-checkout set" added default patterns even when the
|
|
patterns are being fed from the standard input, which has been
|
|
corrected.
|
|
(merge 53ded839ae jc/sparse-checkout-set-default-fix later to maint).
|
|
|
|
* "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
|
|
not handle "--end-of-options" correctly after a recent update.
|
|
|
|
* Unlike other environment variables that took the usual
|
|
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
|
|
which has been corrected.
|
|
(merge 556e68032f cp/git-flush-is-an-env-bool later to maint).
|
|
|
|
* Clearing in-core repository (happens during e.g., "git fetch
|
|
--recurse-submodules" with commit graph enabled) made in-core
|
|
commit object in an inconsistent state by discarding the necessary
|
|
data from commit-graph too early, which has been corrected.
|
|
(merge d70f554cdf jk/commit-graph-slab-clear-fix later to maint).
|
|
|
|
* Update to a new feature recently added, "git show-ref --exists".
|
|
(merge 0aabeaa562 tc/show-ref-exists-fix later to maint).
|
|
|
|
* oss-fuzz tests are built and run in CI.
|
|
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
|
|
|
|
* Rename detection logic ignored the final line of a file if it is an
|
|
incomplete line.
|
|
(merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).
|
|
|
|
* GitHub CI update.
|
|
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
|
|
|
|
* "git diff --no-rename A B" did not disable rename detection but did
|
|
not trigger an error from the command line parser.
|
|
(merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).
|
|
|
|
* "git archive --remote=<remote>" learned to talk over the smart
|
|
http (aka stateless) transport.
|
|
(merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
|
|
|
|
* Other code cleanup, docfix, build fix, etc.
|
|
(merge 50f1abcff6 js/packfile-h-typofix later to maint).
|
|
(merge cbf498eb53 jb/reflog-expire-delete-dry-run-options later to maint).
|
|
(merge 7854bf4960 rs/i18n-cannot-be-used-together later to maint).
|
|
(merge cd3c28c53a rs/column-leakfix later to maint).
|
|
(merge 866a1b9026 ps/ref-tests-update-more later to maint).
|
|
(merge e4299d26d4 mk/doc-gitfile-more later to maint).
|
|
(merge 792b86283b rs/incompatible-options-messages later to maint).
|
|
(merge ea8f9494ab jk/config-cleanup later to maint).
|
|
(merge d1bd3a8c34 jk/mailinfo-oob-read-fix later to maint).
|
|
(merge c0cadb0576 ps/reftable-fixes later to maint).
|
|
(merge 647b5e0998 ps/chainlint-self-check-update later to maint).
|
|
(merge 68fcebfb1a es/add-doc-list-short-form-of-all-in-synopsis later to maint).
|
|
(merge bc62d27d5c jc/doc-most-refs-are-not-that-special later to maint).
|
|
(merge 6d6f1cd7ee jc/doc-misspelt-refs-fix later to maint).
|
|
(merge 37e8d795be sp/test-i18ngrep later to maint).
|
|
(merge fbc6526ea6 rs/t6300-compressed-size-fix later to maint).
|
|
(merge 45184afb4d rs/rebase-use-strvec-pushf later to maint).
|
|
(merge a762af3dfd jc/retire-cas-opt-name-constant later to maint).
|
|
(merge de7c27a186 la/trailer-cleanups later to maint).
|
|
(merge d44b517137 jc/orphan-unborn later to maint).
|
|
(merge 63956c553d ml/doc-merge-updates later to maint).
|
|
(merge d57c671a51 en/header-cleanup later to maint).
|
|
(merge 5b7eec4bc5 rs/fast-import-simplify-mempool-allocation later to maint).
|
|
(merge 291873e5d6 js/contributor-docs-updates later to maint).
|
|
(merge 54d8a2531b jk/t1006-cat-file-objectsize-disk later to maint).
|
|
(merge 7033d5479b jx/sideband-chomp-newline-fix later to maint).
|
|
(merge 9cd30af991 ms/rebase-insnformat-doc-fix later to maint).
|
|
(merge 03bcc93769 cp/sideband-array-index-comment-fix later to maint).
|
|
(merge 993d38a066 jk/index-pack-lsan-false-positive-fix later to maint).
|
|
(merge 25aec06326 ib/rebase-reschedule-doc later to maint).
|
|
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
|
|
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
|
|
(merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).
|
|
(merge f10b0989b8 la/strvec-comment-fix later to maint).
|
|
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
|
|
(merge f10031fadd nb/rebase-x-shell-docfix later to maint).
|
|
(merge af3d2c160f jc/majordomo-to-subspace later to maint).
|
|
(merge ee9895b0ff sd/negotiate-trace-fix later to maint).
|