lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20190604014737.GA24753@Gentoo>
Date:   Tue, 4 Jun 2019 07:17:37 +0530
From:   Bhaskar Chowdhury <unixbhaskar@...il.com>
To:     Junio C Hamano <gitster@...ox.com>
Cc:     git@...r.kernel.org, Linux Kernel <linux-kernel@...r.kernel.org>,
        git-packagers@...glegroups.com
Subject: Re: [ANNOUNCE] Git v2.22.0-rc3

Thanks, a bunch Junio!

On 13:23 Mon 03 Jun , Junio C Hamano wrote:
>A release candidate Git v2.22.0-rc3 is now available for testing
>at the usual places.  It is comprised of 718 non-merge commits
>since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
>Hopefully, this will be the last -rc during this cycle.
>
>The tarballs are found at:
>
>    https://www.kernel.org/pub/software/scm/git/testing/
>
>The following public repositories all have a copy of the
>'v2.22.0-rc3' tag and the 'master' branch that the tag points at:
>
>  url = https://kernel.googlesource.com/pub/scm/git/git
>  url = git://repo.or.cz/alt-git.git
>  url = https://github.com/gitster/git
>
>New contributors whose contributions weren't in v2.21.0 are as follows.
>Welcome to the Git development community!
>
>  Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
>  Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
>  Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
>  Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
>  Yash Bhatambare.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
>  Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
>  Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
>  Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
>  Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
>  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>  Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
>  Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
>  Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
>  Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
>  Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
>  Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
>  Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
>  Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
>  Trần Ngọc Quân.
>
>----------------------------------------------------------------
>
>Git 2.22 Release Notes (draft)
>==============================
>
>Updates since v2.21
>-------------------
>
>Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
>   create a lazy/partial clone has been removed.  Using a blob that is
>   part of the project as sparse specification is still supported with
>   the "--filter=sparse:oid=<blob>" option.
>
>UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
>   checking out paths out of the tree-ish, that allows paths that
>   match the pathspec that are in the current index and working tree
>   and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..."  now allows to
>   optionally pick trailers selectively by keyword, show only values,
>   etc.
>
> * Four new configuration variables {author,committer}.{name,email}
>   have been introduced to override user.{name,email} in more specific
>   cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
>   "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
>   merge involved renames.  A new option adds the paths in the
>   original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
>   complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
>   culprit using a raw "diff-tree", with which there is no output for
>   a merge commit.  This has been updated to use a more modern and
>   human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>   option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
>   been updated.
>
> * The completion helper code now pays attention to repository-local
>   configuration (when available), which allows --list-cmds to honour
>   a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>   its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
>   file changes, which can help e.g. a virtualized working tree
>   implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
>   between HEAD and the working-tree files forward while checking out
>   another branch, and ignored the differences between HEAD and the
>   index.  The command has been taught to abort when the index and the
>   HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
>   often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
>   submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
>   infer file movement based on how other files in the same directory
>   moved.  As this is inherently less robust heuristics than the one
>   based on the content similarity of the file itself (rather than
>   based on what its neighbours are doing), it sometimes gives an
>   outcome unexpected by the end users.  This has been toned down to
>   leave the renamed paths in higher/conflicted stages in the index so
>   that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
>   mistake when creating an annotated or signed tag that points at
>   another tag.
>
> * The "git pack-objects" command learned to report the number of
>   objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
>   conflicted merge was shown above the scissors line when the
>   clean-up mode is set to "scissors", even though it was commented
>   out just like the list of updated paths and other information to
>   help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
>   when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
>   the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
>   repositories now; also the pathname hash-cache is created by
>   default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
>   taught that in their contexts, the notation A...B means "the merge
>   base between these two commits", just like "git checkout A...B"
>   detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
>   of {diff,merge}.{tool,guitool} configuration variables serve as
>   fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>   mode; they are now explicitly marked as mutually incompatible.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
>   long predates the parse-options API, uses fairly long and complex
>   handcrafted option parser.  This is being rewritten to use the
>   parse-options API.
>
> * The implementation of pack-redundant has been updated for
>   performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
>   bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
>   use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
>   patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
>   easier to run most of the tests under different versions of
>   over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
>   results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
>   packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
>   updated.
>
> * The tests have been updated not to rely on the abbreviated option
>   names the parse-options API offers, to protect us from an
>   abbreviated form of an option that used to be unique within the
>   command getting non-unique when a new option that share the same
>   prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
>   list many times during a single step of its operation, and the
>   recent C-rewrite made a faithful conversion of the logic to C.  The
>   implementation has been updated to carry necessary information
>   around in-core to avoid rewriting the same file over and over
>   unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
>   processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
>   missing blobs we will need, instead of waiting for the on-demand
>   machinery to discover them one by one.  The code learned to aim to
>   achieve better performance by batching the request for these
>   promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
>   pointless to spend cycles for a large portion of the connectivity
>   check that enumerates and skips promisor objects (which by
>   definition is all objects fetched from the other side).  This has
>   been optimized out.
>
> * Mechanically and systematically drop "extern" from function
>   declaration.
>
> * The script to aggregate perf result unconditionally depended on
>   libjson-perl even though it did not have to, which has been
>   corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
>   avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
>   of Git that happens to be on $PATH, not the specified one to
>   measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
>   spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
>   responded by a request to disambiguate between --recursive and
>   --recurse-submodules, which is bad because these two are synonyms.
>   The parse-options API has been extended to define such synonyms
>   more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
>   fread/fwrite did not return the number of elements, which was found
>   to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
>Fixes since v2.21
>-----------------
>
> * "git prune-packed" did not notice and complain against excess
>   arguments given from the command line, which now it does.
>   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
>   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
>   --ext-diff and --textconv, but so far these have been ignored,
>   which has been corrected.
>   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>   a bug in the latter (lack of authentication retry) and generally
>   improves the code base.
>   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
>   to (accidentally) include it more than once.
>   (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
>   included sha256/gcrypt.h, even when it is not used, causing the
>   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>   use.
>   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
>   files, which is expensive on platforms with slow filesystems; it
>   now optionally uses "ls-files" if working within a repository,
>   which is a trick similar to how all sources are enumerated to run
>   ETAGS on.
>   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>   correctly, which has been corrected.
>   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
>   (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
>   DEVELOPER=YesPlease; this did not work well before.
>   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
>   the objects that are not reachable from any of the refs into
>   unreachable and dangling.  This is now enabled when dangling
>   objects are requested (which is done by default, but can be
>   overridden with the "--no-dangling" option).
>   (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>   the upload-pack that runs on the other end that hangs up after
>   detecting an error could cause "git fetch" to die with a signal,
>   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
>   the network portion of its operation (this is not a problem as we
>   check the return status from our write(2)s).
>   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
>   well-known objects like an empty tree (which should yield "yes",
>   even when there is no on-disk object for an empty tree), which has
>   been corrected.
>   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
>   repository_format structure.
>   (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
>   but there is a slight difference that wasn't documented, which is
>   now fixed.
>   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
>   working tree down to a small "token" (a la Git LFS), there is no
>   point in allocating a huge scratch area upfront, but the buffer is
>   sized based on the original file size.  The convert mechanism now
>   allocates very minimum and reallocates as it receives the output
>   from the clean filter process.
>   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
>   intermediate states, which inherently makes the hierarchy per
>   worktree, but it didn't quite work well.
>   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>   output as it should.  This has been corrected.
>   (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
>   and then mkdir", which is race-prone.  This has been fixed by using
>   mkdir and reacting to EEXIST in a loop.
>   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
>   (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
>   asciidoc.
>   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
>   messages at places.
>   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
>   that they can be localized.
>   (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
>   configuration, which made Windows port to ignore settings of
>   core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
>   is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
>   output file for the cover-letter, which has been corrected.
>   (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
>   incorrectly left some paths in an unmerged state, which has been
>   corrected.
>
> * A corner case bug in the refs API has been corrected.
>   (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
>   (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
>   strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
>   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
>   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
>   update_server_info() function.
>   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
>   updated.
>   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
>   user to ask help resolving a conflicted step, did not honor the
>   options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
>   careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
>   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
>   corrected.
>
> * Performance fix around "git blame", especially in a linear history
>   (which is the norm we should optimize for).
>   (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
>   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
>   deal better with overlong messages.
>   (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
>   the working tree, and the same command in a bare repository errors
>   out because there is no working tree by definition.  The command
>   has been taught to instead start blaming from the commit at HEAD,
>   which is more useful.
>   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
>   extension has been corrected.
>   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
>   it is used in more places, by using xmalloc and/or xcalloc calls.
>   (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
>   was made runtime-tunable, which has been fixed.
>   (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
>   (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
>   down correctly, which has been corrected.
>   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
>   payload contains carriage-return.  The use of the mechanism is in
>   line with the design originally added the codepath that chooses QP
>   when the payload has overly long lines.
>   (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
>   anything-by: trailers in 'git send-email' was found to be way too
>   eager and considered nonsense strings as if they can be legitimate
>   beginning of *-by: trailer.  This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
>   seems to have stopped including from /usr/local/include; this
>   has been corrected.
>   (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
>   repository is an explicit indication that the user wants to add it
>   as a submodule, but when the HEAD of the inner repository is on an
>   unborn branch, it cannot be added as a submodule.  Worse, the files
>   in its working tree can be added as if they are a part of the outer
>   repository, which is not what the user wants.  These problems are
>   being addressed.
>   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
>   to (and more importantly, ought to) clean up the commit log message
>   with the --cleanup=space option by default, but this has been
>   broken since late 2017.  This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
>   failed to peel the tag before writing a replace ref, which did not
>   make sense because the old graft mechanism the feature wants to
>   mimic only allowed to replace one commit object with another.
>   This has been fixed.
>   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
>   of a different type is expected, instead of blindly assuming that
>   the connection between objects are correctly made.
>   (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>   which has been fixed.
>   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
>   for-each-ref" and friends was not showing the right branch, which
>   has been fixed.
>   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
>   where a particular build may deliberately omit some subcommands,
>   which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
>   "git branch -D" from removing the branch that is currently checked
>   out by mistake.  The implementation of this logic was broken for
>   repositories with unusual name, which unfortunately is the norm for
>   submodules these days.  This has been fixed.
>   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
>   which has been corrected.
>   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
>   gettext() implementations from -libintl by ignoring useless stub
>   implementations shipped in some C library, which has been
>   corrected.
>   (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
>   run in an empty repository, which emulates the initial clone
>   situation better.
>   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
>   tree resulted in duplicated Makefile rules that caused the build to
>   issue an unnecessary warning during a trial build after merge
>   conflicts are resolved in working tree *.h files but before the
>   resolved results are added to the index.  This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
>   that deals with multiple commits got confused when the final step
>   gets stopped with a conflict and the user concluded the sequence
>   with "git commit".  Attempt to fix it by cleaning up the state
>   files used by these commands in such a situation.
>   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
>   entities may become different from what the end-user expects, just
>   like files in the working tree get "renamed".  Work around the
>   mismatch by paying attention to the core.precomposeUnicode
>   configuration.
>   (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
>   see too many packfiles and ran out of open file descriptor, which
>   has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
>   git-svn package (in the hope that it would bring in the right
>   dependencies).  This has been updated to install the more direct
>   dependency, namely, libsvn-perl.
>   (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
>   "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
>   file gets discarded, which has been corrected.
>   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
>   todo-list "rebase -i -r" uses should not be shown as a hex object
>   name.
>
> * A prerequisite check in the test suite to see if a working jgit is
>   available was made more robust.
>   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
>   indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
>   (merge 11f470aee7 jc/test-yes-doc later to maint).
>   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>   (merge 5c326d1252 jk/unused-params later to maint).
>   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>   (merge 1ede45e44b en/merge-options-doc later to maint).
>   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>   (merge c271dc28fd nd/no-more-check-racy later to maint).
>   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>   (merge 50b206371d js/untravis-windows later to maint).
>   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>   (merge af91b0230c dl/ignore-docs later to maint).
>   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>   (merge e041d0781b ar/t4150-remove-cruft later to maint).
>   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>   (merge 0b918b75af sg/t5318-cleanup later to maint).
>   (merge 68ed71b53c cb/doco-mono later to maint).
>   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>   (merge d8083e4180 km/t3000-retitle later to maint).
>   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>   (merge 6804ba3a58 cw/diff-highlight later to maint).
>   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>   (merge d9ef573837 jk/apache-lsan later to maint).
>   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>   (merge d4907720a2 cm/notes-comment-fix later to maint).
>   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
>   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.21.0 are as follows:
>
>Alban Gruin (18):
>      sequencer: changes in parse_insn_buffer()
>      sequencer: make the todo_list structure public
>      sequencer: remove the 'arg' field from todo_item
>      sequencer: refactor transform_todos() to work on a todo_list
>      sequencer: introduce todo_list_write_to_file()
>      sequencer: refactor check_todo_list() to work on a todo_list
>      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>      sequencer: refactor rearrange_squash() to work on a todo_list
>      sequencer: make sequencer_make_script() write its script to a strbuf
>      sequencer: change complete_action() to use the refactored functions
>      rebase--interactive: move sequencer_add_exec_commands()
>      rebase--interactive: move rearrange_squash_in_todo_file()
>      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>      rebase-interactive: append_todo_help() changes
>      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>      sequencer: use edit_todo_list() in complete_action()
>      rebase--interactive: move transform_todo_file()
>
>Alexander Blesius (1):
>      doc: fix typos in man pages
>
>Alexander Shopov (1):
>      gitk: Update Bulgarian translation (317t)
>
>Anders Waldenborg (7):
>      doc: group pretty-format.txt placeholders descriptions
>      pretty: allow %(trailers) options with explicit value
>      pretty: single return path in %(trailers) handling
>      pretty: allow showing specific trailers
>      pretty: add support for "valueonly" option in %(trailers)
>      strbuf: separate callback for strbuf_expand:ing literals
>      pretty: add support for separator option in %(trailers)
>
>Andreas Heiduk (1):
>      revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
>Andrei Rybak (1):
>      t4150: remove unused variable
>
>Baruch Siach (1):
>      send-email: don't cc *-by lines with '-' prefix
>
>Beat Bolli (1):
>      unicode: update the width tables to Unicode 12
>
>Ben Peart (1):
>      read-cache: add post-index-change hook
>
>Boxuan Li (1):
>      t4253-am-keep-cr-dos: avoid using pipes
>
>Brandon Richardson (1):
>      commit-tree: utilize parse-options api
>
>Carlo Marcelo Arenas Belón (1):
>      http-push: prevent format overflow warning with gcc >= 9
>
>Chris Mayo (1):
>      notes: correct documentation of format_display_notes()
>
>Chris. Webster (1):
>      diff-highlight: use correct /dev/null for UNIX and Windows
>
>Christian Couder (5):
>      t6050: use test_line_count instead of wc -l
>      t6050: redirect expected error output to a file
>      replace: peel tag when passing a tag as parent to --graft
>      replace: peel tag when passing a tag first to --graft
>      list-objects-filter: disable 'sparse:path' filters
>
>Clément Chigot (2):
>      Makefile: use fileno macro work around on AIX
>      git-compat-util: work around for access(X_OK) under root
>
>Corentin BOMPARD (2):
>      doc/CodingGuidelines: URLs and paths as monospace
>      doc: format pathnames and URLs as monospace.
>
>Damien Robert (1):
>      ref-filter: use correct branch for %(push:track)
>
>Daniels Umanovskis (1):
>      branch: introduce --show-current display option
>
>David Aguilar (2):
>      mergetools: add support for smerge (Sublime Merge)
>      contrib/completion: add smerge to the mergetool completion candidates
>
>David Kastrup (1):
>      blame.c: don't drop origin blobs as eagerly
>
>Denton Liu (38):
>      completion: complete git submodule absorbgitdirs
>      git-submodule.txt: "--branch <branch>" option defaults to 'master'
>      submodule--helper: teach config subcommand --unset
>      submodule: document default behavior
>      git-reset.txt: clarify documentation
>      git-clean.txt: clarify ignore pattern files
>      docs: move core.excludesFile from git-add to gitignore
>      contrib/subtree: ensure only one rev is provided
>      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      tag: fix formatting
>      submodule: teach set-branch subcommand
>      tag: advise on nested tags
>      t7600: clean up style
>      t3507: clean up style
>      t7604: clean up style
>      t7502: clean up style
>      commit: extract cleanup_mode functions to sequencer
>      parse-options.h: extract common --cleanup option
>      merge: cleanup messages like commit
>      merge: add scissors line on merge conflict
>      cherry-pick/revert: add scissors line on merge conflict
>      t7610: unsuppress output
>      t7610: add mergetool --gui tests
>      *.[ch]: remove extern from function declarations using spatch
>      *.[ch]: remove extern from function declarations using sed
>      *.[ch]: manually align parameter lists
>      t2018: cleanup in current test
>      branch: make create_branch accept a merge base rev
>      revisions.txt: change "rev" to "<rev>"
>      revisions.txt: mark optional rev arguments with []
>      revisions.txt: mention <rev>~ form
>      tag: fix typo in nested tagging hint
>      mergetool: use get_merge_tool function
>      mergetool--lib: create gui_mode function
>      mergetool: fallback to tool when guitool unavailable
>      difftool: make --gui, --tool and --extcmd mutually exclusive
>      difftool: fallback on merge.guitool
>
>Derrick Stolee (4):
>      trace2:data: pack-objects: add trace2 regions
>      midx: pass a repository pointer
>      midx: add packs to packed_git linked list
>      trace2: add variable description to git.txt
>
>Dustin Spicuzza (1):
>      cvsexportcommit: force crlf translation
>
>Elijah Newren (23):
>      log,diff-tree: add --combined-all-paths option
>      merge-options.txt: correct wording of --no-commit option
>      t9300: demonstrate bug with get-mark and empty orphan commits
>      git-fast-import.txt: fix wording about where ls command can appear
>      fast-import: check most prominent commands first
>      fast-import: only allow cat-blob requests where it makes sense
>      fast-import: fix erroneous handling of get-mark with empty orphan commits
>      Use 'unsigned short' for mode, like diff_filespec does
>      merge-recursive: rename merge_options argument from 'o' to 'opt'
>      merge-recursive: rename diff_filespec 'one' to 'o'
>      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>      merge-recursive: use 'ci' for rename_conflict_info variable name
>      merge-recursive: move some struct declarations together
>      merge-recursive: shrink rename_conflict_info
>      merge-recursive: remove ren[12]_other fields from rename_conflict_info
>      merge-recursive: track branch where rename occurred in rename struct
>      merge-recursive: cleanup handle_rename_* function signatures
>      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>      t6043: fix copied test description to match its purpose
>      merge-recursive: track information associated with directory renames
>      merge-recursive: give callers of handle_content_merge() access to contents
>      merge-recursive: switch directory rename detection default
>      Honor core.precomposeUnicode in more places
>
>Emily Shaffer (1):
>      gitsubmodules: align html and nroff lists
>
>Eric Sunshine (1):
>      check-non-portable-shell: support Perl versions older than 5.10
>
>Eric Wong (1):
>      repack: enable bitmaps by default on bare repos
>
>Jean-Noël Avila (3):
>      l10n: fr.po remove obsolete entries
>      Doc: fix misleading asciidoc formating
>      diff: fix mistake in translatable strings
>
>Jeff Hostetler (30):
>      trace2: Documentation/technical/api-trace2.txt
>      trace2: create new combined trace facility
>      trace2: collect Windows-specific process information
>      trace2:data: add trace2 regions to wt-status
>      trace2:data: add editor/pager child classification
>      trace2:data: add trace2 sub-process classification
>      trace2:data: add trace2 transport child classification
>      trace2:data: add subverb to checkout command
>      trace2:data: add subverb to reset command
>      trace2:data: add trace2 hook classification
>      trace2:data: add subverb for rebase
>      trace2:data: add trace2 instrumentation to index read/write
>      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>      trace2: add for_each macros to clang-format
>      progress: add sparse mode to force 100% complete message
>      trace2:data: add trace2 data to midx
>      midx: add progress indicators in multi-pack-index verify
>      midx: during verify group objects by packfile to speed verification
>      config: initialize opts structure in repo_read_config()
>      trace2: refactor setting process starting time
>      trace2: add absolute elapsed time to start event
>      trace2: find exec-dir before trace2 initialization
>      config: add read_very_early_config()
>      trace2: use system/global config for default trace2 settings
>      trace2: report peak memory usage of the process
>      trace2: clarify UTC datetime formatting
>      trace2: make SIDs more unique
>      trace2: update docs to describe system/global config settings
>      trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>      trace2: fix tracing when NO_PTHREADS is defined
>
>Jeff King (92):
>      prune: lazily perform reachability traversal
>      prune: use bitmaps for reachability traversal
>      prune: check SEEN flag for reachability
>      t5304: rename "sha1" variables to "oid"
>      diff: drop options parameter from diffcore_fix_diff_index()
>      diff: drop unused color reset parameters
>      diff: drop unused emit data parameter from sane_truncate_line()
>      diff: drop complete_rewrite parameter from run_external_diff()
>      merge-recursive: drop several unused parameters
>      pack-objects: drop unused parameter from oe_map_new_pack()
>      files-backend: drop refs parameter from split_symref_update()
>      ref-filter: drop unused buf/sz pairs
>      ref-filter: drop unused "obj" parameters
>      ref-filter: drop unused "sz" parameters
>      diff: reuse diff setup for --no-index case
>      bisect: use string arguments to feed internal diff-tree
>      bisect: fix internal diff-tree config loading
>      bisect: make diff-tree output prettier
>      fetch: avoid calling write_or_die()
>      fetch: ignore SIGPIPE during network operation
>      rev-list: allow cached objects in existence check
>      doc/fsck: clarify --connectivity-only behavior
>      fsck: always compute USED flags for unreachable objects
>      compat/bswap: add include header guards
>      config: document --type=color output is a complete line
>      line-log: suppress diff output with "-s"
>      line-log: detect unsupported formats
>      point pull requesters to GitGitGadget
>      Makefile: fix unaligned loads in sha1dc with UBSan
>      t5310: correctly remove bitmaps for jgit test
>      pack-objects: default to writing bitmap hash-cache
>      perf-lib.sh: rely on test-lib.sh for --tee handling
>      revision: drop some unused "revs" parameters
>      log: drop unused rev_info from early output
>      log: drop unused "len" from show_tagger()
>      update-index: drop unused prefix_length parameter from do_reupdate()
>      test-date: drop unused "now" parameter from parse_dates()
>      unpack-trees: drop name_entry from traverse_by_cache_tree()
>      unpack-trees: drop unused error_type parameters
>      report_path_error(): drop unused prefix parameter
>      fetch_pack(): drop unused parameters
>      parse-options: drop unused ctx parameter from show_gitcomp()
>      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>      pretty: drop unused strbuf from parse_padding_placeholder()
>      git: read local config in --list-cmds
>      completion: fix multiple command removals
>      parse_opt_ref_sorting: always use with NONEG flag
>      refs/files-backend: handle packed transaction prepare failure
>      refs/files-backend: don't look at an aborted transaction
>      http: factor out curl result code normalization
>      http: normalize curl results for dumb loose and alternates fetches
>      http: use normalize_curl_result() instead of manual conversion
>      revision: use a prio_queue to hold rewritten parents
>      get_commit_tree(): return NULL for broken tree
>      rev-list: let traversal die when --missing is not in use
>      rev-list: detect broken root trees
>      test-prio-queue: use xmalloc
>      xdiff: use git-compat-util
>      xdiff: use xmalloc/xrealloc
>      progress: use xmalloc/xcalloc
>      t5516: drop ok=sigpipe from unreachable-want tests
>      t5530: check protocol response for "not our ref"
>      upload-pack: send ERR packet for non-tip objects
>      pkt-line: prepare buffer before handling ERR packets
>      fetch: use free_refs()
>      remote.c: make singular free_ref() public
>      fetch: do not consider peeled tags as advertised tips
>      packfile.h: drop extern from function declarations
>      pack-revindex: open index if necessary
>      t5319: fix bogus cat-file argument
>      t5319: drop useless --buffer from cat-file
>      midx: check both pack and index names for containment
>      packfile: fix pack basename computation
>      http: simplify parsing of remote objects/info/packs
>      server-info: fix blind pointer arithmetic
>      server-info: simplify cleanup in parse_pack_def()
>      server-info: use strbuf to read old info/packs file
>      server-info: drop nr_alloc struct member
>      server-info: drop objdirlen pointer arithmetic
>      update_info_refs(): drop unused force parameter
>      t5304: add a test for pruning with bitmaps
>      untracked-cache: be defensive about missing NULs in index
>      untracked-cache: simplify parsing by dropping "next"
>      untracked-cache: simplify parsing by dropping "len"
>      p5302: create the repo in each index-pack test
>      doc/ls-files: put nested list for "-t" option into block
>      t/perf: depend on perl JSON only when using --codespeed
>      t/perf: add perf script for partial clones
>      coccicheck: optionally batch spatch invocations
>      t/lib-httpd: pass LSAN_OPTIONS through apache
>      coccicheck: make batch size of 0 mean "unlimited"
>      get_oid: handle NULL repo->index
>
>Jiang Xin (5):
>      t5323: test cases for git-pack-redundant
>      pack-redundant: delay creation of unique_objects
>      pack-redundant: rename pack_list.all_objects
>      pack-redundant: consistent sort method
>      i18n: fix typos found during l10n for git 2.22.0
>
>Joel Teichroeb (5):
>      stash: improve option parsing test coverage
>      stash: convert apply to builtin
>      stash: convert drop and clear to builtin
>      stash: convert branch to builtin
>      stash: convert pop to builtin
>
>Joey Hess (1):
>      convert: avoid malloc of original file size
>
>Johannes Schindelin (67):
>      ident: add the ability to provide a "fallback identity"
>      travis: remove the hack to build the Windows job on Azure Pipelines
>      tests: let --stress-limit=<N> imply --stress
>      tests: introduce --stress-jobs=<N>
>      built-in rebase: no need to check out `onto` twice
>      built-in rebase: use the correct reflog when switching branches
>      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>      built-in rebase: set ORIG_HEAD just once, before the rebase
>      Makefile: use `git ls-files` to list header files, if possible
>      curl: anonymize URLs in error messages and warnings
>      remote-curl: mark all error messages for translation
>      stash: add back the original, scripted `git stash`
>      stash: optionally use the scripted version again
>      tests: add a special setup where stash.useBuiltin is off
>      legacy stash: fix "rudimentary backport of -q"
>      built-in stash: handle :(glob) pathspecs again
>      mingw: drop MakeMaker reference
>      mingw: allow building with an MSYS2 runtime v3.x
>      rebase: deprecate --preserve-merges
>      mingw: respect core.hidedotfiles = false in git-init again
>      test-lib: introduce 'test_atexit'
>      git-daemon: use 'test_atexit` to stop 'git-daemon'
>      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>      rebase -i: demonstrate obscure loose object cache bug
>      sequencer: improve error message when an OID could not be parsed
>      sequencer: move stale comment into correct location
>      get_oid(): when an object was not found, try harder
>      difftool: remove obsolete (and misleading) comment
>      parse-options: make OPT_ARGUMENT() more useful
>      difftool: allow running outside Git worktrees with --no-index
>      docs: move gitremote-helpers into section 7
>      docs: do not document the `git remote-testgit` command
>      check-docs: really look at the documented commands again
>      check-docs: do not expect guide pages to correspond to commands
>      check-docs: fix for setups where executables have an extension
>      tests (rebase): spell out the `--keep-empty` option
>      tests (rebase): spell out the `--force-rebase` option
>      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>      t5531: avoid using an abbreviated option
>      tests (push): do not abbreviate the `--follow-tags` option
>      tests (status): spell out the `--find-renames` option in full
>      tests (pack-objects): use the full, unabbreviated `--revs` option
>      t3301: fix false negative
>      untracked cache: fix off-by-one
>      tests: disallow the use of abbreviated options (by default)
>      t9822: skip tests if file names cannot be ISO-8859-1 encoded
>      macOS: make sure that gettext is found
>      remote-testgit: move it into the support directory for t5801
>      Makefile: drop the NO_INSTALL variable
>      help -a: do not list commands that are excluded from the build
>      check-docs: allow command-list.txt to contain excluded commands
>      docs: exclude documentation for commands that have been excluded
>      check-docs: do not bother checking for legacy scripts' documentation
>      test-tool: handle the `-C <directory>` option just like `git`
>      Turn `git serve` into a test helper
>      t5580: verify that alternates can be UNC paths
>      fsmonitor: demonstrate that it is not refreshed after discard_index()
>      fsmonitor: force a refresh after the index was discarded
>      t6500(mingw): use the Windows PID of the shell
>      difftool --no-index: error out on --dir-diff (and don't crash)
>      status: fix display of rebase -ir's `label` command
>      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>      stash: document stash.useBuiltin
>      rebase: replace incorrect logical negation by correct bitwise one
>      tests: mark a couple more test cases as requiring `rebase -p`
>      docs: say that `--rebase=preserve` is deprecated
>      rebase docs: recommend `-r` over `-p`
>
>Jonathan Tan (25):
>      remote-curl: reduce scope of rpc_state.argv
>      remote-curl: reduce scope of rpc_state.stdin_preamble
>      remote-curl: reduce scope of rpc_state.result
>      remote-curl: refactor reading into rpc_state's buf
>      remote-curl: use post_rpc() for protocol v2 also
>      tests: define GIT_TEST_PROTOCOL_VERSION
>      t5601: check ssh command only with protocol v0
>      tests: always test fetch of unreachable with v0
>      t5503: fix overspecification of trace expectation
>      t5512: compensate for v0 only sending HEAD symrefs
>      t5700: only run with protocol version 1
>      tests: fix protocol version for overspecifications
>      t5552: compensate for v2 filtering ref adv.
>      submodule: explain first attempt failure clearly
>      t5551: mark half-auth no-op fetch test as v0-only
>      fetch-pack: call prepare_shallow_info only if v0
>      fetch-pack: respect --no-update-shallow in v2
>      sha1-file: support OBJECT_INFO_FOR_PREFETCH
>      fetch-pack: binary search when storing wanted-refs
>      diff: batch fetching of missing blobs
>      pack-objects: write objects packed to trace2
>      transport: die if server options are unsupported
>      clone: send server options when using protocol v2
>      worktree: update is_bare heuristics
>      fetch-pack: send server options after command
>
>Jordi Mas (1):
>      l10n: Fixes to Catalan translation
>
>Josh Steadmon (5):
>      protocol-capabilities.txt: document symref
>      trace2: write to directory targets
>      clone: do faster object check for partial clones
>      trace2: fix incorrect function pointer check
>      commit-graph: fix memory leak
>
>Junio C Hamano (18):
>      test: caution on our version of 'yes'
>      builtin/log: downcase the beginning of error messages
>      format-patch: notice failure to open cover letter for writing
>      Start 2.22 cycle
>      The second batch
>      The third batch
>      The fourth batch
>      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>      The fifth batch
>      The sixth batch
>      Makefile: dedup list of files obtained from ls-files
>      The seventh batch
>      The eighth batch
>      Git 2.22-rc0
>      pkt-line: drop 'const'-ness of a param to set_packet_header()
>      Git 2.22-rc1
>      Git 2.22-rc2
>      Git 2.22-rc3
>
>Kyle Meyer (5):
>      rebase docs: fix "gitlink" typo
>      submodule: refuse to add repository with no commits
>      dir: do not traverse repositories with no commits
>      add: error appropriately on repository with no commits
>      t3000 (ls-files -o): widen description to reflect current tests
>
>Martin Ågren (14):
>      setup: free old value before setting `work_tree`
>      setup: fix memory leaks with `struct repository_format`
>      config/diff.txt: drop spurious backtick
>      config/fsck.txt: avoid starting line with dash
>      git.txt: remove empty line before list continuation
>      git-svn.txt: drop escaping '\' that ends up being rendered
>      Documentation: turn middle-of-line tabs into spaces
>      Documentation/Makefile: add missing xsl dependencies for manpages
>      Documentation/Makefile: add missing dependency on asciidoctor-extensions
>      asciidoctor-extensions: fix spurious space after linkgit
>      Doc: auto-detect changed build flags
>      doc-diff: let `render_tree()` take an explicit directory name
>      doc-diff: support diffing from/to AsciiDoc(tor)
>      doc-diff: add `--cut-header-footer`
>
>Matthew Kraai (1):
>      t3903: add test for --intent-to-add file
>
>Michal Suchanek (1):
>      worktree: fix worktree add race
>
>Mike Hommey (2):
>      fix pack protocol example client/server communication
>      Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
>Nguyễn Thái Ngọc Duy (129):
>      parse-options.h: remove extern on function prototypes
>      parse-options: add one-shot mode
>      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>      parse-options: add OPT_BITOP()
>      parse-options: stop abusing 'callback' for lowlevel callbacks
>      parse-options: avoid magic return codes
>      parse-options: allow ll_callback with OPTION_CALLBACK
>      diff.h: keep forward struct declarations sorted
>      diff.h: avoid bit fields in struct diff_flags
>      diff.c: prepare to use parse_options() for parsing
>      diff.c: convert -u|-p|--patch
>      diff.c: convert -U|--unified
>      diff.c: convert -W|--[no-]function-context
>      diff.c: convert --raw
>      read-cache.c: fix writing "link" index ext with null base oid
>      completion: add more parameter value completion
>      diff-parseopt: convert --patch-with-raw
>      diff-parseopt: convert --numstat and --shortstat
>      diff-parseopt: convert --dirstat and friends
>      diff-parseopt: convert --check
>      diff-parseopt: convert --summary
>      diff-parseopt: convert --patch-with-stat
>      diff-parseopt: convert --name-only
>      diff-parseopt: convert --name-status
>      diff-parseopt: convert -s|--no-patch
>      diff-parseopt: convert --stat*
>      diff-parseopt: convert --[no-]compact-summary
>      diff-parseopt: convert --output-*
>      diff-parseopt: convert -B|--break-rewrites
>      diff-parseopt: convert -M|--find-renames
>      diff-parseopt: convert -D|--irreversible-delete
>      diff-parseopt: convert -C|--find-copies
>      diff-parseopt: convert --find-copies-harder
>      diff-parseopt: convert --no-renames|--[no--rename-empty
>      diff-parseopt: convert --relative
>      diff-parseopt: convert --[no-]minimal
>      diff-parseopt: convert --ignore-some-changes
>      Delete check-racy.c
>      diff-parseopt: convert --[no-]indent-heuristic
>      diff-parseopt: convert --patience
>      diff-parseopt: convert --histogram
>      diff-parseopt: convert --diff-algorithm
>      diff-parseopt: convert --anchored
>      diff-parseopt: convert --binary
>      diff-parseopt: convert --full-index
>      diff-parseopt: convert -a|--text
>      diff-parseopt: convert -R
>      diff-parseopt: convert --[no-]follow
>      diff-parseopt: convert --[no-]color
>      diff-parseopt: convert --word-diff
>      diff-parseopt: convert --word-diff-regex
>      diff-parseopt: convert --color-words
>      diff-parseopt: convert --exit-code
>      diff-parseopt: convert --quiet
>      diff-parseopt: convert --ext-diff
>      diff-parseopt: convert --textconv
>      diff-parseopt: convert --ignore-submodules
>      diff-parseopt: convert --submodule
>      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>      Make sure refs/rewritten/ is per-worktree
>      unpack-trees: fix oneway_merge accidentally carry over stage index
>      checkout.txt: note about losing staged changes with --merge
>      commit: improve error message in "-a <paths>" case
>      unpack-trees: keep gently check inside add_rejected_path
>      unpack-trees: rename "gently" flag to "quiet"
>      read-tree: add --quiet
>      checkout: prevent losing staged changes with --merge
>      diff-parseopt: convert --ws-error-highlight
>      diff-parseopt: convert --ita-[in]visible-in-index
>      diff-parseopt: convert -z
>      diff-parseopt: convert -l
>      diff-parseopt: convert -S|-G
>      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>      diff-parseopt: convert -O
>      diff-parseopt: convert --find-object
>      diff-parseopt: convert --diff-filter
>      diff-parseopt: convert --[no-]abbrev
>      diff-parseopt: convert --[src|dst]-prefix
>      diff-parseopt: convert --line-prefix
>      diff-parseopt: convert --no-prefix
>      diff-parseopt: convert --inter-hunk-context
>      diff-parseopt: convert --[no-]color-moved
>      diff-parseopt: convert --color-moved-ws
>      diff.c: allow --no-color-moved-ws
>      range-diff: use parse_options() instead of diff_opt_parse()
>      diff --no-index: use parse_options() instead of diff_opt_parse()
>      am: avoid diff_opt_parse()
>      config: correct '**' matching in includeIf patterns
>      interpret-trailers.txt: start the desc line with a capital letter
>      read-tree.txt: clarify --reset and worktree changes
>      packfile.c: add repo_approximate_object_count()
>      refs.c: add refs_ref_exists()
>      refs.c: add refs_shorten_unambiguous_ref()
>      refs.c: remove the_repo from substitute_branch_name()
>      refs.c: remove the_repo from expand_ref()
>      refs.c: add repo_dwim_ref()
>      refs.c: add repo_dwim_log()
>      refs.c: remove the_repo from read_ref_at()
>      submodule foreach: fix "<command> --quiet" not being respected
>      commit.cocci: refactor code, avoid double rewrite
>      commit.c: add repo_get_commit_tree()
>      sha1-name.c: remove the_repo from sort_ambiguous()
>      sha1-name.c: remove the_repo from find_abbrev_len_packed()
>      sha1-name.c: add repo_find_unique_abbrev_r()
>      sha1-name.c: store and use repo in struct disambiguate_state
>      sha1-name.c: add repo_for_each_abbrev()
>      sha1-name.c: remove the_repo from get_short_oid()
>      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>      sha1-name.c: remove the_repo from interpret_branch_mark()
>      sha1-name.c: add repo_interpret_branch_name()
>      sha1-name.c: remove the_repo from get_oid_oneline()
>      sha1-name.c: remove the_repo from get_describe_name()
>      sha1-name.c: remove the_repo from get_oid_basic()
>      sha1-name.c: remove the_repo from get_oid_1()
>      sha1-name.c: remove the_repo from handle_one_ref()
>      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>      sha1-name.c: remove the_repo from resolve_relative_path()
>      sha1-name.c: remove the_repo from get_oid_with_context_1()
>      sha1-name.c: add repo_get_oid()
>      submodule-config.c: use repo_get_oid for reading .gitmodules
>      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>      sha1-name.c: remove the_repo from other get_oid_*
>      sha1-name.c: remove the_repo from get_oid_mb()
>      parse-options: don't emit "ambiguous option" for aliases
>      submodule--helper: add a missing \n
>      diff-parseopt: correct variable types that are used by parseopt
>      diff-parseopt: restore -U (no argument) behavior
>      parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
>Paul-Sebastian Ungureanu (17):
>      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>      strbuf.c: add `strbuf_join_argv()`
>      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>      t3903: modernize style
>      stash: rename test cases to be more descriptive
>      stash: add tests for `git stash show` config
>      stash: mention options in `show` synopsis
>      stash: convert list to builtin
>      stash: convert show to builtin
>      stash: convert store to builtin
>      stash: convert create to builtin
>      stash: convert push to builtin
>      stash: make push -q quiet
>      stash: convert save to builtin
>      stash: optimize `get_untracked_files()` and `check_changes()`
>      stash: replace all `write-tree` child processes with API calls
>      stash: convert `stash--helper.c` into `stash.c`
>
>Philip Oakley (2):
>      rerere doc: quote `rerere.enabled`
>      describe doc: remove '7-char' abbreviation reference
>
>Phillip Wood (21):
>      am/cherry-pick/rebase/revert: document --rerere-autoupdate
>      merge: tweak --rerere-autoupdate documentation
>      sequencer: break some long lines
>      cherry-pick: demonstrate option amnesia
>      cherry-pick --continue: remember options
>      commit/reset: try to clean up sequencer state
>      fix cherry-pick/revert status after commit
>      sequencer: fix cleanup with --signoff and -x
>      sequencer.c: save and restore cleanup mode
>      sequencer: always discard index after checkout
>      rebase: don't translate trace strings
>      rebase: rename write_basic_state()
>      rebase: use OPT_RERERE_AUTOUPDATE()
>      rebase -i: combine rebase--interactive.c with rebase.c
>      rebase -i: remove duplication
>      rebase -i: use struct commit when parsing options
>      rebase -i: use struct object_id for squash_onto
>      rebase -i: use struct rebase_options to parse args
>      rebase -i: use struct rebase_options in do_interactive_rebase()
>      rebase: use a common action enum
>      rebase -i: run without forking rebase--interactive
>
>Ramsay Jones (2):
>      prune-packed: check for too many arguments
>      Makefile: fix 'hdr-check' when GCRYPT not installed
>
>René Scharfe (1):
>      get-tar-commit-id: parse comment record
>
>Robert P. J. Day (3):
>      mention use of "hooks.allownonascii" in "man githooks"
>      docs/git-gc: fix typo "--prune=all" to "--prune=now"
>      attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
>Rohit Ashiwal (3):
>      test functions: add function `test_file_not_empty`
>      t3600: modernize style
>      t3600: use helpers to replace test -d/f/e/s <path>
>
>SZEDER Gábor (27):
>      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>      t/lib-git-daemon: make sure to kill the 'git-daemon' process
>      tests: use 'test_atexit' to stop httpd
>      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>      git p4 test: clean up the p4d cleanup functions
>      git p4 test: simplify timeout handling
>      git p4 test: disable '-x' tracing in the p4d watchdog loop
>      t9811-git-p4-label-import: fix pipeline negation
>      t5318-commit-graph: remove unused variable
>      Documentation/git-diff-tree.txt: fix formatting
>      Documentation/technical/api-config.txt: fix formatting
>      Documentation/technical/protocol-v2.txt: fix formatting
>      ci: install Asciidoctor in 'ci/install-dependencies.sh'
>      index-pack: show progress while checking objects
>      ci: stick with Asciidoctor v1.5.8 for now
>      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>      progress: make display_progress() return void
>      progress: assemble percentage and counters in a strbuf before printing
>      blame: default to HEAD in a bare repo when no start commit is given
>      builtin rebase: use FREE_AND_NULL
>      builtin rebase: use oideq()
>      progress: clear previous progress update dynamically
>      progress: break too long progress bar lines
>      ci: install 'libsvn-perl' instead of 'git-svn'
>      trace2: rename environment variables to GIT_TRACE2*
>      trace2: document the supported values of GIT_TRACE2* env variables
>      progress: avoid empty line when breaking the progress line
>
>Sun Chao (2):
>      pack-redundant: delete redundant code
>      pack-redundant: new algorithm to find min packs
>
>Sven Strickroth (1):
>      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
>Tanushree Tumane (1):
>      mingw: remove obsolete IPv6-related code
>
>Taylor Blau (4):
>      t: move 'hex2oct' into test-lib-functions.sh
>      t: introduce tests for unexpected object types
>      list-objects.c: handle unexpected non-blob entries
>      list-objects.c: handle unexpected non-tree entries
>
>Thomas Gummerer (15):
>      move worktree tests to t24*
>      entry: factor out unlink_entry function
>      entry: support CE_WT_REMOVE flag in checkout_entry
>      read-cache: add invalidate parameter to remove_marked_cache_entries
>      checkout: clarify comment
>      checkout: factor out mark_cache_entry_for_checkout function
>      checkout: introduce --{,no-}overlay option
>      checkout: introduce checkout.overlayMode config
>      revert "checkout: introduce checkout.overlayMode config"
>      ident: don't require calling prepare_fallback_ident first
>      stash: drop unused parameter
>      stash: pass pathspec as pointer
>      glossary: add definition for overlay
>      stash: setup default diff output format if necessary
>      ls-files: use correct format string
>
>Todd Zullinger (9):
>      t4038-diff-combined: quote paths with whitespace
>      t9902: test multiple removals via completion.commands
>      completion: use __git when calling --list-cmds
>      Documentation/rev-list-options: wrap --date=<format> block with "--"
>      Documentation/git-status: fix titles in porcelain v2 section
>      Documentation/git-svn: improve asciidoctor compatibility
>      Documentation/git-show-branch: avoid literal {apostrophe}
>      test-lib: try harder to ensure a working jgit
>      RelNotes: minor typo fixes in 2.22.0 draft
>
>Torsten Bögershausen (1):
>      trace2: NULL is not allowed for va_list
>
>Trần Ngọc Quân (1):
>      l10n: Updated Vietnamese translation for v2.21 rd2
>
>Vadim Kochan (1):
>      autoconf: #include <libintl.h> when checking for gettext()
>
>William Hubbs (1):
>      config: allow giving separate author and committer idents
>
>Yash Bhatambare (1):
>      gitattributes.txt: fix typo
>
>brian m. carlson (35):
>      t/lib-submodule-update: use appropriate length constant
>      khash: move oid hash table definition
>      pack-bitmap: make bitmap header handling hash agnostic
>      pack-bitmap: convert struct stored_bitmap to object_id
>      pack-bitmap: replace sha1_to_hex
>      pack-bitmap: switch hard-coded constants to the_hash_algo
>      pack-bitmap: switch hash tables to use struct object_id
>      submodule: avoid hard-coded constants
>      notes-merge: switch to use the_hash_algo
>      notes: make hash size independent
>      notes: replace sha1_to_hex
>      object-store: rename and expand packed_git's sha1 member
>      builtin/name-rev: make hash-size independent
>      fast-import: make hash-size independent
>      fast-import: replace sha1_to_hex
>      builtin/am: make hash size independent
>      builtin/pull: make hash-size independent
>      http-push: convert to use the_hash_algo
>      http-backend: allow 64-character hex names
>      http-push: remove remaining uses of sha1_to_hex
>      http-walker: replace sha1_to_hex
>      http: replace hard-coded constant with the_hash_algo
>      http: compute hash of downloaded objects using the_hash_algo
>      http: replace sha1_to_hex
>      remote-curl: make hash size independent
>      hash: add a function to lookup hash algorithm by length
>      builtin/get-tar-commit-id: make hash size independent
>      archive: convert struct archiver_args to object_id
>      refspec: make hash size independent
>      builtin/difftool: use parse_oid_hex
>      dir: make untracked cache extension hash size independent
>      read-cache: read data in a hash-independent way
>      Git.pm: make hash size independent
>      gitweb: make hash size independent
>      send-email: default to quoted-printable when CR is present
>
>Ævar Arnfjörð Bjarmason (44):
>      receive-pack: fix use-after-free bug
>      commit-graph tests: split up corrupt_graph_and_verify()
>      commit-graph tests: test a graph that's too small
>      Makefile: remove an out-of-date comment
>      Makefile: move "strip" assignment down from flags
>      Makefile: add/remove comments at top and tweak whitespace
>      Makefile: Move *_LIBS assignment into its own section
>      Makefile: move the setting of *FLAGS closer to "include"
>      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>      gc: remove redundant check for gc_auto_threshold
>      gc: convert to using the_hash_algo
>      gc: refactor a "call me once" pattern
>      reflog tests: make use of "test_config" idiom
>      reflog tests: test for the "points nowhere" warning
>      rebase: remove the rebase.useBuiltin setting
>      gc docs: modernize the advice for manually running "gc"
>      gc docs: stop noting "repack" flags
>      gc docs: clean grammar for "gc.bigPackThreshold"
>      commit-graph: fix segfault on e.g. "git status"
>      commit-graph: don't early exit(1) on e.g. "git status"
>      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>      commit-graph verify: detect inability to read the graph
>      commit-graph write: don't die if the existing graph is corrupt
>      commit-graph: improve & i18n error messages
>      reflog tests: assert lack of early exit with expiry="never"
>      gc: handle & check gc.reflogExpire config
>      test-lib: whitelist GIT_TR2_* in the environment
>      gc docs: include the "gc.*" section from "config" in "gc"
>      gc docs: re-flow the "gc.*" section in "config"
>      gc docs: fix formatting for "gc.writeCommitGraph"
>      gc docs: note how --aggressive impacts --window & --depth
>      gc docs: downplay the usefulness of --aggressive
>      gc docs: note "gc --aggressive" in "fast-import"
>      gc docs: clarify that "gc" doesn't throw away referenced objects
>      gc docs: remove incorrect reference to gc.auto=0
>      perf README: correct docs for 3c8f12c96c regression
>      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>      perf-lib.sh: make "./run <revisions>" use the correct gits
>      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>      perf tests: add "bindir" prefix to git tree test results
>      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>      trace2: fix up a missing "leave" entry point
>      trace2: fix up a missing "leave" entry point
>      sha1dc: update from upstream
>
>İsmail Dönmez (2):
>      mingw: do not let ld strip relocations
>      mingw: enable DEP and ASLR
>

Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ