./www/gitweb, Web interface for GIT repositories

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


Branch: CURRENT, Version: 2.39.1, Package name: gitweb-2.39.1, Maintainer: pkgsrc-users

gitweb provides an easy to use and full-fledged web interface to
your Git repositories. It allows users to browse the contents of
all served projects, including the ability to inspect individual
files and their history for any of the available branches.


Required to run:
[www/p5-CGI] [lang/perl5] [devel/git-base]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 6992.914 KB

Version history: (Expand)


CVS history: (Expand)


   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).
   2022-07-06 13:54:00 by Adam Ciarcinski | Files touched by this commit (5) | Package updated
Log message:
git: updated to 2.37.0

Git v2.37 Release Notes
=======================

UI, Workflows & Features

 * "vimdiff[123]" mergetool drivers have been reimplemented with a
   more generic layout mechanism.

 * "git -v" and "git -h" are now understood as "git \ 
--version" and
   "git --help".

 * The temporary files fed to external diff command are now generated
   inside a new temporary directory under the same basename.

 * "git log --since=X" will stop traversal upon seeing a commit that
   is older than X, but there may be commits behind it that is younger
   than X when the commit was created with a faulty clock.  A new
   option is added to keep digging without stopping, and instead
   filter out commits with timestamp older than X.

 * "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
   as $A's upstream only when $A and $B shares the same name, and "git
   -c push.default=simple" on branch $A would push to update the
   branch $A at the remote $B came from.  Also more places use the
   sole remote, if exists, before defaulting to 'origin'.

 * A new doc has been added that lists tips for tools to work with
   Git's codebase.

 * "git remote -v" now shows the list-objects-filter used during
   fetching from the remote, if available.

 * With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
   mechanism that allows cURL based applications to use pre-resolved
   IP addresses for the requests is exposed to the scripts.

 * "git add -i" was rewritten in C some time ago and has been in
   testing; the reimplementation is now exposed to general public by
   default.

 * Deprecate non-cone mode of the sparse-checkout feature.

 * Introduce a filesystem-dependent mechanism to optimize the way the
   bits for many loose object files are ensured to hit the disk
   platter.

 * The "do not remove the directory the user started Git in" logic,
   when Git cannot tell where that directory is, is disabled.  Earlier
   we refused to run in such a case.

 * A mechanism to pack unreachable objects into a "cruft pack",
   instead of ejecting them into loose form to be reclaimed later, has
   been introduced.

 * Update the doctype written in gitweb output to xhtml5.

 * The "transfer.credentialsInURL" configuration variable controls what
   happens when a URL with embedded login credential is used on either
   "fetch" or "push". Credentials are currently only detected in
   `remote.<name>.url` config, not `remote.<name>.pushurl`.

 * "git revert" learns "--reference" option to use more \ 
human-readable
   reference to the commit it reverts in the message template it
   prepares for the user.

 * Various error messages that talk about the removal of
   "--preserve-merges" in "rebase" have been strengthened, \ 
and "rebase
   --abort" learned to get out of a state that was left by an earlier
   use of the option.

Performance, Internal Implementation, Development Support etc.

 * The performance of the "untracked cache" feature has been improved
   when "--untracked-files=<mode>" and \ 
"status.showUntrackedFiles"
   are combined.

 * "git stash" works better with sparse index entries.

 * "git show :<path>" learned to work better with the sparse-index
   feature.

 * Introduce and apply coccinelle rule to discourage an explicit
   comparison between a pointer and NULL, and applies the clean-up to
   the maintenance track.

 * Preliminary code refactoring around transport and bundle code.

 * "sparse-checkout" learns to work better with the sparse-index
   feature.

 * A workflow change for translators are being proposed.  git.pot is
   no longer version controlled and it is local responsibility of
   translators to generate it.

 * Plug the memory leaks from the trickiest API of all, the revision
   walker.

 * Rename .env_array member to .env in the child_process structure.

  * The fsmonitor--daemon handles even more corner cases when
    watching filesystem events.

 * A new bug() and BUG_if_bug() API is introduced to make it easier to
   uniformly log "detect multiple bugs and abort in the end" pattern.

Fixes since v2.36
-----------------

 * "git submodule update" without pathspec should silently skip an
   uninitialized submodule, but it started to become noisy by mistake.
   (merge 4f1ccef87c gc/submodule-update-part2 later to maint).

 * "diff-tree --stdin" has been broken for about a year, but 2.36
   release broke it even worse by breaking running the command with
   <pathspec>, which in turn broke "gitk" and got noticed.  This has
   been corrected by aligning its behaviour to that of "log".
   (merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).

 * Regression fix for 2.36 where "git name-rev" started to sometimes
   reference strings after they are freed.
   (merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).

 * "git show <commit1> <commit2>... -- <pathspec>" \ 
lost the pathspec
   when showing the second and subsequent commits, which has been
   corrected.
   (merge 5cdb38458e jc/show-pathspec-fix later to maint).

 * "git fast-export -- <pathspec>" lost the pathspec when showing the
   second and subsequent commits, which has been corrected.
   (merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).

 * "git format-patch <args> -- <pathspec>" lost the \ 
pathspec when
   showing the second and subsequent commits, which has been
   corrected.
   (merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).

 * "git clone --origin X" leaked piece of memory that held value read
   from the clone.defaultRemoteName configuration variable, which has
   been plugged.
   (merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).

 * Get rid of a bogus and over-eager coccinelle rule.
   (merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).

 * The path taken by "git multi-pack-index" command from the end user
   was compared with path internally prepared by the tool without first
   normalizing, which lead to duplicated paths not being noticed,
   which has been corrected.
   (merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).

 * Correct choices of C compilers used in various CI jobs.
   (merge 3506cae04f ab/cc-package-fixes later to maint).

 * Various cleanups to "git p4".
   (merge 4ff0108d9e jh/p4-various-fixups later to maint).

 * The progress meter of "git blame" was showing incorrect numbers
   when processing only parts of the file.
   (merge e5f5d7d42e ea/progress-partial-blame later to maint).

 * "git rebase --keep-base <upstream> <branch-to-rebase>" \ 
computed the
   commit to rebase onto incorrectly, which has been corrected.
   (merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).

 * Fix a leak of FILE * in an error codepath.
   (merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).

 * Avoid problems from interaction between malloc_check and address
   sanitizer.
   (merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).

 * The commit summary shown after making a commit is matched to what
   is given in "git status" not to use the break-rewrite heuristics.
   (merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).

 * Update a few end-user facing messages around EOL conversion.
   (merge c970d30c2c ah/convert-warning-message later to maint).

 * Trace2 documentation updates.
   (merge a6c80c313c js/trace2-doc-fixes later to maint).

 * Build procedure fixup.
   (merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).

 * "git pull" without "--recurse-submodules=<arg>" made
   submodule.recurse take precedence over fetch.recurseSubmodules by
   mistake, which has been corrected.
   (merge 5819417365 gc/pull-recurse-submodules later to maint).

 * "git bisect" was too silent before it is ready to start computing
   the actual bisection, which has been corrected.
   (merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).

 * macOS CI jobs have been occasionally flaky due to tentative version
   skew between perforce and the homebrew packager.  Instead of
   failing the whole CI job, just let it skip the p4 tests when this
   happens.
   (merge f15e00b463 cb/ci-make-p4-optional later to maint).

 * A bit of test framework fixes with a few fixes to issues found by
   valgrind.
   (merge 7c898554d7 ab/valgrind-fixes later to maint).

 * "git archive --add-file=<path>" picked up the raw permission bits
   from the path and propagated to zip output in some cases, without
   normalization, which has been corrected (tar output did not have
   this issue).
   (merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).

 * "make coverage-report" without first running "make \ 
coverage" did
   not produce any meaningful result, which has been corrected.
   (merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).

 * The "--current" option of "git show-branch" should have \ 
been made
   incompatible with the "--reflog" mode, but this was not enforced,
   which has been corrected.
   (merge 41c64ae0e7 jc/show-branch-g-current later to maint).

 * "git fetch" unnecessarily failed when an unexpected optional
   section appeared in the output, which has been corrected.
   (merge 7709acf7be jt/fetch-peek-optional-section later to maint).

 * The way "git fetch" without "--update-head-ok" ensures \ 
that HEAD in
   no worktree points at any ref being updated was too wasteful, which
   has been optimized a bit.
   (merge f7400da800 os/fetch-check-not-current-branch later to maint).

 * "git fetch --recurse-submodules" from multiple remotes (either from
   a remote group, or "--all") used to make one extra "git \ 
fetch" in
   the submodules, which has been corrected.
   (merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).

 * With a recent update to refuse access to repositories of other
   people by default, "sudo make install" and "sudo git describe"
   stopped working, which has been corrected.
   (merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).

 * The tests that ensured merges stop when interfering local changes
   are present did not make sure that local changes are preserved; now
   they do.
   (merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).

 * Some real problems noticed by gcc 12 have been fixed, while false
   positives have been worked around.

 * Update the version of FreeBSD image used in Cirrus CI.
   (merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).

 * The multi-pack-index code did not protect the packfile it is going
   to depend on from getting removed while in use, which has been
   corrected.
   (merge 4090511e40 tb/midx-race-in-pack-objects later to maint).

 * Teach "git repack --geometric" work better with \ 
"--keep-pack" and
   avoid corrupting the repository when packsize limit is used.
   (merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).

 * The documentation on the interaction between "--add-file" and
   "--prefix" options of "git archive" has been improved.
   (merge a75910602a rs/document-archive-prefix later to maint).

 * A git subcommand like "git add -p" spawns a separate git process
   while relaying its command line arguments.  A pathspec with only
   negative elements was mistakenly passed with an empty string, which
   has been corrected.
   (merge b02fdbc80a jc/all-negative-pathspec later to maint).

 * With a more targeted workaround in http.c in another topic, we may
   be able to lift this blanket "GCC12 dangling-pointer warning is
   broken and unsalvageable" workaround.
   (merge 419141e495 cb/buggy-gcc-12-workaround later to maint).

 * A misconfigured 'branch..remote' led to a bug in configuration
   parsing.
   (merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).

 * "git -c diff.submodule=log range-diff" did not show anything for
   submodules that changed in the ranges being compared, and
   "git -c diff.submodule=diff range-diff" did not work correctly.
   Fix this by including the "--submodule=short" output
   unconditionally to be compared.

 * In Git 2.36 we revamped the way how hooks are invoked.  One change
   that is end-user visible is that the output of a hook is no longer
   directly connected to the standard output of "git" that spawns the
   hook, which was noticed post release.  This is getting corrected.
   (merge a082345372 ab/hooks-regression-fix later to maint).

 * Updating the graft information invalidates the list of parents of
   in-core commit objects that used to be in the graft file.

 * "git show-ref --heads" (and "--tags") still iterated over \ 
all the
   refs only to discard refs outside the specified area, which has
   been corrected.
   (merge c0c9d35e27 tb/show-ref-optim later to maint).

 * Remove redundant copying (with index v3 and older) or possible
   over-reading beyond end of mmapped memory (with index v4) has been
   corrected.
   (merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).

 * Sample watchman interface hook sometimes failed to produce
   correctly formatted JSON message, which has been corrected.
   (merge 134047b500 sn/fsmonitor-missing-clock later to maint).

 * Use-after-free (with another forget-to-free) fix.
   (merge 323822c72b ab/remote-free-fix later to maint).

 * Remove a coccinelle rule that is no longer relevant.
   (merge b1299de4a1 jc/cocci-cleanup later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e6b2582da3 cm/reftable-0-length-memset later to maint).
   (merge 0b75e5bf22 ab/misc-cleanup later to maint).
   (merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
   (merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
   (merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
   (merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
   (merge 1da312742d gf/unused-includes later to maint).
   (merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
   (merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
   (merge 72315e431b sa/t1011-use-helpers later to maint).
   (merge 95b3002201 cg/vscode-with-gdb later to maint).
   (merge fbe5f6b804 tk/p4-utf8-bom later to maint).
   (merge 17f273ffba tk/p4-with-explicity-sync later to maint).
   (merge 944db25c60 kf/p4-multiple-remotes later to maint).
   (merge b014cee8de jc/update-ozlabs-url later to maint).
   (merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
   (merge af845a604d tb/receive-pack-code-cleanup later to maint).
   (merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
   (merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
   (merge 8c49d704ef fh/transport-push-leakfix later to maint).
   (merge 1d232d38bd tl/ls-tree-oid-only later to maint).
   (merge db7961e6a6 gc/document-config-worktree-scope later to maint).
   (merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).
   2022-06-28 13:38:00 by Thomas Klausner | Files touched by this commit (3952)
Log message:
*: recursive bump for perl 5.36
   2021-06-13 20:36:32 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
git: updated to 2.32.0

Git 2.32 Release Notes
======================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" \ 
files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.

Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", \ 
".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer \ 
<key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact \ 
strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" \ 
at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, \ 
with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths \ 
that are
   outside of sparse checkout.

 * "git rev-list" learns the \ 
"--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the \ 
"--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.

Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.

Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" \ 
did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git \ 
fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around \ 
working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of \ 
"for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:<what>)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).
   2021-05-24 21:56:06 by Thomas Klausner | Files touched by this commit (3575)
Log message:
*: recursive bump for perl 5.34
   2021-01-11 11:20:49 by Adam Ciarcinski | Files touched by this commit (1) | Package updated
Log message:
gitweb: reset revision for git 2.30.0 update
   2020-08-31 20:13:29 by Thomas Klausner | Files touched by this commit (3631)
Log message:
*: bump PKGREVISION for perl-5.32.
   2019-08-20 15:00:02 by Adam Ciarcinski | Files touched by this commit (9) | Package updated
Log message:
git: updated to 2.23.0

Git 2.23 Release Notes
======================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the \ 
patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".

 * The "git log" command by default behaves as if the --mailmap option
   was given.

UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the \ 
in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-show-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are \ 
introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned the "--no-object-names" \ 
option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.

Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainder of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targeting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.

Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> \ 
<repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to an unrelated file descriptor getting
   closed, which has been fixed.

 * A "merge -c" instruction during "git rebase \ 
--rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.

 * More parameter validation.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * Code clean-up to avoid signed integer wraparounds during binary search.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * The internal diff machinery can be made to read out of bounds while
   looking for --function-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).