./devel/git, GIT version control suite meta-package

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ] [ Image Add to tracker ]


Branch: CURRENT, Version: 2.53.0, Package name: git-2.53.0, Maintainer: pkgsrc-users

This package is a meta package, collecting the components that are
widely expected to be installed for the GIT distributed version
control suite, i.e., the tool itself, the man pages, and contrib scripts.

See git-base for a minimal installation of the command-line tools.
See git-gitk for the tk-based browser gitk, no longer included in the
git meta-package.


Required to run:
[devel/git-base] [devel/git-docs] [devel/git-contrib]

Required to build:
[pkgtools/cwrappers]

Master sites:


Version history: (Expand)


CVS history: (Expand)


   2026-02-03 10:13:32 by Adam Ciarcinski | Files touched by this commit (4) | Package updated
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) | Package updated
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-10-28 09:00:19 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
git: updated to 2.51.2

Git 2.51.2 Release Notes
========================

In addition to fixes for an unfortunate regression introduced in Git
2.51.1 that caused "git diff --quiet -w" to be not so quiet when there
are additions, deletions and conflicts, this maintenance release merges
more fixes/improvements that have landed on the master front, primarily
to make the CI part of the system a bit more robust.

Fixes since Git 2.51.1
----------------------

 * Recently we attempted to improve "git diff -w --quiet" and friends
   to handle cases where patch output would be suppressed, but it
   introduced a bug that emits unnecessary output, which has been
   corrected.

 * The code to squelch output from "git diff -w --name-status"
   etc. for paths that "git diff -w -p" would have stayed silent
   leaked output from dry-run patch generation, which has been
   corrected.

 * 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.

 * 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.

 * 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".

Also contains various documentation updates, code cleanups and minor fixups.
   2025-10-16 10:45:32 by Adam Ciarcinski | Files touched by this commit (4) | Package updated
Log message:
git: updated to 2.51.1

Git 2.51.1 Release Notes
========================

There shouldn't be anything exciting to see here.  This is primarily
to flush the "do you still use it?" improvements that has landed on
the master front, together with a handful of low-hanging, low-impact
fixes that should be safe.

Fixes since Git 2.51.0
----------------------

 * The "do you still use it?" message given by a command that is
   deeply deprecated and allow us to suggest alternatives has been
   updated.

 * 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.

 * 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`.

 * 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.

 * 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.

 * Makefile tried to run multiple "cargo build" which would not work
   very well; serialize their execution to work around this problem.

 * Adjust to the way newer versions of cURL selectively enable tracing
   options, so that our tests can continue to work.

 * During interactive rebase, using 'drop' on a merge commit led to
   an error, which has been corrected.

 * "git refs migrate" to migrate the reflog entries from a refs
   backend to another had a handful of bugs squashed.

 * "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 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 make 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.

 * 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 repack --path-walk" lost objects in some corner cases, which
   has been corrected.
   cf. <CABPp-BHFxxGrqKc0m==TjQNjDGdO=H5Rf6EFsf2nfE1=TuraOQ@mail.gmail.com>

 * Fixes multiple crashes around midx write-out codepaths.

 * 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.

 * 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 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.

 * 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.

Also contains various documentation updates, code cleanups and minor fixups.
   2025-10-08 01:11:59 by Jonathan Schleifer | Files touched by this commit (2)
Log message:
Make devel/git-base work on QNX
   2025-10-05 21:28:06 by Jonathan Schleifer | Files touched by this commit (1)
Log message:
git: revbump for openssl option
   2025-08-18 21:36:36 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
git: updated to 2.51.0

Git v2.51 Release Notes
=======================

UI, Workflows & Features
------------------------

 * Userdiff patterns for the R language have been added.

 * Documentation for "git send-email" has been updated with a bit more
   credential helper and OAuth information.

 * "git cat-file --batch" learns to understand %(objectmode) atom to
   allow the caller to tell missing objects (due to repository
   corruption) and submodules (whose commit objects are OK to be
   missing) apart.

 * "git diff --no-index dirA dirB" can limit the comparison with
   pathspec at the end of the command line, just like normal "git
   diff".

 * "git subtree" (in contrib/) learned to grok GPG signing its commits.

 * "git whatchanged" that is longer to type than "git log --raw"
   which is its modern rough equivalent has outlived its usefulness
   more than 10 years ago.  Plan to deprecate and remove it.

 * An interchange format for stash entries is defined, and subcommand
   of "git stash" to import/export has been added.

 * "git merge/pull" has been taught the "--compact-summary" \ 
option to
   use the compact-summary format, intead of diffstat, when showing
   the summary of the incoming changes.

 * "git imap-send" has been broken for a long time, which has been
   resurrected and then taught to talk OAuth2.0 etc.

 * Some error messages from "git imap-send" has been updated.

 * When "git daemon" sees a signal while attempting to accept() a new
   client, instead of retrying, it skipped it by mistake, which has
   been corrected.

 * The reftable ref backend has matured enough; Git 3.0 will make it
   the default format in a newly created repositories by default.

 * "netrc" credential helper has been improved to understand textual
   service names (like smtp) in addition to the numeric port numbers
   (like 25).

 * Lift the limitation to use changed-path filter in "git log" so that
   it can be used for a pathspec with multiple literal paths.

 * Clean up the way how signature on commit objects are exported to
   and imported from fast-import stream.

 * Remove unsupported, unused, and unsupportable old option from "git
   log".

 * Document recently added "git imap-send --list" with an example.

 * "git pull" learned to pay attention to pull.autostash configuration
   variable, which overrides rebase/merge.autostash.

 * "git for-each-ref" learns "--start-after" option to help
   applications that want to page its output.

 * "git switch" and "git restore" are declared to be no longer
   experimental.

 * "git -c alias.foo=bar foo -h baz" reported "'foo' is aliased to
   'bar'" and then went on to run "git foo -h baz", which was
   unexpected.  Tighten the rule so that alias expansion is reported
   only when "-h" is the sole option.

Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * "git pack-objects" learned to find delta bases from blobs at the
   same path, using the --path-walk API.

 * CodingGuidelines update.

 * Add settings for Solaris 10 & 11.

 * Meson-based build/test framework now understands TAP output
   generated by our tests.

 * "Do not explicitly initialize to zero" rule has been clarified in
   the CodingGuidelines document.

 * A test helper "test_seq" function learned the "-f \ 
<fmt>" option,
   which allowed us to simplify a lot of test scripts.

 * A lot of stale stuff has been removed from the contrib/ hierarchy.

 * "git push" and "git fetch" are taught to update refs in \ 
batches to
   gain performance.

 * Some code paths in "git prune" used to ignore the passed-in
   repository object and used the `the_repository` singleton instance
   instead, which has been corrected.

 * Update ".clang-format" and ".editorconfig" to match our \ 
style guide
   a bit better.

 * "make coccicheck" succeeds even when spatch made suggestions, which
   has been updated to fail in such a case.

 * Code clean-up around object access API.

 * Define .precision to more canned parse-options type to avoid bugs
   coming from using a variable with a wrong type to capture the
   parsed values.

 * Flipping the default hash function to SHA-256 at Git 3.0 boundary
   is planned.

 * Declare weather-balloon we raised for "bool" type 18 months ago a
   success and officially allow using the type in our codebase.

 * GIT_TEST_INSTALLED was not honored in the recent topic related to
   SHA256 hashes, which has been corrected.

 * The pop_most_recent_commit() function can have quite expensive
   worst case performance characteristics, which has been optimized by
   using prio-queue data structure.

 * Move structure definition from unrelated header file to where it
   belongs.

 * To help our developers, document what C99 language features are
   being considered for adoption, in addition to what past experiments
   have already decided.

 * The reftable unit tests are now ported to the "clar" unit testing
   framework.

 * Redefine where the multi-pack-index sits in the object subsystem,
   which recently was restructured to allow multiple backends that
   support a single object source that belongs to one repository.  A
   MIDX does span multiple "object sources".

 * Reduce implicit assumption and dependence on the_repository in the
   object-file subsystem.

Fixes since v2.50
-----------------

Unless otherwise noted, all the changes in 2.50.X maintenance track,
including security updates, are included in this release.

 * A memory-leak in an error code path has been plugged.
   (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).

 * A memory-leak in an error code path has been plugged.
   (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).

 * Some leftover references to documentation source files that no
   longer exist, due to recent ".txt" -> ".adoc" \ 
renaming, have been
   corrected.
   (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).

 * "git stash -p <pathspec>" improvements.
   (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).

 * "git send-email" incremented its internal message counter when a
   message was edited, which made logic that treats the first message
   specially misbehave, which has been corrected.
   (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).

 * "git stash" recorded a wrong branch name when submodules are
   present in the current checkout, which has been corrected.
   (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).

 * When asking to apply mailmap to both author and committer field
   while showing a commit object, the field that appears later was not
   correctly parsed and replaced, which has been corrected.
   (merge abf94a283f sa/multi-mailmap-fix later to maint).

 * "git maintenance" lacked the care "git gc" had to avoid \ 
holding
   onto the repository lock for too long during packing refs, which
   has been remedied.
   (merge 1b5074e614 ps/maintenance-ref-lock later to maint).

 * Avoid regexp_constraint and instead use comparison_constraint when
   listing functions to exclude from application of coccinelle rules,
   as spatch can be built with different regexp engine X-<.
   (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).

 * Updating submodules from the upstream did not work well when
   submodule's HEAD is detached, which has been improved.
   (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).

 * Remove unnecessary check from "git daemon" code.
   (merge 0c856224d2 cb/daemon-fd-check-fix later to maint).

 * Use of sysctl() system call to learn the total RAM size used on
   BSDs has been corrected.
   (merge 781c1cf571 cb/total-ram-bsd-fix later to maint).

 * Drop FreeBSD 4 support and declare that we support only FreeBSD 12
   or later, which has memmem() supported.
   (merge 0392f976a7 bs/config-mak-freebsd later to maint).

 * A diff-filter with negative-only specification like "git log
   --diff-filter=d" did not trigger correctly, which has been fixed.
   (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint).

 * A failure to open the index file for writing due to conflicting
   access did not state what went wrong, which has been corrected.
   (merge 9455397a5c hy/read-cache-lock-error-fix later to maint).

 * Tempfile removal fix in the codepath to sign commits with SSH keys.
   (merge 4498127b04 re/ssh-sign-buffer-fix later to maint).

 * Code and test clean-up around string-list API.
   (merge 6e5b26c3ff sj/string-list later to maint).

 * "git apply -N" should start from the current index and register
   only new files, but it instead started from an empty index, which
   has been corrected.
   (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint).

 * Leakfix with a new and a bit invasive test on pack-bitmap files.
   (merge bfd5522e98 ly/load-bitmap-leakfix later to maint).

 * "git fetch --prune" used to be O(n^2) expensive when there are many
   refs, which has been corrected.
   (merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).

 * When a ref creation at refs/heads/foo/bar fails, the files backend
   now removes refs/heads/foo/ if the directory is otherwise not used.
   (merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).

 * "pack-objects" has been taught to avoid pointing into objects in
   cruft packs from midx.

 * "git remote" now detects remote names that overlap with each other
   (e.g., remote nickname "outer" and "outer/inner" are used \ 
at the
   same time), as it will lead to overlapping remote-tracking
   branches.
   (merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).

 * The gpg.program configuration variable, which names a pathname to
   the (custom) GPG compatible program, can now be spelled with ~tilde
   expansion.
   (merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).

 * Our <sane-ctype.h> header file relied on that the system-supplied
   <ctype.h> header is not later included, which would override our
   macro definitions, but "amazon linux" broke this assumption.  Fix
   this by preemptively including <ctype.h> near the beginning of
   <sane-ctype.h> ourselves.
   (merge 9d3b33125f ps/sane-ctype-workaround later to maint).

 * Clean-up compat/bswap.h mess.
   (merge f4ac32c03a ss/compat-bswap-revamp later to maint).

 * Meson-based build did not handle libexecdir setting correctly,
   which has been corrected.
   (merge 056dbe8612 rj/meson-libexecdir-fix later to maint).

 * Document that we do not require "real" name when signing your
   patches off.
   (merge 1f0fed312a bc/contribution-under-non-real-names later to maint).

 * "git commit" that concludes a conflicted merge failed to notice and \ 
remove
   existing comment added automatically (like "# Conflicts:") when the
   core.commentstring is set to 'auto'.
   (merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).

 * "git rebase -i" with bogus rebase.instructionFormat configuration
   failed to produce the todo file after recording the state files,
   leading to confused "git status"; this has been corrected.
   (merge ade14bffd7 ow/rebase-verify-insn-fmt-before-initializing-state later \ 
to maint).

 * A few file descriptors left unclosed upon program completion in a
   few test helper programs are now closed.
   (merge 0f1b33815b hl/test-helper-fd-close later to maint).

 * Interactive prompt code did not correctly strip CRLF from the end
   of line on Windows.
   (merge 711a20827b js/prompt-crlf-fix later to maint).

 * The config API had a set of convenience wrapper functions that
   implicitly use the_repository instance; they have been removed and
   inlined at the calling sites.

 * "git add/etc -p" now honor the diff.context configuration variable,
   and also they learn to honor the -U<n> command-line option.
   (merge 2b3ae04011 lm/add-p-context later to maint).

 * The case where a new submodule takes a path where there used to be a
   completely different subproject is now dealt with a bit better than
   before.
   (merge 5ed8c5b465 kj/renamed-submodule later to maint).

 * The deflate codepath in "git archive --format=zip" had a
   longstanding bug coming from misuse of zlib API, which has been
   corrected.

 * Other code cleanup, docfix, build fix, etc.
   2025-07-08 22:49:03 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
git*: update to 2.50.1

Git v2.50.1 Release Notes
=========================

This release merges up the fixes that appear in v2.43.7, v2.44.4,
v2.45.4, v2.46.4, v2.47.3, v2.48.2, and v2.49.1 to address the
following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334,
CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
CVE-2025-48386. See the release notes for v2.43.7 for details.