Re: [ANNOUNCE] Git v2.22.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks, a bunch Junio!

On 14:31 Fri 07 Jun , Junio C Hamano wrote:
The latest feature release Git v2.22.0 is now available at the
usual places.  It is comprised of 745 non-merge commits since
v2.21.0, contributed by 74 people, 18 of which are new faces.

The tarballs are found at:

   https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.22.0'
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, Cédric Malard,
 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, Alessandro Menti,
 Alexander Shopov, Anders Waldenborg, Andreas Heiduk, Andrei
 Rybak, Beat Bolli, Ben Peart, Brandon Richardson, brian
 m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
 Christopher Díaz Riveros, Daniels Umanovskis, David Aguilar,
 David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
 Sunshine, Eric Wong, Fangyi Zhou, İ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, Matthias Rüster, Mike Hommey, Nguyễn Thái Ngọc
 Duy, Paul-Sebastian Ungureanu, Peter Krefting, Philip Oakley,
 Phillip Wood, Ralf Thielow, 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
======================

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()

Alessandro Menti (1):
     l10n: it.po: Updated Italian translation

Alexander Blesius (1):
     doc: fix typos in man pages

Alexander Shopov (4):
     gitk: Update Bulgarian translation (317t)
     l10n: bg.po: Updated Bulgarian translation (4577t)
     l10n: bg.po: Updated Bulgarian translation (4580t)
     l10n: bg.po: Updated Bulgarian translation (4581t)

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

Christopher Díaz Riveros (3):
     l10n: es: 2.22.0 round 1
     l10n: es: 2.22.0 round 2
     l10n: es: 2.22.0 round 3

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.

Cédric Malard (1):
     l10n: fr.po: Review French translation

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 (24):
     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
     merge-recursive: restore accidentally dropped setting of path

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

Fangyi Zhou (1):
     l10n: zh_CN: Revision for git v2.22.0 l10n

Jean-Noël Avila (6):
     l10n: fr.po remove obsolete entries
     Doc: fix misleading asciidoc formating
     l10n: fr.po v2.22.0.rnd1
     diff: fix mistake in translatable strings
     l10n: fr.po v2.22.0 round 2
     l10n: fr v2.22.0 rnd 3

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 (9):
     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
     l10n: git.pot: v2.22.0 round 1 (270 new, 56 removed)
     l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
     i18n: fix typos found during l10n for git 2.22.0
     l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
     l10n: zh_CN: for git v2.22.0 l10n round 1~3

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 (2):
     l10n: Fixes to Catalan translation
     l10n: Update 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 (19):
     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
     Git 2.22

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

Matthias Rüster (2):
     l10n: TEAMS: Change German translation team leader
     l10n: de.po: Update German translation

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`

Peter Krefting (2):
     l10n: sv.po: Update Swedish translation
     l10n: sv.po: Update Swedish translation (4577t0f0u)

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

Ralf Thielow (1):
     l10n: de.po: improve description of 'git reset --quiet'

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 (4):
     l10n: Updated Vietnamese translation for v2.21 rd2
     l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
     l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
     l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3

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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux