2026-02-03 10:13:32 by Adam Ciarcinski | Files touched by this commit (4) |  |
Log message:
git: updated to 2.53.0
Git v2.53 Release Notes
UI, Workflows & Features
"git maintenance" command learned "is-needed" subcommand to \
tell if
it is necessary to perform various maintenance tasks.
"git replay" (experimental) learned to perform ref updates itself
in a transaction by default, instead of emitting where each refs
should point at and leaving the actual update to another command.
"git blame" learns "--diff-algorithm=<algo>" option.
"git repo info" learned "--all" option.
Both "git apply" and "git diff" learn a new whitespace error \
class,
"incomplete-line".
Add a new manual that describes the data model.
"git fast-import" learns "--signed-commits=strip-if-invalid" \
option
to drop invalid cryptographic signature from objects.
The use of "revision" (a connected set of commits) has been
clarified in the "git replay" documentation.
A help message from "git branch" now mentions "git help" \
instead of
"man" when suggesting to read some documentation.
"git repo struct" learned to take "-z" as a synonym to \
"--format=nul".
More object database related information are shown in "git repo
structure" output.
Improve the error message when a bad argument is given to the
--onto option of "git replay". Test coverage of "git replay" has
been improved.
The iconv library on macOS fails to correctly handle stateful
ISO/IEC 2022:1994 encoded strings. Work it around instead of
replacing it wholesale from homebrew.
Upstream symbolic link support on Windows from Git-for-Windows.
Performance, Internal Implementation, Development Support etc.
The list of packfiles used in a running Git process is moved from
the packed_git structure into the packfile store.
Some ref backend storage can hold not just the object name of an
annotated tag, but the object name of the object the tag points at.
The code to handle this information has been streamlined.
As "git diff --quiet" only cares about the existence of any
changes, disable rename/copy detection to skip more expensive
processing whose result will be discarded anyway.
A part of code paths that deals with loose objects has been cleaned
up.
"make strip" has been taught to strip "scalar" as well as \
"git".
Dockerized jobs at the GitHub Actions CI have been taught to show
more details of failed tests.
Code refactoring around object database sources.
Halve the memory consumed by artificial filepairs created during
"git diff --find-copies-harder", also making the operation run
faster.
The "git_istream" abstraction has been revamped to make it easier
to interface with pluggable object database design.
Rewrite the only use of "mktemp()" that is subject to TOCTOU race
and Stop using the insecure "mktemp()" function.
(merge 10bba537c4 rs/ban-mktemp later to maint).
In-code comment update to clarify that single-letter options are
outside of the scope of command line completion script.
(merge dc8a00fafe jc/completion-no-single-letter-options later to maint).
MEMZERO_ARRAY() helper is introduced to avoid clearing only the
first N bytes of an N-element array whose elements are larger than
a byte.
"git diff-files -R --find-copies-harder" has been taught to use
the potential copy sources from the index correctly.
Require C99 style flexible array member support from all platforms.
The code path that enumerates promisor objects have been optimized
to skip pointlessly parsing blob objects.
Prepare test suite for Git for Windows that supports symbolic
links.
Import newer version of "clar", unit testing framework.
(merge 84071a6dea ps/clar-integers later to maint).
The packfile_store data structure is moved from object store to odb
source.
The object-info API has been cleaned up.
Further preparation to upstream symbolic link support on Windows.
Remove implicit reliance on the_repository global in the APIs
around tree objects and make it explicit which repository to work
in.
"git bugreport" and "git version --build-options" learned to
include use of gettext feature, to make it easier to diagnose
problems around l10n.
Dscho observed that SVN tests are taking too much time in CI leak
checking tasks, but most time is spent not in our code but in libsvn
code (which happen to be written in Perl), whose leaks have little
value to discover for us. Skip SVN, P4, and CVS tests in the leak
checking tasks.
(merge 047bd7dfe3 js/ci-leak-skip-svn later to maint).
Fixes since v2.52
Ever since we added whitespace rules for this project, we misspelt
an entry, which has been corrected.
(merge 358e94dc70 jc/gitattributes-whitespace-no-indent-fix later to maint).
The code to expand attribute macros has been rewritten to avoid
recursion to avoid running out of stack space in an uncontrolled
way.
(merge 42ed046866 jk/attr-macroexpand-wo-recursion later to maint).
Adding a repository that uses a different hash function is a no-no,
but "git submodule add" did not prevent it, which has been corrected.
(merge 6fe288bfbc bc/submodule-force-same-hash later to maint).
An earlier check added to osx keychain credential helper to avoid
storing the credential itself supplied was overeager and rejected
credential material supplied by other helper backends that it would
have wanted to store, which has been corrected.
(merge 4580bcd235 kn/osxkeychain-idempotent-store-fix later to maint).
The "git repo structure" subcommand tried to align its output but
mixed up byte count and display column width, which has been
corrected.
(merge 7a03a10a3a jx/repo-struct-utf8width-fix later to maint).
Yet another corner case fix around renames in the "ort" merge
strategy.
(merge a562d90a35 en/ort-rename-another-fix later to maint).
Test leakfix.
(merge 14b561e768 jk/test-mktemp-leakfix later to maint).
Update a version of action used at the GitHub Actions CI.
(merge cd99203f86 js/ci-github-setup-go-update later to maint).
The "return errno = EFOO, -1" construct, which is heavily used in
compat/mingw.c and triggers warnings under "-Wcomma", has been
rewritten to avoid the warnings.
(merge af3919816f js/mingw-assign-comma-fix later to maint).
Makefile based build have recently been updated to build a
libgit.a that also has reftable and xdiff objects; CMake based
build procedure has been updated to match.
(merge b0d5c88cca js/cmake-libgit-fix later to maint).
Under-allocation fix.
(merge d22a488482 js/wincred-get-credential-alloc-fix later to maint).
"git worktree list" attempts to show paths to worktrees while
aligning them, but miscounted display columns for the paths when
non-ASCII characters were involved, which has been corrected.
(merge 08dfa59835 pw/worktree-list-display-width-fix later to maint).
"Windows+meson" job at the GitHub Actions CI was hard to debug, as
it did not show and save failed test artifacts, which has been
corrected.
(merge 17bd1108ea jk/ci-windows-meson-test-fix later to maint).
Emulation code clean-up.
(merge 2367c6bcd6 gf/win32-pthread-cond-wait-err later to maint).
Various issues detected by Asan have been corrected.
(merge a031b6181a jk/asan-bonanza later to maint).
"git config get --path" segfaulted on an ":(optional)path" that
does not exist, which has been corrected.
(merge 0bd16856ff jc/optional-path later to maint).
The "--committer-date-is-author-date" option of "git \
am/rebase" is
a misguided one. The documentation is updated to discourage its
use.
(merge fbf3d0669f kh/doc-committer-date-is-author-date later to maint).
The option help text given by "git config unset -h" described
the "--all" option to "replace", not "unset", \
multiple variables,
which has been corrected.
(merge 18bf67b753 rs/config-unset-opthelp-fix later to maint).
The error message given by "git config set", when the variable
being updated has more than one values defined, used old style "git
config" syntax with an incorrect option in its hint, both of which
have been corrected.
(merge df963f0df4 rs/config-set-multi-error-message-fix later to maint).
"git replay" forgot to omit the "gpgsig-sha256" extended header
from the resulting commit the same way it omits "gpgsig", which has
been corrected.
(merge 9f3a115087 pw/replay-exclude-gpgsig-fix later to maint).
A few tests have been updated to work under the shell compatible
mode of zsh.
(merge a92f243a94 bc/zsh-testsuite later to maint).
The way patience diff finds LCS has been optimized.
(merge c7e3b8085b yc/xdiff-patience-optim later to maint).
Recent optimization to "last-modified" command introduced use of
uninitialized block of memory, which has been corrected.
(merge fe4e60759b tc/last-modified-active-paths-optimization later to maint).
"git last-modified" used to mishandle "--" to mark the \
beginning of
pathspec, which has been corrected.
(merge 05491b90ce js/last-modified-with-sparse-checkouts later to maint).
Emulation code clean-up.
(merge 42aa7603aa gf/win32-pthread-cond-init later to maint).
"git submodule add" to add a submodule under <name> segfaulted,
when a submodule.<name>.something is already in .gitmodules file
without defining where its submodule.<name>.path is, which has been
corrected.
(merge dd8e8c786e jc/submodule-add later to maint).
"git fetch" that involves fetching tags, when a tag being fetched
needs to overwrite existing one, failed to fetch other tags, which
has been corrected.
(merge b7b17ec8a6 kn/fix-fetch-backfill-tag-with-batched-ref-updates later to maint).
Document "rev-list --filter-provided-objects" better.
(merge 6d8dc99478 jt/doc-rev-list-filter-provided-objects later to maint).
Even when there is no changes in the packfile and no need to
recompute bitmaps, "git repack" recomputed and updated the MIDX
file, which has been corrected.
(merge 6ce9d558ce ps/repack-avoid-noop-midx-rewrite later to maint).
Update HTTP tests to adjust for changes in curl 8.18.0
(merge 17f4b01da7 jk/test-curl-updates later to maint).
Workaround the "iconv" shipped as part of macOS, which is broken
handling stateful ISO/IEC 2022 encoded strings.
(merge cee341e9dd rs/macos-iconv-workaround later to maint).
Running "git diff" with "--name-only" and other options that \
allows
us not to look at the blob contents, while objects that are lazily
fetched from a promisor remote, caused use-after-free, which has
been corrected.
The ort merge machinery hit an assertion failure in a history with
criss-cross merges renamed a directory and a non-directory, which
has been corrected.
(merge 979ee83e8a en/ort-recursive-d-f-conflict-fix later to maint).
Diagnose invalid bundle-URI that lack the URI entry, instead of
crashing.
(merge 7796c14a1a sb/bundle-uri-without-uri later to maint).
Mailmap update for Karsten
(merge e97678c4ef js/mailmap-karsten-blees later to maint).
Perf-test fixes.
(merge 79d301c767 jk/t-perf-fixes later to maint).
Fix for a performance regression in "git cat-file".
(merge 9e8b448dd8 jk/cat-file-avoid-bitmap-when-unneeded later to maint).
Update a FAQ entry on synching two separate repositories using the
"git stash export/import" recently introduced.
(merge 02fc44a989 bc/doc-stash-import-export later to maint).
"git fsck" used inconsistent set of refs to show a confused
warning, which has been corrected.
Some error messages from the http transport layer lacked the
terminating newline, which has been corrected.
(merge a8227ae8d5 kt/http-backend-errors later to maint).
"git repack --geometric" did not work with promisor packs, which
has been corrected.
The logic that avoids reusing MIDX files with a wrong checksum was
broken, which has been corrected.
|
2025-11-18 17:24:48 by Adam Ciarcinski | Files touched by this commit (5) |  |
Log message:
git: updated to 2.52.0
Git v2.52 Release Notes
=======================
UI, Workflows & Features
------------------------
* The "list" subcommand of "git refs" acts as a front-end for
"git for-each-ref".
* "git cmd --help-all" now works outside repositories.
* "git diff-tree" learned "--max-depth" option.
* A new subcommand "git repo" gives users a way to grab various
repository characteristics.
* A new command "git last-modified" has been added to show the closest
ancestor commit that touched each path.
* The "git refs exists" command that works like "git show-ref \
--exists"
has been added.
* "git repo info" learns the short-hand option "-z" that is \
the same as
"--format=nul", and learns to report the objects format used in the
repository.
* "core.commentChar=auto" that attempts to dynamically pick a
suitable comment character is non-workable, as it is too much
trouble to support for little benefit, and is marked as deprecated.
* "git send-email" learned to drive "git imap-send" to \
store already
sent e-mails in an IMAP folder.
* The "promisor-remote" capability mechanism has been updated to
allow the "partialCloneFilter" settings and the "token" \
value to be
communicated from the server side.
* Declare that "git init" that is not otherwise configured uses
'main' as the initial branch, not 'master', starting Git 3.0.
* Keep giving hint about the default initial branch name for users
who may be surprised after Git 3.0 switch-over.
* The stash.index configuration variable can be set to make "git stash
pop/apply" pretend that it was invoked with "--index".
* "git fast-import" learned that \
"--signed-commits=<how>" option that
corresponds to that of "git fast-export".
* Marking a hunk 'selected' in "git add -p" and then splitting made
all the split pieces 'selected'; this has been changed to make them
all 'undecided', which gives better end-user experience.
* Configuration variables that take a pathname as a value
(e.g. blame.ignorerevsfile) can be marked as optional by prefixing
":(optional)" before its value.
* Show 'P'ipe command in "git add -p".
* "git sparse-checkout" subcommand learned a new "clean" \
action to
prune otherwise unused working-tree files that are outside the
areas of interest.
* "git fast-import" is taught to handle signed tags, just like it
recently learned to handle signed commits, in different ways.
* A new configuration variable commitGraph.changedPaths allows to
turn "--changed-paths" on by default for "git commit-graph".
* "Symlink symref" has been added to the list of things that will
disappear at Git 3.0 boundary.
* "git maintenance" command learns the "geometric" strategy \
where it
avoids doing maintenance tasks that rebuilds everything from
scratch.
* "git repo structure", a new command.
* The help text and manual page of "git bisect" command have been
made consistent with each other.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* string_list_split*() family of functions have been extended to
simplify common use cases.
* Arrays of strbuf is often a wrong data structure to use, and
strbuf_split*() family of functions that create them often have
better alternatives. Update several code paths and replace
strbuf_split*().
* Revision traversal limited with pathspec, like "git log dir/*",
used to ignore changed-paths Bloom filter when the pathspec
contained wildcards; now they take advantage of the filter when
they can.
* Doc lint updates to encourage the newer and easier-to-use
`synopsis` format, with fixes to a handful of existing uses.
* Remove dependency on the_repository and other globals from the
commit-graph code, and other changes unrelated to de-globaling.
* Discord has been added to the first contribution documentation as
another way to ask for help.
* Inspired by Ezekiel's recent effort to showcase Rust interface, the
hash function implementation used to hash lines have been updated
to the one used for ELF symbol lookup by Glibc.
* Instead of scanning for the remaining items to see if there are
still commits to be explored in the queue, use khash to remember
which items are still on the queue (an unacceptable alternative is
to reserve one object flag bits).
* The bulk-checkin code used to depend on a file-scope static
singleton variable, which has been updated to pass an instance
throughout the callchain.
* The work to build on the bulk-checkin infrastructure to create many
objects at once in a transaction and to abstract it into the
generic object layer continues.
* CodingGuidelines now spells out how bitfields are to be written.
* Adjust to the way newer versions of cURL selectively enable tracing
options, so that our tests can continue to work.
* The clear_alloc_state() API function was not fully clearing the
structure for reuse, but since nobody reuses it, replace it with a
variant that frees the structure as well, making the callers simpler.
* "git range-diff" learned a way to limit the memory consumed by
O(N*N) cost matrix.
* Some places in the code confused a variable that is *not* a boolean
to enable color but is an enum that records what the user requested
to do about color. A couple of bugs of this sort have been fixed,
while the code has been cleaned up to prevent similar bugs in the
future.
* The build procedure based on meson learned a target to only build
documentation, similar to "make doc".
(merge ff4ec8ded0 ps/meson-build-docs later to maint).
* Dip our toes a bit to (optionally) use Rust implemented helper
called from our C code.
* Documentation for "git log --pretty" options has been updated
to make it easier to translate.
* Instead of three library archives (one for git, one for reftable,
and one for xdiff), roll everything into a single libgit.a archive.
This would help later effort to FFI into Rust.
* The beginning of SHA1-SHA256 interoperability work.
* Build procedure for a few credential helpers (in contrib/) have
been updated.
* CI improvements to handle the recent Rust integration better.
* The code in "git repack" machinery has been cleaned up to prepare
for incremental update of midx files.
* Two slightly different ways to get at "all the packfiles" in API
has been cleaned up.
* The code to walk revision graph to compute merge base has been
optimized.
* AI guidelines has been added to our documentation set.
* Contributed credential helpers (obviously in contrib/) now have "cd
$there && make install" target.
* The "MyFirstContribution" tutorial tells the reader how to send out
their patches; the section gained a hint to verify the message
reached the mailing list.
* The "debug" ref-backend was missing a method implementation, which
has been corrected.
* Build procedure for Wincred credential helper has been updated.
* The build procedure based on meson learned to allow builders to
specify the directory to install HTML documents.
* Building "git contacts" script (in contrib/) left the resulting
file unexecutable, which has been corrected.
Fixes since v2.51
-----------------
Unless otherwise noted, all the changes in 2.51.X maintenance track,
including security updates, are included in this release.
* During interactive rebase, using 'drop' on a merge commit lead to
an error, which was incorrect.
* "git refs migrate" to migrate the reflog entries from a refs
backend to another had a handful of bugs squashed.
* "git remote rename origin upstream" failed to move origin/HEAD to
upstream/HEAD when origin/HEAD is unborn and performed other
renames extremely inefficiently, which has been corrected.
(merge 16c4fa26b9 ps/remote-rename-fix later to maint).
* "git describe" has been optimized by using better data structure.
(merge 08bb69d70f rs/describe-with-prio-queue later to maint).
* "git push" had a code path that led to BUG() but it should have
been a die(), as it is a response to a usual but invalid end-user
action to attempt pushing an object that does not exist.
* Various bugs about rename handling in "ort" merge strategy have
been fixed.
* "git jump" (in contrib/) fails to parse the diff header correctly
when a file has a space in its name, which has been corrected.
(merge 621ce9c1c6 gh/git-jump-pathname-with-sp later to maint).
* "git diff --no-index" run inside a subdirectory under control of a
Git repository operated at the top of the working tree and stripped
the prefix from the output, and oddballs like "-" (stdin) did not
work correctly because of it. Correct the set-up by undoing what
the set-up sequence did to cwd and prefix.
* Various options to "git diff" that makes comparison ignore certain
aspects of the differences (like "space changes are ignored",
"differences in lines that match these regular expressions are
ignored") did not work well with "--name-only" and friends.
(merge b55e6d36eb ly/diff-name-only-with-diff-from-content later to maint).
* The above caused regressions, which has been corrected.
* Documentation for "git rebase" has been updated.
(merge 3f7f2b0359 je/doc-rebase later to maint).
* The start_delayed_progress() function in the progress eye-candy API
did not clear its internal state, making an initial delay value
larger than 1 second ineffective, which has been corrected.
* The compatObjectFormat extension is used to hide an incomplete
feature that is not yet usable for any purpose other than
developing the feature further. Document it as such to discourage
its use by mere mortals.
* "git log -L..." compared trees of multiple parents with the tree of the
merge result in an unnecessarily inefficient way.
(merge 0a15bb634c sg/line-log-merge-optim later to maint).
* Under a race against another process that is repacking the
repository, especially a partially cloned one, "git fetch" may
mistakenly think some objects we do have are missing, which has
been corrected.
* "git fetch" can clobber a symref that is dangling when the
remote-tracking HEAD is set to auto update, which has been
corrected.
* "git describe <blob>" misbehaves and/or crashes in some corner
cases, which has been taught to exit with failure gracefully.
(merge 7c10e48e81 jk/describe-blob later to maint).
* Manual page for "gitk" is updated with the current maintainer's
name.
* Update the instructions for using GGG in the MyFirstContribution
document to say that a GitHub PR could be made against `git/git`
instead of `gitgitgadget/git`.
* Makefile tried to run multiple "cargo build" which would not work
very well; serialize their execution to work around this problem.
* "git repack --path-walk" lost objects in some corner cases, which
has been corrected.
* "git ls-files <pathspec>..." should not necessarily have to expand
the index fully if a sparsified directory is excluded by the
pathspec; the code is taught to expand the index on demand to avoid
this.
(merge 681f26bccc ds/ls-files-lazy-unsparse later to maint).
* Windows "real-time monitoring" interferes with the execution of
tests and affects negatively in both correctness and performance,
which has been disabled in Gitlab CI.
* A broken or malicious "git fetch" can say that it has the same
object for many many times, and the upload-pack serving it can
exhaust memory storing them redundantly, which has been corrected.
* A corner case bug in "git log -L..." has been corrected.
* "git rev-parse --short" and friends failed to disambiguate two
objects with object names that share common prefix longer than 32
characters, which has been fixed.
(merge 8655908b9e jc/longer-disambiguation-fix later to maint).
* Some among "git add -p" and friends ignored color.diff and/or
color.ui configuration variables, which is an old regression, which
has been corrected.
* "git subtree" (in contrib/) did not work correctly when splitting
squashed subtrees, which has been improved.
* Import a newer version of the clar unit testing framework.
(merge 93dbb6b3c5 ps/clar-updates later to maint).
* "git send-email --compose --reply-to=<address>" used to add
duplicated Reply-To: header, which made mailservers unhappy. This
has been corrected.
(merge f448f65719 nb/send-email-no-dup-reply-to later to maint).
* "git rebase -i" failed to clean-up the commit log message when the
command commits the final one in a chain of "fixup" commands, which
has been corrected.
* There are double frees and leaks around setup_revisions() API used
in "git stash show", which has been fixed, and setup_revisions()
API gained a wrapper to make it more ergonomic when using it with
strvec-manged argc/argv pairs.
(merge a04bc71725 jk/setup-revisions-freefix later to maint).
* Deal more gracefully with directory / file conflicts when the files
backend is used for ref storage, by failing only the ones that are
involved in the conflict while allowing others.
* "git last-modified" operating in non-recursive mode used to trigger
a BUG(), which has been corrected.
* The use of "git config get" command to learn how ANSI color
sequence is for a particular type, e.g., "git config get
--type=color --default=reset no.such.thing", isn't very ergonomic.
(merge e4dabf4fd6 ps/config-get-color-fixes later to maint).
* The "do you still use it?" message given by a command that is
deeply deprecated and allow us to suggest alternatives has been
updated.
* Clang-format update to let our control macros be formatted the way we
had them traditionally, e.g., "for_each_string_list_item()" without
space before the parentheses.
* A few places where a size_t value was cast to curl_off_t without
checking has been updated to use the existing helper function.
* "git reflog write" did not honor the configured user.name/email
which has been corrected.
* Handling of an empty subdirectory of .git/refs/ in the ref-files
backend has been corrected.
* Our CI script requires "sudo" that can be told to preserve
environment, but Ubuntu replaced with "sudo" with an implementation
that lacks the feature. Work this around by reinstalling the
original version.
* The reftable backend learned to sanity check its on-disk data more
carefully.
(merge 466a3a1afd kn/reftable-consistency-checks later to maint).
* A lot of code clean-up of xdiff.
Split out of a larger topic.
(merge 8b9c5d2e3a en/xdiff-cleanup later to maint).
* "git format-patch --range-diff=... --notes=..." did not drive the
underlying range-diff with correct --notes parameter, ending up
comparing with different set of notes from its main patch output
you would get from "git format-patch --notes=..." for a singleton
patch.
* The code in "git add -p" and friends to iterate over hunks was
riddled with bugs, which has been corrected.
* A few more things that patch authors can do to help maintainer to
keep track of their topics better.
(merge 1a41698841 tb/doc-submitting-patches later to maint).
* An earlier addition to "git diff --no-index A B" to limit the
output with pathspec after the two directories misbehaved when
these directories were given with a trailing slash, which has been
corrected.
* The "--short" option of "git status" that meant output \
for humans
and "-z" option to show NUL delimited output format did not mix
well, and colored some but not all things. The command has been
updated to color all elements consistently in such a case.
* Unicode width table update.
* GPG signing test set-up has been broken for a year, which has been
corrected.
(merge 516bf45749 jc/t1016-setup-fix later to maint).
* Recent OpenSSH creates the Unix domain socket to communicate with
ssh-agent under $HOME instead of /tmp, which causes our test to
fail doe to overly long pathname in our test environment, which has
been worked around by using "ssh-agent -T".
* strbuf_split*() to split a string into multiple strbufs is often a
wrong API to use. A few uses of it have been removed by
simplifying the code.
(merge 2ab72a16d9 ob/gpg-interface-cleanup later to maint).
* "git shortlog" knows "--committer" and \
"--author" options, which
the command line completion (in contrib/) did not handle well,
which has been corrected.
(merge c568fa8e1c kf/log-shortlog-completion-fix later to maint).
* "git bisect" command did not react correctly to "git bisect \
help"
and "git bisect unknown", which has been corrected.
(merge 2bb3a012f3 rz/bisect-help-unknown later to maint).
* The 'q'(uit) command in "git add -p" has been improved to quit
without doing any meaningless work before leaving, and giving EOF
(typically control-D) to the prompt is made to behave the same way.
* The wildmatch code had a corner case bug that mistakenly makes
"foo**/bar" match with "foobar", which has been corrected.
(merge 1940a02dc1 jk/match-pathname-fix later to maint).
* Tests did not set up GNUPGHOME correctly, which is fixed but some
flaky tests are exposed in t1016, which needs to be addressed
before this topic can move forward.
(merge 6cd8369ef3 tz/test-prepare-gnupghome later to maint).
* The patterns used in the .gitignore files use backslash in the way
documented for fnmatch(3); document as such to reduce confusion.
(merge 8a6d158a1d jk/doc-backslash-in-exclude later to maint).
* The version of macos image used in GitHub CI has been updated to
macos-14, as the macos-13 that we have been using got deprecated.
Perforce binary used there has been changed to arm64 version to
match.
(merge 73b9cdb7c4 jc/ci-use-macos-14 later to maint).
(merge ffff0bb0da jc/ci-use-arm64-p4-on-macos later to maint).
* Other code cleanup, docfix, build fix, etc.
|
2025-06-30 21:10:21 by Adam Ciarcinski | Files touched by this commit (7) |  |
Log message:
git: updated to 2.50.0
Git v2.50 Release Notes
=======================
UI, Workflows & Features
------------------------
* A post-processing filter for "diff --raw" output has been
introduced.
* "git repack" learned "--combine-cruft-below-size" option that
controls how cruft-packs are combined.
* TCP keepalive behaviour on http transports can now be configured by
calling cURL library.
* Incrementally updating multi-pack index files.
* "git reflog" learns "drop" subcommand, that discards the \
entire
reflog data for a ref.
* A new userdiff driver for ".ini" format configuration files has
been added.
* The job to coalesce loose objects into packfiles in "git
maintenance" now has configurable batch size.
* "git clone" still gave the message about the default branch name;
this message has been turned into an advice message that can be
turned off.
* "git rev-list" learns machine-parsable output format that delimits
each field with NUL.
* "git maintenance" learns a new task to expire reflog entries.
* Auth-related (and unrelated) error handling in send-email has been
made more robust.
* Updating multiple references have only been possible in an all-or-nothing
fashion with transactions, but it can be more efficient to batch
multiple updates even when some of them are allowed to fail in a
best-effort manner. A new "best effort batches of updates" mode
has been introduced.
* "git help --build-options" reports SHA-1 and SHA-256 backends used
in the build.
* "git cat-file --batch" and friends learned to allow \
"--filter=" to
omit certain objects, just like the transport layer does.
* "git blame --porcelain" mode now talks about unblamable lines and
lines that are blamed to an ignored commit.
* The build procedure installs bash (but not zsh) completion script.
* send-email has been updated to work better with Outlook's SMTP server.
* "git diff --minimal" used to give non-minimal output when its
optimization kicked in, which has been disabled.
* "git index-pack --fix-thin" used to abort to prevent a cycle in
delta chains from forming in a corner case even when there is no
such cycle.
* Make repository clean-up tasks that "gc" can do available to "git
maintenance" front-end.
* Bundle-URI feature did not use refs recorded in the bundle other
than normal branches as anchoring points to optimize the follow-up
fetch during "git clone"; now it is told to utilize all.
* The `send-email` documentation has been updated with OAuth2.0
related examples.
* Two of the "scalar" subcommands that add a repository that hasn't
been under "scalar"'s control are taught an option not to enable the
scheduled maintenance on it.
* The userdiff pattern for shell scripts has been updated to cope
with more bash-isms.
* "git merge-tree" learned an option to see if it resolves cleanly
without actually creating a result.
* The commit title in the "rebase -i" todo file are now prefixed with
'#', just like a merge commit being replayed.
* "git receive-pack" optionally learns not to care about connectivity
check, which can be useful when the repository arranges to ensure
connectivity by some other means.
* "git notes --help" documentation updates.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* A handful of built-in command implementations have been rewritten
to use the repository instance supplied by git.c:run_builtin(), its
caller.
* "git fsck" becomes more careful when checking the refs.
* "git fast-export | git fast-import" learns to deal with commit and
tag objects with embedded signatures a bit better. This is highly
experimental and the format of the data stream may change in the
future without compatibility guarantees.
* The code paths to check whether a refname X is available (by seeing
if another ref X/Y exists, etc.) have been optimized.
* First step of deprecating and removing merge-recursive.
* In protocol v2 where the refs advertisement is constrained, we try
to tell the server side not to limit the advertisement when there
is no specific need to, which has been the source of confusion and
recent bugs. Revamp the logic to simplify.
* Update meson based build procedure for breaking changes support.
* Enable -Wunreachable-code for developer builds.
* Ensure what we write in assert() does not have side effects,
and introduce ASSERT() macro to mark those that cannot be
mechanically checked for lack of side effects.
* Give more meaningful error return values from block writer layer of
the reftable ref-API backend.
* Make the code in reftable library less reliant on the service
routines it used to borrow from Git proper, to make it easier to
use by external users of the library.
* CI update.
* The object layer has been updated to take an explicit repository
instance as a parameter in more code paths.
* Some warnings from "-Wsign-compare" for builtin/rm.c have been
squelched.
* A few traditional unit tests have been rewritten to use the clar
framework.
* Some warnings from "-Wsign-compare" for pathspec.c have been
squelched.
* "make test" used to have a hard dependency on (basic) Perl; tests
have been rewritten help environment with NO_PERL test the build as
much as possible.
* Remove remnants of the recursive merge strategy backend, which was
superseded by the ort merge strategy.
* Optimize the code to dedup references recorded in a bundle file.
* Update parse-options API to catch mistakes to pass address of an
integral variable of a wrong type/size.
* Since a call to repo_config() can be called with repo set to NULL
these days, a command that is marked as RUN_SETUP in the builtin
command table does not have to check repo with NULL before making
the call.
* Overhaul of the reftable API.
* Reduce requirement for Perl in our documentation build and a few
scripts.
* The build procedure based on Meson learned to drive the
benchmarking tests.
* Code clean-up for meson-based build infrastructure.
* Add an equivalent to "make hdr-check" target to meson based builds.
* Further code clean-up in the object-store layer.
* Build performance fix.
* Teach "git send-email" to also consult `hostname -f` for mail
domain to compute the identity given to SMTP servers.
* The dependency on the_repository variable has been reduced from the
code paths in "git replay".
* Support to create a loose object file with unknown object type has
been dropped.
* The code path to access the "packed-refs" file while "fsck" is
taught to mmap the file, instead of reading the whole file into
memory.
* Assorted fixes for issues found with CodeQL.
* Remove the leftover hints to the test framework to mark tests that
do not pass the leak checker tests, as they should no longer be
needed.
* When a stale .midx file refers to .pack files that no longer exist,
we ended up checking for these non-existent files repeatedly, which
has been optimized by memoizing the non-existence.
* Build settings have been improved for BSD based systems.
* Newer version of libcURL detected curl_easy_setopt() calls we made
with platform-natural "int" when we should have used \
"long", which
all have been corrected.
* Tests that compare $HOME and $(pwd), which should be the same
directory unless the tests chdir's around, would fail when the user
enters the test directory via symbolic links, which has been
corrected.
Fixes since v2.49
-----------------
* The refname exclusion logic in the packed-ref backend has been
broken for some time, which confused upload-pack to advertise
different set of refs. This has been corrected.
(merge 10e8a9352b tb/refs-exclude-fixes later to maint).
* The merge-recursive and merge-ort machinery crashed in corner cases
when certain renames are involved.
(merge 3adba40858 en/merge-process-renames-crash-fix later to maint).
* Certain "cruft" objects would have never been refreshed when there
are multiple cruft packs in the repository, which has been
corrected.
(merge 08f612ba70 tb/multi-cruft-pack-refresh-fix later to maint).
* The xdiff code on 32-bit platform misbehaved when an insanely large
context size is given, which has been corrected.
(merge d39e28e68c rs/xdiff-context-length-fix later to maint).
* GitHub Actions CI switched on a CI/CD variable that does not exist
when choosing what packages to install etc., which has been
corrected.
(merge ee89f7c79d kn/ci-meson-check-build-docs-fix later to maint).
* Using "git name-rev --stdin" as an example, improve the framework to
prepare tests to pretend to be in the future where the breaking
changes have already happened.
(merge de3dec1187 jc/name-rev-stdin later to maint).
* An earlier code refactoring of the hash machinery missed a few
required calls to init_fn.
(merge d39f04b638 jh/hash-init-fixes later to maint).
* A documentation page was left out from formatting and installation,
which has been corrected.
(merge ae85116f18 pw/build-breaking-changes-doc later to maint).
* The bash command line completion script (in contrib/) has been
updated to cope with remote repository nicknames with slashes in
them.
(merge 778d2f1760 dm/completion-remote-names-fix later to maint).
* "Dubious ownership" checks on Windows has been tightened up.
(merge 5bb88e89ef js/mingw-admins-are-special later to maint).
* Layout configuration in vimdiff backend didn't work as advertised,
which has been corrected.
(merge 93bab2d04b fr/vimdiff-layout-fixes later to maint).
* Fix our use of zlib corner cases.
(merge 1cb2f293f5 jk/zlib-inflate-fixes later to maint).
* Fix lockfile contention in reftable code on Windows.
(merge 0a3dceabf1 ps/mingw-creat-excl-fix later to maint).
* "git-merge-file" documentation source, which has lines that look
like conflict markers, lacked custom conflict marker size defined,
which has been corrected..
(merge d3b5832381 pw/custom-conflict-marker-size-for-merge-related-docs later \
to maint).
* Squelch false-positive from sparse.
(merge da87b58014 dd/sparse-glibc-workaround later to maint).
* Adjust to the deprecation of use of Ubuntu 20.04 GitHub Actions CI.
(merge 832d9f6d0b js/ci-github-update-ubuntu later to maint).
* Work around CI breakage due to fedora base image getting updated.
(merge 8a471a663b js/ci-fedora-gawk later to maint).
* A ref transaction corner case fix.
(merge b9fadeead7 jt/ref-transaction-abort-fix later to maint).
* Random build fixes.
(merge 85e1d6819f ps/misc-build-fixes later to maint).
* "git fetch [<remote>]" with only the configured fetch refspec
should be the only thing to update refs/remotes/<remote>/HEAD,
but the code was overly eager to do so in other cases.
* Incorrect sorting of refs with bytes with high-bit set on platforms
with signed char led to a BUG, which has been corrected.
* "make perf" fixes.
(merge 1665f12fa0 pb/perf-test-fixes later to maint).
* Doc mark-up updates.
(merge 5a5565ec44 ja/doc-reset-mv-rm-markup-updates later to maint).
* Work around false positive from CodeQL checker.
(merge 0f558141ed js/range-check-codeql-workaround later to maint).
* "git log --{left,right}-only A...B", when A and B does not share
any common ancestor, now behaves as expected.
(merge e7ef4be7c2 mh/left-right-limited later to maint).
* Document the convention to disable hooks altogether by setting the
hooksPath configuration variable to /dev/null.
(merge 1b2eee94f1 ds/doc-disable-hooks later to maint).
* Make sure outage of third-party sites that supply P4, Git-LFS, and
JGit we use for testing would not prevent our CI jobs from running
at all.
* Various build tweaks, including CSPRNG selection on some platforms.
(merge cdda67de03 rj/build-tweaks later to maint).
* Developer support fix..
(merge 32b74b9809 js/git-perf-env-override later to maint).
* Fix for scheduled maintenance tasks on platforms using launchctl.
(merge eb2d7beb0e jh/gc-launchctl-schedule-fix later to maint).
* Update to arm64 Windows port (part of which had been reverted as it
broke builds for existing platforms, which may need to be redone in
future releases).
* hashmap API clean-up to ensure hashmap_clear() leaves a cleared map
in a reusable state.
(merge 9481877de3 en/hashmap-clear-fix later to maint).
* "git mv a a/b dst" would ask to move the directory 'a' itself, as
well as its contents, in a single destination directory, which is
a contradicting request that is impossible to satisfy. This case is
now detected and the command errors out.
(merge 974f0d4664 ps/mv-contradiction-fix later to maint).
* Further refinement on CI messages when an optional external
software is unavailable (e.g. due to third-party service outage).
(merge 956acbefbd jc/ci-skip-unavailable-external-software later to maint).
* Test result aggregation did not work in Meson based CI jobs.
(merge bd38ed5be1 ps/ci-test-aggreg-fix-for-meson later to maint).
* Code clean-up around stale CI elements and building with Visual Studio.
(merge a7b060f67f js/ci-buildsystems-cleanup later to maint).
* "git add 'f?o'" did not add 'foo' if 'f?o', an unusual pathname,
also existed on the working tree, which has been corrected.
(merge ec727e189c kj/glob-path-with-special-char later to maint).
* The fallback implementation of open_nofollow() depended on
open("symlink", O_NOFOLLOW) to set errno to ELOOP, but a few BSD
derived systems use different errno, which has been worked around.
(merge f47bcc3413 cf/wrapper-bsd-eloop later to maint).
* Use-after-free fix in the sequencer.
(merge 5dbaec628d pw/sequencer-reflog-use-after-free later to maint).
* win+Meson CI pipeline, unlike other pipelines for Windows,
used to build artifacts in developer mode, which has been changed to
build them in release mode for consistency.
(merge 184abdcf05 js/ci-build-win-in-release-mode later to maint).
* CI settings at GitLab has been updated to run MSVC based Meson job
automatically (as opposed to be done only upon manual request).
(merge 6389579b2f ps/ci-gitlab-enable-msvc-meson-job later to maint).
* "git apply" and "git add -i/-p" code paths no longer \
unnecessarily
expand sparse-index while working.
(merge ecf9ba20e3 ds/sparse-apply-add-p later to maint).
* Avoid adding directory path to a sparse-index tree entries to the
name-hash, since they would bloat the hashtable without anybody
querying for them. This was done already for a single threaded
part of the code, but now the multi-threaded code also does the
same.
(merge 2e60aabc75 am/sparse-index-name-hash-fix later to maint).
* Recent versions of Perl started warning against "! A =~ /pattern/"
which does not negate the result of the matching. As it turns out
that the problematic function is not even called, it was removed.
(merge 67cae845d2 op/cvsserver-perl-warning later to maint).
* "git apply --index/--cached" when applying a deletion patch in
reverse failed to give the mode bits of the path "removed" by the
patch to the file it creates, which has been corrected.
* "git verify-refs" errored out in a repository in which
linked worktrees were prepared with Git 2.43 or lower.
(merge d5b3c38b8a sj/ref-contents-check-fix later to maint).
* Update total_ram() function on BSD variants.
* Update online_cpus() function on BSD variants.
* Revert a botched bswap.h change that broke ntohll() functions on
big-endian systems with __builtin_bswap32/64().
* Fixes for GitHub Actions Coverity job.
(merge 3cc4fc1ebd js/github-ci-win-coverity-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint).
(merge 2bfd3b3685 ab/decorate-code-cleanup later to maint).
(merge 5337daddc7 am/dir-dedup-decl-of-repository later to maint).
(merge 554051d691 en/diff-rename-follow-fix later to maint).
(merge a18c18b470 en/random-cleanups later to maint).
(merge 5af21c9acb hj/doc-rev-list-ancestry-fix later to maint).
(merge 26d76ca284 aj/doc-restore-p-update later to maint).
(merge 2c0dcb9754 cc/lop-remote later to maint).
(merge 7b399322a2 ja/doc-branch-markup later to maint).
(merge ee434e1807 pw/doc-pack-refs-markup-fix later to maint).
(merge c000918eb7 tb/bitamp-typofix later to maint).
(merge fa8cd29676 js/imap-send-peer-cert-verify later to maint).
(merge 98b423bc1c rs/clear-commit-marks-simplify later to maint).
(merge 133d065dd6 ta/bulk-checkin-signed-compare-false-warning-fix later to \
maint).
(merge d2827dc31e es/meson-build-skip-coccinelle later to maint).
(merge ee8edb7156 dk/vimdiff-doc-fix later to maint).
(merge 107d889303 md/t1403-path-is-file later to maint).
(merge abd4192b07 js/comma-semicolon-confusion later to maint).
(merge 27b7264206 ab/environment-clean-header later to maint).
(merge ff4a749354 as/typofix-in-env-h-header later to maint).
(merge 86eef3541e az/tighten-string-array-constness later to maint).
(merge 25292c301d lo/remove-log-reencode-from-rev-info later to maint).
(merge 1aa50636fd jk/p5332-testfix later to maint).
(merge 42cf4ac552 ps/ci-resurrect-p4-on-github later to maint).
(merge 104add8368 js/diff-codeql-false-positive-workaround later to maint).
(merge f62977b93c en/get-tree-entry-doc later to maint).
(merge e5dd0a05ed ly/am-split-stgit-leakfix later to maint).
(merge bac220e154 rc/t1001-test-path-is-file later to maint).
(merge 91db6c735d ly/reftable-writer-leakfix later to maint).
(merge 20e4e9ad0b jc/doc-synopsis-option-markup later to maint).
(merge cddcee7f64 es/meson-configure-build-options-fix later to maint).
(merge cea9f55f00 wk/sparse-checkout-doc-fix later to maint).
|
2025-03-30 10:56:10 by Adam Ciarcinski | Files touched by this commit (4) |  |
Log message:
git: updated to 2.49.0
Git v2.49 Release Notes
=======================
UI, Workflows & Features
------------------------
* Completion script updates for zsh
* "git pack-objects" and its wrapper "git repack" learned an \
option
to use an alternative path-hash function to improve delta-base
selection to produce a packfile with deeper history than window
size.
* "git gc" learned the "--expire-to" option and passes it down to
underlying "git repack".
* "[help] autocorrect = 1" used to be a way to say "please wait for
0.1 second after suggesting a typofix of the command name before
running that command"; now it means "yes, if there is a plausible
typofix for the command name, please run it immediately".
* "git clone" learned to make a shallow clone for a single commit
that is not necessarily be at the tip of any branch.
* Lazy-loading missing files in a blobless clone on demand is costly
as it tends to be one-blob-at-a-time. "git backfill" is introduced
to help bulk-download necessary files beforehand.
* "git push --atomic --porcelain" used to ignore failures from the
other side, losing the error status from the child process, which
has been corrected.
* "git rev-list --missing=" learned to accept "print-info" \
that gives
known details expected of the missing objects, like path and type.
* Comes with an updated "gitk".
* The documentation of "git commit" and "git rebase" now refer to
commit titles as such, not "subject".
* The value of "uname -s" is by default sent over the wire as a part
of the "version" capability.
* "git refs migrate" can optionally be told not to migrate the reflog.
* The netrc support (via the cURL library) for the HTTP transport has
been re-enabled.
* Removal of ".git/branches" and ".git/remotes" support in the
BreakingChanges document has been further clarified.
* What happens to submodules during merge has been documented in a
bit more detail.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* More -Wsign-compare fixes.
* meson-based build now supports the unsafe-sha1 build knob.
* The meson-based build procedure covers contrib/ and other places as
well.
* The code to check LSan results has been simplified and made more
robust.
(merge 164a2516eb jk/lsan-race-ignore-false-positive later to maint).
* More code paths have a repository passed through the callchain,
instead of assuming the primary the_repository object.
* Move a few more unit tests to the clar test framework.
* Introduce a new API to visit objects in batches based on a common
path, or by type.
* Following the procedure we established to introduce breaking
changes for Git 3.0, allow an early opt-in for removing support of
$GIT_DIR/branches/ and $GIT_DIR/remotes/ directories to configure
remotes.
* The code paths to interact with zlib has been cleaned up in
preparation for building with zlib-ng.
* Foreign language interface for Rust into our code base has been added.
* All the documentation .txt files have been renamed to .adoc to help
content aware editors.
* "git difftool" code clean-up.
* Rename processing in the recursive merge backend has seen a micro
optimization.
* The path.[ch] API takes an explicit repository parameter passed
throughout the callchain, instead of relying on the_repository
singleton instance.
* Large-object promisor protocol extension has been introduced.
* The editorconfig file is updated to tell us that bash scripts are
similar to general Bourne shell scripts.
* Meson-based build procedure forgot to build some docs, which has
been corrected.
Fixes since v2.48
-----------------
* "git submodule" learned various ways to spell the same option,
e.g. "--branch=B" can be spelled "--branch B" or \
"-bB".
(merge b86f0f9071 re/submodule-parse-opt later to maint).
* Tweak the help text used for the option value placeholders by
parse-options API so that translations can customize the "<>"
placeholder signal (e.g. "--option=<value>").
(merge 5b34dd08d0 as/long-option-help-i18n later to maint).
* CI jobs gave sporadic failures, which turns out that that the
object finalization code was giving an error when it did not have
to.
(merge d7fcbe2c56 ps/object-collision-check later to maint).
* The code to compute "unique" name used git_rand() which can fail or
get stuck; the callsite does not require cryptographic security.
Introduce the "insecure" mode and use it appropriately.
(merge 0b4f8afef6 ps/reftable-get-random-fix later to maint).
* A misconfigured "fsck.skiplist" configuration variable was not
diagnosed as an error, which has been corrected.
(merge ca7158076f jt/fsck-skiplist-parse-fix later to maint).
* Extended SHA-1 expression parser did not work well when a branch
with an unusual name (e.g. "foo{bar") is involved.
(merge 191f0c8db2 en/object-name-with-funny-refname-fix later to maint).
* The meson build procedure looked for the 'version-def.h' file in a
wrong directory, which has been corrected.
(merge 4771501c0a tc/meson-use-our-version-def-h later to maint).
* The meson build procedure for Documentation/technical/ hierarchy was
missing necessary dependencies, which has been corrected.
(merge 1dca492edd sj/meson-doc-technical-dependency-fix later to maint).
* The "instaweb" bound only to local IP address without \
"--local" and
to all addresses with "--local", which was the other way around, when
using Python's http.server class, which has been corrected.
(merge 76baf97fa1 ak/instaweb-python-port-binding-fix later to maint).
* Document that it is insecure to use Personal Access Tokens, which
some hosting providers take as username/password, embedded in URLs.
(merge a90ff409f0 mh/doc-credential-helpers-with-pat later to maint).
* The help text from "git $cmd -h" appear on the standard output for
some $cmd and the standard error for others. The built-in commands
have been fixed to show them on the standard output consistently.
(merge f66d1423f5 jc/show-usage-help later to maint).
* The meson-driven build is now aware of "git-subtree" housed in
contrib/subtree hierarchy.
(merge 8454b42f94 ps/build-meson-subtree later to maint).
* It was possible for "git unpack-objects" and "git \
index-pack" to
make an unaligned access, which has been corrected.
(merge 98046591b9 jk/pack-header-parse-alignment-fix later to maint).
* The "cache" credential back-end did not handle authtype correctly,
which has been corrected.
(merge 0b43274850 mh/credential-cache-authtype-request-fix later to maint).
* "git branch --sort=..." and "git for-each-ref --format=... \
--sort=..."
did not work as expected with some atoms, which has been corrected.
(merge c5490ce9d1 rs/ref-fitler-used-atoms-value-fix later to maint).
* reflog entries for symbolic ref updates were broken, which has been
corrected.
(merge 3519492430 kn/reflog-symref-fix later to maint).
* The trace2 code was not prepared to show a configuration variable
that is set to true using the valueless true syntax, which has been
corrected.
(merge 2fd367cf63 am/trace2-with-valueless-true later to maint).
* The "git refs migrate" command did not migrate the reflog for
refs/stash, which is the contents of the stashes, which has been
corrected.
(merge a0bea0978f ps/reflog-migration-with-logall-fix later to maint).
* Doc and short-help text for "show-index" has been clarified to
stress that the command reads its data from the standard input.
(merge 49edce4ff9 jc/show-index-h-update later to maint).
* The API around choosing to use unsafe variant of SHA-1
implementation has been updated in an attempt to make it harder to
abuse.
(merge 04292c3796 tb/unsafe-hash-cleanup later to maint).
* Fix bugs in an earlier attempt to fix "git refs migration".
(merge f11f0a5a2d kn/reflog-migration-fix-fix later to maint).
* The code path used when "git fetch" fetches from a bundle file
closed the same file descriptor twice, which sometimes broke things
unexpectedly when the file descriptor was reused, which has been
corrected.
(merge 9a84794ad8 js/bundle-unbundle-fd-reuse-fix later to maint).
* "git init" to reinitialize a repository that already exists cannot
change the hash function and ref backends; such a request is
silently ignored now.
(merge 7e88640cd1 ps/setup-reinit-fixes later to maint).
* "git apply" internally uses unsigned long for line numbers and uses
strtoul() to parse numbers on the hunk headers. It however forgot
to check parse errors.
(merge a206058fda pw/apply-ulong-overflow-check later to maint).
* Two CI tasks, whitespace check and style check, work on the
difference from the base version and the version being checked, but
the base was computed incorrectly in GitLab CI in some cases, which
has been corrected.
(merge acc4fb302b jt/gitlab-ci-base-fix later to maint).
* "git repack --keep-unreachable" to send unreachable objects to the
main pack "git repack -ad" produces did not work when there is no
existing packs, which has been corrected.
(merge 414c82300a ps/repack-keep-unreachable-in-unpacked-repo later to maint).
* Going into a secondary worktree and asking "is the main worktree
bare?" did not work correctly when per-worktree configuration
option was in use, which has been corrected.
* Fetching into a bare repository incorrectly assumed it always used
a mirror layout when deciding to update remote-tracking HEAD, which
has been corrected.
(merge 93dc16483a bf/fetch-set-head-fix later to maint).
* A thunderbird helper script lost its bashism.
(merge 59d26bd961 bc/contrib-thunderbird-patch-inline-fix later to maint).
* The -G/-S options to the "diff" family of commands caused us to hit
a BUG() when they get no values; they have been corrected.
(merge a620046b29 bc/diff-reject-empty-arg-to-pickaxe later to maint).
* "git merge-tree --stdin" has been improved (including a workaround
for a deadlock).
(merge 6a9ae81015 pw/merge-tree-stdin-deadlock-fix later to maint).
* Correct the default target in Documentation/Makefile, and
future-proof all Makefiles from similar breakages by declaring the
default target (which happens to be "all") upfront.
(merge 5309c1e9fb ad/set-default-target-in-makefiles later to maint).
* "git check-mailmap" used to segfault when queried without human
readable name.
(merge bb60c52131 jk/check-mailmap-wo-name-fix later to maint).
* Support for renaming of symbolic links on Windows has been improved.
* "git rebase -i" failed to allow rewording an empty commit that has
been fast-forwarded.
(merge af8fc7be10 pw/rebase-i-ff-empty-commit later to maint).
* The use of "paste" command for aggregating the test results have
been corrected.
(merge ce98863204 dk/test-aggregate-results-paste-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
|
2025-01-14 22:41:39 by Adam Ciarcinski | Files touched by this commit (3) |  |
Log message:
git: updated to 2.48.1
Git v2.48.1 Release Notes
This release merges up the fix that appears in v2.40.4, v2.41.3,
v2.42.4, v2.43.6, v2.44.3, v2.45.3, v2.46.3, and v2.47.2 to address
the security issues CVE-2024-50349 and CVE-2024-52006; see the release
notes for these versions for details.
|
2024-07-30 13:48:45 by Adam Ciarcinski | Files touched by this commit (6) |  |
Log message:
git: updated to 2.46.0
Git v2.46 Release Notes
=======================
UI, Workflows & Features
* The "--rfc" option of "git format-patch" learned to take an
optional string value to be used in place of "RFC" to tweak the
"[PATCH]" on the subject header.
* The credential helper protocol, together with the HTTP layer, have
been enhanced to support authentication schemes different from
username & password pair, like Bearer and NTLM.
* Command line completion script (in contrib/) learned to complete
"git symbolic-ref" a bit better (you need to enable plumbing
commands to be completed with GIT_COMPLETION_SHOW_ALL_COMMANDS).
* When the user responds to a prompt given by "git add -p" with an
unsupported command, list of available commands were given, which
was too much if the user knew what they wanted to type but merely
made a typo. Now the user gets a much shorter error message.
* The color parsing code learned to handle 12-bit RGB colors, spelled
as "#RGB" (in addition to "#RRGGBB" that is already \
supported).
* The operation mode options (like "--get") the "git \
config" command
uses have been deprecated and replaced with subcommands (like "git
config get").
* "git tag" learned the "--trailer" option to futz with the \
trailers
in the same way as "git commit" does.
* A new global "--no-advice" option can be used to disable all advice
messages, which is meant to be used only in scripts.
* Updates to symbolic refs can now be made as a part of ref
transaction.
* The trailer API has been reshuffled a bit.
* Terminology to call various ref-like things are getting
straightened out.
* The command line completion script (in contrib/) has been adjusted
to the recent update to "git config" that adopted subcommand based
UI.
* The knobs to tweak how reftable files are written have been made
available as configuration variables.
* When "git push" notices that the commit at the tip of the ref on
the other side it is about to overwrite does not exist locally, it
used to first try fetching it if the local repository is a partial
clone. The command has been taught not to do so and immediately
fail instead.
* The promisor.quiet configuration knob can be set to true to make
lazy fetching from promisor remotes silent.
* The inter/range-diff output has been moved to the end of the patch
when format-patch adds it to a single patch, instead of writing it
before the patch text, to be consistent with what is done for a
cover letter for a multi-patch series.
* A new command has been added to migrate a repository that uses the
files backend for its ref storage to use the reftable backend, with
limitations.
* "git diff --exit-code --ext-diff" learned to take the exit status
of the external diff driver into account when deciding the exit
status of the overall "git diff" invocation when configured to do
so.
* "git update-ref --stdin" learned to handle transactional updates of
symbolic-refs.
* "git format-patch --interdiff" for multi-patch series learned to
turn on cover letters automatically (unless told never to enable
cover letter with "--no-cover-letter" and such).
* The "--heads" option of "ls-remote" and \
"show-ref" has been been
deprecated; "--branches" replaces "--heads".
* For over a year, setting add.interactive.useBuiltin configuration
variable did nothing but giving a "this does not do anything"
warning. The warning has been removed.
* The http transport can now be told to send request with
authentication material without first getting a 401 response.
* A handful of entries are added to the GitFAQ document.
* "git var GIT_SHELL_PATH" should report the path to the shell used
to spawn external commands, but it didn't do so on Windows, which
has been corrected.
Performance, Internal Implementation, Development Support etc.
* Advertise "git contacts", a tool for newcomers to find people to
ask review for their patches, a bit more in our developer
documentation.
* In addition to building the objects needed, try to link the objects
that are used in fuzzer tests, to make sure at least they build
without bitrot, in Linux CI runs.
* Code to write out reftable has seen some optimization and
simplification.
* Tests to ensure interoperability between reftable written by jgit
and our code have been added and enabled in CI.
* The singleton index_state instance "the_index" has been eliminated
by always instantiating "the_repository" and replacing references
to "the_index" with references to its .index member.
* Git-GUI has a new maintainer, Johannes Sixt.
* The "test-tool" has been taught to run testsuite tests in parallel,
bypassing the need to use the "prove" tool.
* The "whitespace check" task that was enabled for GitHub Actions CI
has been ported to GitLab CI.
* The refs API lost functions that implicitly assumes to work on the
primary ref_store by forcing the callers to pass a ref_store as an
argument.
* Code clean-up to reduce inter-function communication inside
builtin/config.c done via the use of global variables.
* The pack bitmap code saw some clean-up to prepare for a follow-up topic.
* Preliminary code clean-up for "git send-email".
* The default "creation-factor" used by "git format-patch" \
has been
raised to make it more aggressively find matching commits.
* Before discovering the repository details, We used to assume SHA-1
as the "default" hash function, which has been corrected. Hopefully
this will smoke out codepaths that rely on such an unwarranted
assumptions.
* The project decision making policy has been documented.
* The strcmp-offset tests have been rewritten using the unit test
framework.
* "git add -p" learned to complain when an answer with more than one
letter is given to a prompt that expects a single letter answer.
* The alias-expanded command lines are logged to the trace output.
* A new test was added to ensure git commands that are designed to
run outside repositories do work.
* A few tests in reftable library have been rewritten using the
unit test framework.
* A pair of test helpers that essentially are unit tests on hash
algorithms have been rewritten using the unit-tests framework.
* A test helper that essentially is unit tests on the "decorate"
logic has been rewritten using the unit-tests framework.
* Many memory leaks in the sparse-checkout code paths have been
plugged.
* "make check-docs" noticed problems and reported to its output but
failed to signal its findings with its exit status, which has been
corrected.
* Building with "-Werror -Wwrite-strings" is now supported.
* To help developers, the build procedure now allows builders to use
CFLAGS_APPEND to specify additional CFLAGS.
* "oidtree" tests were rewritten to use the unit test framework.
* The structure of the document that records longer-term project
decisions to deprecate/remove/update various behaviour has been
outlined.
* The pseudo-merge reachability bitmap to help more efficient storage
of the reachability bitmap in a repository with too many refs has
been added.
* When "git merge" sees that the index cannot be refreshed (e.g. due
to another process doing the same in the background), it died but
after writing MERGE_HEAD etc. files, which was useless for the
purpose to recover from the failure.
* The output from "git cat-file --batch-check" and "--batch-command
(info)" should not be unbuffered, for which some tests have been
added.
* A CPP macro USE_THE_REPOSITORY_VARIABLE is introduced to help
transition the codebase to rely less on the availability of the
singleton the_repository instance.
* "git version --build-options" reports the version information of
OpenSSL and other libraries (if used) in the build.
* Memory ownership rules for the in-core representation of
remote.*.url configuration values have been straightened out, which
resulted in a few leak fixes and code clarification.
* When bundleURI interface fetches multiple bundles, Git failed to
take full advantage of all bundles and ended up slurping duplicated
objects, which has been corrected.
* The code to deal with modified paths that are out-of-cone in a
sparsely checked out working tree has been optimized.
* An existing test of oidmap API has been rewritten with the
unit-test framework.
* The "ort" merge backend saw one bugfix for a crash that happens
when inner merge gets killed, and assorted code clean-ups.
* A new warning message is issued when a command has to expand a
sparse index to handle working tree cruft that are outside of the
sparse checkout.
* The test framework learned to take the test body not as a single
string but as a here-document.
* "git push '' HEAD:there" used to hit a BUG(); it has been corrected
to die with "fatal: bad repository ''".
* What happens when http.cookieFile gets the special value "" has
been clarified in the documentation.
Fixes since v2.45
-----------------
* "git rebase --signoff" used to forget that it needs to add a
sign-off to the resulting commit when told to continue after a
conflict stops its operation.
* The procedure to build multi-pack-index got confused by the
replace-refs mechanism, which has been corrected by disabling the
latter.
* The "-k" and "--rfc" options of "format-patch" \
will now error out
when used together, as one tells us not to add anything to the
title of the commit, and the other one tells us to add "RFC" in
addition to "PATCH".
* "git stash -S" did not handle binary files correctly, which has
been corrected.
* A scheduled "git maintenance" job is expected to work on all
repositories it knows about, but it stopped at the first one that
errored out. Now it keeps going.
* zsh can pretend to be a normal shell pretty well except for some
glitches that we tickle in some of our scripts. Work them around
so that "vimdiff" and our test suite works well enough with it.
* Command line completion support for zsh (in contrib/) has been
updated to stop exposing internal state to end-user shell
interaction.
* Tests that try to corrupt in-repository files in chunked format did
not work well on macOS due to its broken "mv", which has been
worked around.
* The maximum size of attribute files is enforced more consistently.
* Unbreak CI jobs so that we do not attempt to use Python 2 that has
been removed from the platform.
* Git 2.43 started using the tree of HEAD as the source of attributes
in a bare repository, which has severe performance implications.
For now, revert the change, without ripping out a more explicit
support for the attr.tree configuration variable.
* The "--exit-code" option of "git diff" command learned to \
work with
the "--ext-diff" option.
* Windows CI running in GitHub Actions started complaining about the
order of arguments given to calloc(); the imported regex code uses
the wrong order almost consistently, which has been corrected.
* Expose "name conflict" error when a ref creation fails due to D/F
conflict in the ref namespace, to improve an error message given by
"git fetch".
(merge 9339fca23e it/refs-name-conflict later to maint).
* The SubmittingPatches document now refers folks to manpages
translation project.
* The documentation for "git diff --name-only" has been clarified
that it is about showing the names in the post-image tree.
* The credential helper that talks with osx keychain learned to avoid
storing back the authentication material it just got received from
the keychain.
(merge e1ab45b2da kn/osxkeychain-skip-idempotent-store later to maint).
* The chainlint script (invoked during "make test") did nothing when
it failed to detect the number of available CPUs. It now falls
back to 1 CPU to avoid the problem.
* Revert overly aggressive "layered defence" that went into 2.45.1
and friends, which broke "git-lfs", "git-annex", and other use
cases, so that we can rebuild necessary counterparts in the open.
* "git init" in an already created directory, when the user
configuration has includeif.onbranch, started to fail recently,
which has been corrected.
* Memory leaks in "git mv" has been plugged.
* The safe.directory configuration knob has been updated to
optionally allow leading path matches.
* An overly large ".gitignore" files are now rejected silently.
* Upon expiration event, the credential subsystem forgot to clear
in-core authentication material other than password (whose support
was added recently), which has been corrected.
* Fix for an embarrassing typo that prevented Python2 tests from running
anywhere.
* Varargs functions that are unannotated as printf-like or execl-like
have been annotated as such.
* "git am" has a safety feature to prevent it from starting a new
session when there already is a session going. It reliably
triggers when a mbox is given on the command line, but it has to
rely on the tty-ness of the standard input. Add an explicit way to
opt out of this safety with a command line option.
(merge 62c71ace44 jk/am-retry later to maint).
* A leak in "git imap-send" that somehow escapes LSan has been
plugged.
* Setting core.abbrev too early before the repository set-up
(typically in "git clone") caused segfault, which as been
corrected.
* When the user adds to "git rebase -i" instruction to \
"pick" a merge
commit, the error experience is not pleasant. Such an error is now
caught earlier in the process that parses the todo list.
* We forgot to normalize the result of getcwd() to NFC on macOS where
all other paths are normalized, which has been corrected. This still
does not address the case where core.precomposeUnicode configuration
is not defined globally.
* Earlier we stopped using the tree of HEAD as the default source of
attributes in a bare repository, but failed to document it. This
has been corrected.
* "git update-server-info" and "git commit-graph --write" \
have been
updated to use the tempfile API to avoid leaving cruft after
failing.
* An unused extern declaration for mingw has been removed to prevent
it from causing build failure.
* A helper function shared between two tests had a copy-paste bug,
which has been corrected.
* "git fetch-pack -k -k" without passing "--lock-pack" (which we
never do ourselves) did not work at all, which has been corrected.
* CI job to build minimum fuzzers learned to pass NO_CURL=NoThanks to
the build procedure, as its build environment does not offer, or
the rest of the build needs, anything cURL.
(merge 4e66b5a990 jc/fuzz-sans-curl later to maint).
* "git diff --no-ext-diff" when diff.external is configured ignored
the "--color-moved" option.
(merge 0f4b0d4cf0 rs/diff-color-moved-w-no-ext-diff-fix later to maint).
* "git archive --add-virtual-file=<path>:<contents>" \
never paid
attention to the --prefix=<prefix> option but the documentation
said it would. The documentation has been corrected.
(merge 72c282098d jc/archive-prefix-with-add-virtual-file later to maint).
* When GIT_PAGER failed to spawn, depending on the code path taken,
we failed immediately (correct) or just spew the payload to the
standard output (incorrect). The code now always fail immediately
when GIT_PAGER fails.
(merge 78f0a5d187 rj/pager-die-upon-exec-failure later to maint).
* date parser updates to be more careful about underflowing epoch
based timestamp.
(merge 9d69789770 db/date-underflow-fix later to maint).
* The Bloom filter used for path limited history traversal was broken
on systems whose "char" is unsigned; update the implementation and
bump the format version to 2.
(merge 9c8a9ec787 tb/path-filter-fix later to maint).
* Typofix.
(merge 231cf7370e as/pathspec-h-typofix later to maint).
* Code clean-up.
(merge 4b837f821e rs/simplify-submodule-helper-super-prefix-invocation later \
to maint).
* "git describe --dirty --broken" forgot to refresh the index before
seeing if there is any chang, ("git describe --dirty" correctly did
so), which has been corrected.
(merge b8ae42e292 as/describe-broken-refresh-index-fix later to maint).
* Test suite has been taught not to unnecessarily rely on DNS failing
a bogus external name.
(merge 407cdbd271 jk/tests-without-dns later to maint).
* GitWeb update to use committer date consistently in rss/atom feeds.
(merge cf6ead095b am/gitweb-feed-use-committer-date later to maint).
* Custom control structures we invented more recently have been
taught to the clang-format file.
(merge 1457dff9be rs/clang-format-updates later to maint).
* Developer build procedure fix.
(merge df32729866 tb/dev-build-pedantic-fix later to maint).
* "git push" that pushes only deletion gave an unnecessary and
harmless error message when push negotiation is configured, which
has been corrected.
(merge 4d8ee0317f jc/disable-push-nego-for-deletion later to maint).
* Address-looking strings found on the trailer are now placed on the
Cc: list after running through sanitize_address by "git send-email".
(merge c852531f45 cb/send-email-sanitize-trailer-addresses later to maint).
* Tests that use GIT_TEST_SANITIZE_LEAK_LOG feature got their exit
status inverted, which has been corrected.
(merge 8c1d6691bc rj/test-sanitize-leak-log-fix later to maint).
* The http.cookieFile and http.saveCookies configuration variables
have a few values that need to be avoided, which are now ignored
with warning messages.
(merge 4f5822076f jc/http-cookiefile later to maint).
* Repacking a repository with multi-pack index started making stupid
pack selections in Git 2.45, which has been corrected.
(merge 8fb6d11fad ds/midx-write-repack-fix later to maint).
* Fix documentation mark-up regression in 2.45.
(merge 6474da0aa4 ja/doc-markup-updates-fix later to maint).
* Work around asciidoctor's css that renders `monospace` material
in the SYNOPSIS section of manual pages as block elements.
(merge d44ce6ddd5 js/doc-markup-updates-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 493fdae046 ew/object-convert-leakfix later to maint).
(merge 00f3661a0a ss/doc-eol-attr-fix later to maint).
(merge 428c40da61 ri/doc-show-branch-fix later to maint).
(merge 58696bfcaa jc/where-is-bash-for-ci later to maint).
(merge 616e94ca24 tb/doc-max-tree-depth-fix later to maint).
|
2024-02-25 23:24:13 by Adam Ciarcinski | Files touched by this commit (5) |  |
Log message:
git: updated to 2.44.0
Git v2.44 Release Notes
=======================
Backward Compatibility Notes
* "git checkout -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/.gitconfig is missing but XDG config file is 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.
* The completion script (in contrib/) learned more options that can
be used with "git log".
* The labels on conflict markers for the common ancestor, our version,
and the other version are available to custom 3-way merge driver
via %S, %X, and %Y placeholders.
* The write codepath for the reftable data learned to honor
core.fsync configuration.
* The "--fsck-objects" option of "git index-pack" now can \
take the
optional parameter to tweak severity of different fsck errors.
* The wincred credential backend has been taught to support oauth
refresh token the same way as credential-cache and
credential-libsecret backends.
* Command line completion support (in contrib/) has been
updated for "git bisect".
* "git branch" and friends learned to use the formatted text as
sorting key, not the underlying timestamp value, when the --sort
option is used with author or committer timestamp with a format
specifier (e.g., "--sort=creatordate:format:%H:%M:%S").
* The command line completion script (in contrib/) learned to
complete configuration variable names better.
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.
* Tests on ref API are moved around to prepare for reftable.
* The Makefile often had to say "-L$(path) -R$(path)" that repeats
the path to the same library directory for link time and runtime.
A Makefile template is used to reduce such repetition.
* The priority queue test has been migrated to the unit testing
framework.
* Setting `feature.experimental` opts the user into multi-pack reuse
experiment
* Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.
* The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output. This has been corrected.
Fixes since v2.43
-----------------
* The way CI testing used "prove" could lead to running the test
suite twice needlessly, which has been corrected.
* 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.
* 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.
* Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
* trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
* 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.
* 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.
* "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".
* "git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
* Code clean-up for sanity checking of command line options for "git
show-ref".
* The code to parse the From e-mail header has been updated to avoid
recursion.
* "git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
* Command line completion script (in contrib/) learned to work better
with the reftable backend.
* "git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
* "git archive --list extra garbage" silently ignored excess command
line parameters, which has been corrected.
* "git sparse-checkout set" added default patterns even when the
patterns are being fed from the standard input, which has been
corrected.
* "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.
* 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.
* Update to a new feature recently added, "git show-ref --exists".
* 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.
* 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.
* "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).
* Fetching via protocol v0 over Smart HTTP transport sometimes failed
to correctly auto-follow tags.
(merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
* The documentation for the --exclude-per-directory option marked it
as deprecated, which confused readers into thinking there may be a
plan to remove it in the future, which was not our intention.
(merge 0009542cab jc/ls-files-doc-update later to maint).
* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
(merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
* A caller called index_file_exists() that takes a string expressed
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.
* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.
* "git show-ref --verify" did not show things like \
"CHERRY_PICK_HEAD",
which has been corrected.
* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.
* The sequencer machinery does not use the ref API and instead
records names of certain objects it needs for its correct operation
in temporary files, which makes these objects susceptible to loss
by garbage collection. These temporary files have been added as
starting points for reachability analysis to fix this.
(merge bc7f5db896 pw/gc-during-rebase later to maint).
* "git cherry-pick" invoked during "git rebase -i" session lost
the authorship information, which has been corrected.
(merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint).
* The code paths that call repo_read_object_file() have been
tightened to react to errors.
(merge 568459bf5e js/check-null-from-read-object-file later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
(merge 020456cb74 rs/receive-pack-remove-find-header later to maint).
(merge bc47139f4f la/trailer-cleanups later to maint).
|
| 2023-06-06 14:42:56 by Taylor R Campbell | Files touched by this commit (1319) |
Log message:
Mass-change BUILD_DEPENDS to TOOL_DEPENDS outside mk/.
Almost all uses, if not all of them, are wrong, according to the
semantics of BUILD_DEPENDS (packages built for target available for
use _by_ tools at build-time) and TOOL_DEPEPNDS (packages built for
host available for use _as_ tools at build-time).
No change to BUILD_DEPENDS as used correctly inside buildlink3.
As proposed on tech-pkg:
https://mail-index.netbsd.org/tech-pkg/2023/06/03/msg027632.html
|