./devel/git-docs, GIT Tree History Storage Tool (documentation)

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


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

This package installs documentation for the GIT distributed version control
suite.


Required to build:
[textproc/xmlto] [textproc/asciidoc] [pkgtools/cwrappers]

Master sites:

Filesize: 7770.57 KB

Version history: (Expand)


CVS history: (Expand)


   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-06-30 21:10:21 by Adam Ciarcinski | Files touched by this commit (7) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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
   2022-10-07 12:10:05 by Adam Ciarcinski | Files touched by this commit (7) | Package updated
Log message:
git: updated to 2.38.0

Git v2.38 Release Notes
=======================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its \ 
output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command \ 
learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" \ 
hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to \ 
coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.

Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating \ 
".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text \ 
from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.

Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" \ 
features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and \ 
"checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns \ 
"crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).