Web lists-archives.com

Re: [ANNOUNCE] Git v2.20.0-rc2




Team,

Git for Windows v2.20.0-rc2 is available here:

https://github.com/git-for-windows/git/releases/tag/v2.20.0-rc2.windows.1

There is already one known issue: the size of the installer increased (see
https://github.com/git-for-windows/git/issues/1963). This is in the
process of being addressed.

Ciao,
Johannes

On Sat, 1 Dec 2018, Junio C Hamano wrote:

> A release candidate Git v2.20.0-rc2 is now available for testing
> at the usual places.  It is comprised of 934 non-merge commits
> since v2.19.0, contributed by 76 people, 25 of which are new faces.
> 
> 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.20.0-rc2' 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.19.0 are as follows.
> Welcome to the Git development community!
> 
>   Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
>   Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David
>   Zych, Đoàn Trần Công Danh, Frederick Eaton, Greg Hurrell,
>   James Knight, Jann Horn, Joshua Watt, Loo Rong Jie, Lucas
>   De Marchi, Matthew DeVore, Mihir Mehta, Nickolai Belakovski,
>   Roger Strain, Sam McKelvie, Saulius Gurklys, Shulhan, Steven
>   Fernandez, Strain, Roger L, and Tim Schumacher.
> 
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
> 
>   Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,
>   Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,
>   brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,
>   Derrick Stolee, Elijah Newren, Eric Sunshine, Jean-Noël Avila,
>   Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
>   Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
>   Karsten Blees, Luke Diamand, Martin Ågren, Max Kirillov,
>   Michael Witten, Michał Górny, Nguyễn Thái Ngọc Duy, Noam
>   Postavsky, Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael
>   Ascensão, Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René
>   Scharfe, Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve
>   Hoelzer, Sven Strickroth, SZEDER Gábor, Tao Qingyun, Taylor
>   Blau, Thomas Gummerer, Todd Zullinger, Torsten Bögershausen,
>   and Uwe Kleine-König.
> 
> ----------------------------------------------------------------
> 
> Git 2.20 Release Notes (draft)
> ==============================
> 
> Backward Compatibility Notes
> ----------------------------
> 
>  * "git branch -l <foo>" used to be a way to ask a reflog to be
>    created while creating a new branch, but that is no longer the
>    case.  It is a short-hand for "git branch --list <foo>" now.
> 
>  * "git push" into refs/tags/* hierarchy is rejected without getting
>    forced, but "git fetch" (misguidedly) used the "fast forwarding"
>    rule used for the refs/heads/* hierarchy; this has been corrected,
>    which means some fetches of tags that did not fail with older
>    version of Git will fail without "--force" with this version.
> 
>  * "git help -a" now gives verbose output (same as "git help -av").
>    Those who want the old output may say "git help --no-verbose -a"..
> 
>  * "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
>    reported only the alias expansion of "cpn" in earlier versions of
>    Git.  It now runs "git cherry-pick --help" to show the manual page
>    of the command, while sending the alias expansion to the standard
>    error stream.
> 
>  * "git send-email" learned to grab address-looking string on any
>    trailer whose name ends with "-by". This is a backward-incompatible
>    change.  Adding "--suppress-cc=misc-by" on the command line, or
>    setting sendemail.suppresscc configuration variable to "misc-by",
>    can be used to disable this behaviour.
> 
> 
> Updates since v2.19
> -------------------
> 
> UI, Workflows & Features
> 
>  * Running "git clone" against a project that contain two files with
>    pathnames that differ only in cases on a case insensitive
>    filesystem would result in one of the files lost because the
>    underlying filesystem is incapable of holding both at the same
>    time.  An attempt is made to detect such a case and warn.
> 
>  * "git checkout -b newbranch [HEAD]" should not have to do as much as
>    checking out a commit different from HEAD.  An attempt is made to
>    optimize this special case.
> 
>  * "git rev-list --stdin </dev/null" used to be an error; it now shows
>    no output without an error.  "git rev-list --stdin --default HEAD"
>    still falls back to the given default when nothing is given on the
>    standard input.
> 
>  * Lift code from GitHub to restrict delta computation so that an
>    object that exists in one fork is not made into a delta against
>    another object that does not appear in the same forked repository.
> 
>  * "git format-patch" learned new "--interdiff" and "--range-diff"
>    options to explain the difference between this version and the
>    previous attempt in the cover letter (or after the three-dashes as
>    a comment).
> 
>  * "git mailinfo" used in "git am" learned to make a best-effort
>    recovery of a patch corrupted by MUA that sends text/plain with
>    format=flawed option.
>    (merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
> 
>  * The rules used by "git push" and "git fetch" to determine if a ref
>    can or cannot be updated were inconsistent; specifically, fetching
>    to update existing tags were allowed even though tags are supposed
>    to be unmoving anchoring points.  "git fetch" was taught to forbid
>    updates to existing tags without the "--force" option.
> 
>  * "git multi-pack-index" learned to detect corruption in the .midx
>    file it uses, and this feature has been integrated into "git fsck".
> 
>  * Generation of (experimental) commit-graph files have so far been
>    fairly silent, even though it takes noticeable amount of time in a
>    meaningfully large repository.  The users will now see progress
>    output.
> 
>  * The minimum version of Windows supported by Windows port of Git is
>    now set to Vista.
> 
>  * The completion script (in contrib/) learned to complete a handful of
>    options "git stash list" command takes.
> 
>  * The completion script (in contrib/) learned that "git fetch
>    --multiple" only takes remote names as arguments and no refspecs.
> 
>  * "git status" learns to show progress bar when refreshing the index
>    takes a long time.
>    (merge ae9af12287 nd/status-refresh-progress later to maint).
> 
>  * "git help -a" and "git help -av" give different pieces of
>    information, and generally the "verbose" version is more friendly
>    to the new users.  "git help -a" by default now uses the more
>    verbose output (with "--no-verbose", you can go back to the
>    original).  Also "git help -av" now lists aliases and external
>    commands, which it did not used to.
> 
>  * Unlike "grep", "git grep" by default recurses to the whole tree.
>    The command learned "git grep --recursive" option, so that "git
>    grep --no-recursive" can serve as a synonym to setting the
>    max-depth to 0.
> 
>  * When pushing into a repository that borrows its objects from an
>    alternate object store, "git receive-pack" that responds to the
>    push request on the other side lists the tips of refs in the
>    alternate to reduce the amount of objects transferred.  This
>    sometimes is detrimental when the number of refs in the alternate
>    is absurdly large, in which case the bandwidth saved in potentially
>    fewer objects transferred is wasted in excessively large ref
>    advertisement.  The alternate refs that are advertised are now
>    configurable with a pair of configuration variables.
> 
>  * "git cmd --help" when "cmd" is aliased used to only say "cmd is
>    aliased to ...".  Now it shows that to the standard error stream
>    and runs "git $cmd --help" where $cmd is the first word of the
>    alias expansion.
> 
>  * The documentation of "git gc" has been updated to mention that it
>    is no longer limited to "pruning away crufts" but also updates
>    ancillary files like commit-graph as a part of repository
>    optimization.
> 
>  * "git p4 unshelve" improvements.
> 
>  * The logic to select the default user name and e-mail on Windows has
>    been improved.
>    (merge 501afcb8b0 js/mingw-default-ident later to maint).
> 
>  * The "rev-list --filter" feature learned to exclude all trees via
>    "tree:0" filter.
> 
>  * "git send-email" learned to grab address-looking string on any
>    trailer whose name ends with "-by"; --suppress-cc=misc-by on the
>    command line, or setting sendemail.suppresscc configuration
>    variable to "misc-by", can be used to disable this behaviour.
> 
>  * Developer builds now uses -Wunused-function compilation option.
> 
>  * One of our CI tests to run with "unusual/experimental/random"
>    settings now also uses commit-graph and midx.
> 
>  * "git mergetool" learned to take the "--[no-]gui" option, just like
>    "git difftool" does.
> 
>  * "git rebase -i" learned a new insn, 'break', that the user can
>    insert in the to-do list.  Upon hitting it, the command returns
>    control back to the user.
> 
>  * New "--pretty=format:" placeholders %GF and %GP that show the GPG
>    key fingerprints have been invented.
> 
>  * On platforms with recent cURL library, http.sslBackend configuration
>    variable can be used to choose a different SSL backend at runtime.
>    The Windows port uses this mechanism to switch between OpenSSL and
>    Secure Channel while talking over the HTTPS protocol.
> 
>  * "git send-email" learned to disable SMTP authentication via the
>    "--smtp-auth=none" option, even when the smtp username is given
>    (which turns the authentication on by default).
> 
>  * A fourth class of configuration files (in addition to the
>    traditional "system wide", "per user in the $HOME directory" and
>    "per repository in the $GIT_DIR/config") has been introduced so
>    that different worktrees that share the same repository (hence the
>    same $GIT_DIR/config file) can use different customization.
> 
>  * A pattern with '**' that does not have a slash on either side used
>    to be an invalid one, but the code now treats such double-asterisks
>    the same way as two normal asterisks that happen to be adjacent to
>    each other.
>    (merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
> 
>  * The "--no-patch" option, which can be used to get a high-level
>    overview without the actual line-by-line patch difference shown, of
>    the "range-diff" command was earlier broken, which has been
>    corrected.
> 
>  * The recently merged "rebase in C" has an escape hatch to use the
>    scripted version when necessary, but it hasn't been documented,
>    which has been corrected.
> 
> 
> Performance, Internal Implementation, Development Support etc.
> 
>  * When there are too many packfiles in a repository (which is not
>    recommended), looking up an object in these would require
>    consulting many pack .idx files; a new mechanism to have a single
>    file that consolidates all of these .idx files is introduced.
> 
>  * "git submodule update" is getting rewritten piece-by-piece into C.
> 
>  * The code for computing history reachability has been shuffled,
>    obtained a bunch of new tests to cover them, and then being
>    improved.
> 
>  * The unpack_trees() API used in checking out a branch and merging
>    walks one or more trees along with the index.  When the cache-tree
>    in the index tells us that we are walking a tree whose flattened
>    contents is known (i.e. matches a span in the index), as linearly
>    scanning a span in the index is much more efficient than having to
>    open tree objects recursively and listing their entries, the walk
>    can be optimized, which has been done.
> 
>  * When creating a thin pack, which allows objects to be made into a
>    delta against another object that is not in the resulting pack but
>    is known to be present on the receiving end, the code learned to
>    take advantage of the reachability bitmap; this allows the server
>    to send a delta against a base beyond the "boundary" commit.
> 
>  * spatch transformation to replace boolean uses of !hashcmp() to
>    newly introduced oideq() is added, and applied, to regain
>    performance lost due to support of multiple hash algorithms.
> 
>  * Fix a bug in which the same path could be registered under multiple
>    worktree entries if the path was missing (for instance, was removed
>    manually).  Also, as a convenience, expand the number of cases in
>    which --force is applicable.
> 
>  * Split Documentation/config.txt for easier maintenance.
>    (merge 6014363f0b nd/config-split later to maint).
> 
>  * Test helper binaries clean-up.
>    (merge c9a1f4161f nd/test-tool later to maint).
> 
>  * Various tests have been updated to make it easier to swap the
>    hash function used for object identification.
>    (merge ae0c89d41b bc/hash-independent-tests later to maint).
> 
>  * Update fsck.skipList implementation and documentation.
>    (merge 371a655074 ab/fsck-skiplist later to maint).
> 
>  * An alias that expands to another alias has so far been forbidden,
>    but now it is allowed to create such an alias.
> 
>  * Various test scripts have been updated for style and also correct
>    handling of exit status of various commands.
> 
>  * "gc --auto" ended up calling exit(-1) upon error, which has been
>    corrected to use exit(1).  Also the error reporting behaviour when
>    daemonized has been updated to exit with zero status when stopping
>    due to a previously discovered error (which implies there is no
>    point running gc to improve the situation); we used to exit with
>    failure in such a case.
> 
>  * Various codepaths in the core-ish part learned to work on an
>    arbitrary in-core index structure, not necessarily the default
>    instance "the_index".
>    (merge b3c7eef9b0 nd/the-index later to maint).
> 
>  * Code clean-up in the internal machinery used by "git status" and
>    "git commit --dry-run".
>    (merge 73ba5d78b4 ss/wt-status-committable later to maint).
> 
>  * Some environment variables that control the runtime options of Git
>    used during tests are getting renamed for consistency.
>    (merge 4231d1ba99 bp/rename-test-env-var later to maint).
> 
>  * A pair of new extensions to the index file have been introduced.
>    They allow the index file to be read in parallel for performance.
> 
>  * The oidset API was built on top of the oidmap API which in turn is
>    on the hashmap API.  Replace the implementation to build on top of
>    the khash API and gain performance.
> 
>  * Over some transports, fetching objects with an exact commit object
>    name can be done without first seeing the ref advertisements.  The
>    code has been optimized to exploit this.
> 
>  * In a partial clone that will lazily be hydrated from the
>    originating repository, we generally want to avoid "does this
>    object exist (locally)?" on objects that we deliberately omitted
>    when we created the clone.  The cache-tree codepath (which is used
>    to write a tree object out of the index) however insisted that the
>    object exists, even for paths that are outside of the partial
>    checkout area.  The code has been updated to avoid such a check.
> 
>  * To help developers, an EditorConfig file that attempts to follow
>    the project convention has been added.
>    (merge b548d698a0 bc/editorconfig later to maint).
> 
>  * The result of coverage test can be combined with "git blame" to
>    check the test coverage of code introduced recently with a new
>    'coverage-diff' tool (in contrib/).
>    (merge 783faedd65 ds/coverage-diff later to maint).
> 
>  * An experiment to fuzz test a few areas, hopefully we can gain more
>    coverage to various areas.
> 
>  * More codepaths are moving away from hardcoded hash sizes.
> 
>  * The way the Windows port figures out the current directory has been
>    improved.
> 
>  * The way DLLs are loaded on the Windows port has been improved.
> 
>  * Some tests have been reorganized and renamed; "ls t/" now gives a
>    better overview of what is tested for these scripts than before.
> 
>  * "git rebase" and "git rebase -i" have been reimplemented in C.
> 
>  * Windows port learned to use nano-second resolution file timestamps.
> 
>  * The overly large Documentation/config.txt file have been split into
>    million little pieces.  This potentially allows each individual piece
>    included into the manual page of the command it affects more easily.
> 
>  * Replace three string-list instances used as look-up tables in "git
>    fetch" with hashmaps.
> 
>  * Unify code to read the author-script used in "git am" and the
>    commands that use the sequencer machinery, e.g. "git rebase -i".
> 
>  * In preparation to the day when we can deprecate and remove the
>    "rebase -p", make sure we can skip and later remove tests for
>    it.
> 
>  * The history traversal used to implement the tag-following has been
>    optimized by introducing a new helper.
> 
>  * The helper function to refresh the cached stat information in the
>    in-core index has learned to perform the lstat() part of the
>    operation in parallel on multi-core platforms.
> 
>  * The code to traverse objects for reachability, used to decide what
>    objects are unreferenced and expendable, have been taught to also
>    consider per-worktree refs of other worktrees as starting points to
>    prevent data loss.
> 
>  * "git add" needs to internally run "diff-files" equivalent, and the
>    codepath learned the same optimization as "diff-files" has to run
>    lstat(2) in parallel to find which paths have been updated in the
>    working tree.
> 
>  * The procedure to install dependencies before testing at Travis CI
>    is getting revamped for both simplicity and flexibility, taking
>    advantage of the recent move to the vm-based environment.
> 
>  * The support for format-patch (and send-email) by the command-line
>    completion script (in contrib/) has been simplified a bit.
> 
>  * The revision walker machinery learned to take advantage of the
>    commit generation numbers stored in the commit-graph file.
> 
>  * The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
> 
>  * The way -lcurl library gets linked has been simplified by taking
>    advantage of the fact that we can just ask curl-config command how.
> 
>  * Various functions have been audited for "-Wunused-parameter" warnings
>    and bugs in them got fixed.
> 
>  * A sanity check for start-up sequence has been added in the config
>    API codepath.
> 
>  * The build procedure to link for fuzzing test has been made
>    customizable with a new Makefile variable.
> 
>  * The way "git rebase" parses and forwards the command line options
>    meant for underlying "git am" has been revamped, which fixed for
>    options with parameters that were not passed correctly.
> 
>  * Our testing framework uses a special i18n "poisoned localization"
>    feature to find messages that ought to stay constant but are
>    incorrectly marked to be translated.  This feature has been made
>    into a runtime option (it used to be a compile-time option).
> 
>  * "git push" used to check ambiguities between object-names and
>    refnames while processing the list of refs' old and new values,
>    which was unnecessary (as it knew that it is feeding raw object
>    names).  This has been optimized out.
> 
>  * The xcurl_off_t() helper function is used to cast size_t to
>    curl_off_t, but some compilers gave warnings against the code to
>    ensure the casting is done without wraparound, when size_t is
>    narrower than curl_off_t.  This warning has been squelched.
> 
>  * Code preparation to replace ulong vars with size_t vars where
>    appropriate continues.
> 
>  * The "test installed Git" mode of our test suite has been updated to
>    work better.
> 
>  * A coding convention around the Coccinelle semantic patches to have
>    two classes to ease code migration process has been proposed and
>    its support has been added to the Makefile.
> 
> 
> Fixes since v2.19
> -----------------
> 
>  * "git interpret-trailers" and its underlying machinery had a buggy
>    code that attempted to ignore patch text after commit log message,
>    which triggered in various codepaths that will always get the log
>    message alone and never get such an input.
>    (merge 66e83d9b41 jk/trailer-fixes later to maint).
> 
>  * Malformed or crafted data in packstream can make our code attempt
>    to read or write past the allocated buffer and abort, instead of
>    reporting an error, which has been fixed.
> 
>  * "git rebase -i" did not clear the state files correctly when a run
>    of "squash/fixup" is aborted and then the user manually amended the
>    commit instead, which has been corrected.
>    (merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
> 
>  * When fsmonitor is in use, after operation on submodules updates
>    .gitmodules, we lost track of the fact that we did so and relied on
>    stale fsmonitor data.
>    (merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
> 
>  * Fix for a long-standing bug that leaves the index file corrupt when
>    it shrinks during a partial commit.
>    (merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
> 
>  * Further fix for O_APPEND emulation on Windows
>    (merge eeaf7ddac7 js/mingw-o-append later to maint).
> 
>  * A corner case bugfix in "git rerere" code.
>    (merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
> 
>  * "git add ':(attr:foo)'" is not supported and is supposed to be
>    rejected while the command line arguments are parsed, but we fail
>    to reject such a command line upfront.
>    (merge 84d938b732 nd/attr-pathspec-fix later to maint).
> 
>  * Recent update broke the reachability algorithm when refs (e.g.
>    tags) that point at objects that are not commit were involved,
>    which has been fixed.
> 
>  * "git rebase" etc. in Git 2.19 fails to abort when given an empty
>    commit log message as result of editing, which has been corrected.
>    (merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
> 
>  * The code to backfill objects in lazily cloned repository did not
>    work correctly, which has been corrected.
>    (merge e68302011c jt/lazy-object-fetch-fix later to maint).
> 
>  * Update error messages given by "git remote" and make them consistent.
>    (merge 5025425dff ms/remote-error-message-update later to maint).
> 
>  * "git update-ref" learned to make both "--no-deref" and "--stdin"
>    work at the same time.
>    (merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
> 
>  * Recently added "range-diff" had a corner-case bug to cause it
>    segfault, which has been corrected.
>    (merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
> 
>  * The recently introduced commit-graph auxiliary data is incompatible
>    with mechanisms such as replace & grafts that "breaks" immutable
>    nature of the object reference relationship.  Disable optimizations
>    based on its use (and updating existing commit-graph) when these
>    incompatible features are in use in the repository.
>    (merge 829a321569 ds/commit-graph-with-grafts later to maint).
> 
>  * The mailmap file update.
>    (merge 255eb03edf jn/mailmap-update later to maint).
> 
>  * The code in "git status" sometimes hit an assertion failure.  This
>    was caused by a structure that was reused without cleaning the data
>    used for the first run, which has been corrected.
>    (merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
> 
>  * "git fetch $repo $object" in a partial clone did not correctly
>    fetch the asked-for object that is referenced by an object in
>    promisor packfile, which has been fixed.
> 
>  * A corner-case bugfix.
>    (merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
> 
>  * Various fixes to "diff --color-moved-ws".
> 
>  * A partial clone that is configured to lazily fetch missing objects
>    will on-demand issue a "git fetch" request to the originating
>    repository to fill not-yet-obtained objects.  The request has been
>    optimized for requesting a tree object (and not the leaf blob
>    objects contained in it) by telling the originating repository that
>    no blobs are needed.
>    (merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
> 
>  * The codepath to support the experimental split-index mode had
>    remaining "racily clean" issues fixed.
>    (merge 4c490f3d32 sg/split-index-racefix later to maint).
> 
>  * "git log --graph" showing an octopus merge sometimes miscounted the
>    number of display columns it is consuming to show the merge and its
>    parent commits, which has been corrected.
>    (merge 04005834ed np/log-graph-octopus-fix later to maint).
> 
>  * "git range-diff" did not work well when the compared ranges had
>    changes in submodules and the "--submodule=log" was used.
> 
>  * The implementation of run_command() API on the UNIX platforms had a
>    bug that caused a command not on $PATH to be found in the current
>    directory.
>    (merge f67b980771 jk/run-command-notdot later to maint).
> 
>  * A mutex used in "git pack-objects" were not correctly initialized
>    and this caused "git repack" to dump core on Windows.
>    (merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
> 
>  * Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
>    Windows would strip initial parts from the paths because they
>    were not recognized as absolute, which has been corrected.
>    (merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
> 
>  * The receive.denyCurrentBranch=updateInstead codepath kicked in even
>    when the push should have been rejected due to other reasons, such
>    as it does not fast-forward or the update-hook rejects it, which
>    has been corrected.
>    (merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
> 
>  * The logic to determine the archive type "git archive" uses did not
>    correctly kick in for "git archive --remote", which has been
>    corrected.
> 
>  * "git repack" in a shallow clone did not correctly update the
>    shallow points in the repository, leading to a repository that
>    does not pass fsck.
>    (merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
> 
>  * Some codepaths failed to form a proper URL when .gitmodules record
>    the URL to a submodule repository as relative to the repository of
>    superproject, which has been corrected.
>    (merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
> 
>  * "git fetch" over protocol v2 into a shallow repository failed to
>    fetch full history behind a new tip of history that was diverged
>    before the cut-off point of the history that was previously fetched
>    shallowly.
> 
>  * The command line completion machinery (in contrib/) has been
>    updated to allow the completion script to tweak the list of options
>    that are reported by the parse-options machinery correctly.
>    (merge 276b49ff34 nd/completion-negation later to maint).
> 
>  * Operations on promisor objects make sense in the context of only a
>    small subset of the commands that internally use the revisions
>    machinery, but the "--exclude-promisor-objects" option were taken
>    and led to nonsense results by commands like "log", to which it
>    didn't make much sense.  This has been corrected.
>    (merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
> 
>  * The "container" mode of TravisCI is going away.  Our .travis.yml
>    file is getting prepared for the transition.
>    (merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
> 
>  * Our test scripts can now take the '-V' option as a synonym for the
>    '--verbose-log' option.
>    (merge a5f52c6dab sg/test-verbose-log later to maint).
> 
>  * A regression in Git 2.12 era made "git fsck" fall into an infinite
>    loop while processing truncated loose objects.
>    (merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
> 
>  * "git ls-remote $there foo" was broken by recent update for the
>    protocol v2 and stopped showing refs that match 'foo' that are not
>    refs/{heads,tags}/foo, which has been fixed.
>    (merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
> 
>  * Additional comment on a tricky piece of code to help developers.
>    (merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
> 
>  * A couple of tests used to leave the repository in a state that is
>    deliberately corrupt, which have been corrected.
>    (merge aa984dbe5e ab/pack-tests-cleanup later to maint).
> 
>  * The submodule support has been updated to read from the blob at
>    HEAD:.gitmodules when the .gitmodules file is missing from the
>    working tree.
>    (merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
> 
>  * "git fetch" was a bit loose in parsing responses from the other side
>    when talking over the protocol v2.
> 
>  * "git rev-parse --exclude=* --branches --branches"  (i.e. first
>    saying "add only things that do not match '*' out of all branches"
>    and then adding all branches, without any exclusion this time")
>    worked as expected, but "--exclude=* --all --all" did not work the
>    same way, which has been fixed.
>    (merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
> 
>  * "git send-email --transfer-encoding=..." in recent versions of Git
>    sometimes produced an empty "Content-Transfer-Encoding:" header,
>    which has been corrected.
>    (merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
> 
>  * The interface into "xdiff" library used to discover the offset and
>    size of a generated patch hunk by first formatting it into the
>    textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
>    out.  A new interface has been introduced to allow callers a more
>    direct access to them.
>    (merge 5eade0746e jk/xdiff-interface later to maint).
> 
>  * Pathspec matching against a tree object were buggy when negative
>    pathspec elements were involved, which has been fixed.
>    (merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
> 
>  * "git merge" and "git pull" that merges into an unborn branch used
>    to completely ignore "--verify-signatures", which has been
>    corrected.
>    (merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
> 
>  * "git rebase --autostash" did not correctly re-attach the HEAD at times.
> 
>  * "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
>    quite work, which has been corrected.
>    (merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
> 
>  * When editing a patch in a "git add -i" session, a hunk could be
>    made to no-op.  The "git apply" program used to reject a patch with
>    such a no-op hunk to catch user mistakes, but it is now updated to
>    explicitly allow a no-op hunk in an edited patch.
>    (merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
> 
>  * The URL to an MSDN page in a comment has been updated.
>    (merge 2ef2ae2917 js/mingw-msdn-url later to maint).
> 
>  * "git ls-remote --sort=<thing>" can feed an object that is not yet
>    available into the comparison machinery and segfault, which has
>    been corrected to check such a request upfront and reject it.
> 
>  * When "git bundle" aborts due to an empty commit ranges
>    (i.e. resulting in an empty pack), it left a file descriptor to an
>    lockfile open, which resulted in leftover lockfile on Windows where
>    you cannot remove a file with an open file descriptor.  This has
>    been corrected.
>    (merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
> 
>  * "git format-patch --stat=<width>" can be used to specify the width
>    used by the diffstat (shown in the cover letter).
>    (merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint).
> 
>  * The way .git/index and .git/sharedindex* files were initially
>    created gave these files different perm bits until they were
>    adjusted for shared repository settings.  This was made consistent.
>    (merge c9d6c78870 cc/shared-index-permbits later to maint).
> 
>  * "git rebase --stat" to transplant a piece of history onto a totally
>    unrelated history were not working before and silently showed wrong
>    result.  With the recent reimplementation in C, it started to instead
>    die with an error message, as the original logic was not prepared
>    to cope with this case.  This has now been fixed.
> 
>  * The advice message to tell the user to migrate an existing graft
>    file to the replace system when a graft file was read was shown
>    even when "git replace --convert-graft-file" command, which is the
>    way the message suggests to use, was running, which made little
>    sense.
>    (merge 8821e90a09 ab/replace-graft-with-replace-advice later to maint).
> 
>  * "git diff --raw" lost ellipses to adjust the output columns for
>    some time now, but the documentation still showed them.
> 
>  * Code cleanup, docfix, build fix, etc.
>    (merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
>    (merge b9b07efdb2 tg/conflict-marker-size later to maint).
>    (merge fa0aeea770 sg/doc-trace-appends later to maint).
>    (merge d64324cb60 tb/void-check-attr later to maint).
>    (merge c3b9bc94b9 en/double-semicolon-fix later to maint).
>    (merge 79336116f5 sg/t3701-tighten-trace later to maint).
>    (merge 801fa63a90 jk/dev-build-format-security later to maint).
>    (merge 0597dd62ba sb/string-list-remove-unused later to maint).
>    (merge db2d36fad8 bw/protocol-v2 later to maint).
>    (merge 456d7cd3a9 sg/split-index-test later to maint).
>    (merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
>    (merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
>    (merge 55f6bce2c9 fe/doc-updates later to maint).
>    (merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
>    (merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
>    (merge 4c399442f7 ma/commit-graph-docs later to maint).
>    (merge fc0503b04e ma/t1400-undebug-test later to maint).
>    (merge e56b53553a nd/packobjectshook-doc-fix later to maint).
>    (merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
>    (merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
>    (merge ad0b8f9575 mw/doc-typofixes later to maint).
>    (merge d9f079ad1a jc/how-to-document-api later to maint).
>    (merge b1492bf315 ma/t7005-bash-workaround later to maint).
>    (merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
>    (merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
>    (merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
>    (merge 61018fe9e0 du/cherry-is-plumbing later to maint).
>    (merge c7e5fe79b9 sb/strbuf-h-update later to maint).
>    (merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
>    (merge 2e3c894f4b tq/branch-style-fix later to maint).
>    (merge c5d844af9c sg/doc-show-branch-typofix later to maint).
>    (merge 081d91618b ah/doc-updates later to maint).
>    (merge b84c783882 jc/cocci-preincr later to maint).
>    (merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
>    (merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
>    (merge 3063477445 tb/char-may-be-unsigned later to maint).
>    (merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
>    (merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
>    (merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
>    (merge 3006f5ee16 ma/reset-doc-rendering-fix later to maint).
>    (merge 4c2eb06419 sg/daemon-test-signal-fix later to maint).
>    (merge d27525e519 ss/msvc-strcasecmp later to maint).
> 
> ----------------------------------------------------------------
> 
> Changes since v2.19.0 are as follows:
> 
> Aaron Lindsay (1):
>       send-email: avoid empty transfer encoding header
> 
> Alban Gruin (21):
>       sequencer: make three functions and an enum from sequencer.c public
>       rebase -i: rewrite append_todo_help() in C
>       editor: add a function to launch the sequence editor
>       rebase -i: rewrite the edit-todo functionality in C
>       sequencer: add a new function to silence a command, except if it fails
>       rebase -i: rewrite setup_reflog_action() in C
>       rebase -i: rewrite checkout_onto() in C
>       sequencer: refactor append_todo_help() to write its message to a buffer
>       sequencer: change the way skip_unnecessary_picks() returns its result
>       t3404: todo list with commented-out commands only aborts
>       rebase -i: rewrite complete_action() in C
>       rebase -i: remove unused modes and functions
>       rebase -i: implement the logic to initialize $revisions in C
>       rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
>       rebase -i: rewrite write_basic_state() in C
>       rebase -i: rewrite init_basic_state() in C
>       rebase -i: implement the main part of interactive rebase as a builtin
>       rebase--interactive2: rewrite the submodes of interactive rebase in C
>       rebase -i: remove git-rebase--interactive.sh
>       rebase -i: move rebase--helper modes to rebase--interactive
>       p3400: replace calls to `git checkout -b' by `git checkout -B'
> 
> Alexander Pyhalov (1):
>       t7005-editor: quote filename to fix whitespace-issue
> 
> Andreas Gruenbacher (1):
>       rev-parse: clear --exclude list after 'git rev-parse --all'
> 
> Andreas Heiduk (6):
>       doc: clarify boundaries of 'git worktree list --porcelain'
>       doc: fix ASCII art tab spacing
>       doc: fix inappropriate monospace formatting
>       doc: fix descripion for 'git tag --format'
>       doc: fix indentation of listing blocks in gitweb.conf.txt
>       doc: fix formatting in git-update-ref
> 
> Anton Serbulov (1):
>       mingw: fix getcwd when the parent directory cannot be queried
> 
> Antonio Ospite (10):
>       submodule: add a print_config_from_gitmodules() helper
>       submodule: factor out a config_set_in_gitmodules_file_gently function
>       t7411: merge tests 5 and 6
>       t7411: be nicer to future tests and really clean things up
>       submodule--helper: add a new 'config' subcommand
>       submodule: use the 'submodule--helper config' command
>       t7506: clean up .gitmodules properly before setting up new scenario
>       submodule: add a helper to check if it is safe to write to .gitmodules
>       submodule: support reading .gitmodules when it's not in the working tree
>       t/helper: add test-submodule-nested-repo-config
> 
> Ben Peart (19):
>       checkout: optimize "git checkout -b <new_branch>"
>       git-mv: allow submodules and fsmonitor to work together
>       t/README: correct spelling of "uncommon"
>       preload-index: use git_env_bool() not getenv() for customization
>       fsmonitor: update GIT_TEST_FSMONITOR support
>       read-cache: update TEST_GIT_INDEX_VERSION support
>       preload-index: update GIT_FORCE_PRELOAD_TEST support
>       read-cache: clean up casting and byte decoding
>       eoie: add End of Index Entry (EOIE) extension
>       config: add new index.threads config setting
>       read-cache: load cache extensions on a worker thread
>       ieot: add Index Entry Offset Table (IEOT) extension
>       read-cache: load cache entries on worker threads
>       reset: don't compute unstaged changes after reset when --quiet
>       reset: add new reset.quiet config setting
>       reset: warn when refresh_index() takes more than 2 seconds
>       speed up refresh_index() by utilizing preload_index()
>       add: speed up cmd_add() by utilizing read_cache_preload()
>       refresh_index: remove unnecessary calls to preload_index()
> 
> Brandon Williams (1):
>       config: document value 2 for protocol.version
> 
> Brendan Forster (1):
>       http: add support for disabling SSL revocation checks in cURL
> 
> Carlo Marcelo Arenas Belón (8):
>       unpack-trees: avoid dead store for struct progress
>       multi-pack-index: avoid dead store for struct progress
>       read-cache: use of memory after it is freed
>       commit-slabs: move MAYBE_UNUSED out
>       khash: silence -Wunused-function for delta-islands
>       compat: make sure git_mmap is not expected to write
>       sequencer: cleanup for gcc warning in non developer mode
>       builtin/notes: remove unnecessary free
> 
> Christian Couder (3):
>       pack-objects: refactor code into compute_layer_order()
>       pack-objects: move tree_depth into 'struct packing_data'
>       pack-objects: move 'layer' into 'struct packing_data'
> 
> Christian Hesse (2):
>       subtree: add build targets 'man' and 'html'
>       subtree: make install targets depend on build targets
> 
> Daniels Umanovskis (3):
>       doc: move git-rev-parse from porcelain to plumbing
>       doc: move git-get-tar-commit-id to plumbing
>       doc: move git-cherry to plumbing
> 
> David Zych (1):
>       doc: clarify gitcredentials path component matching
> 
> Denton Liu (3):
>       mergetool: accept -g/--[no-]gui as arguments
>       completion: support `git mergetool --[no-]gui`
>       doc: document diff/merge.guitool config keys
> 
> Derrick Stolee (93):
>       multi-pack-index: add design document
>       multi-pack-index: add format details
>       multi-pack-index: add builtin
>       multi-pack-index: add 'write' verb
>       midx: write header information to lockfile
>       multi-pack-index: load into memory
>       t5319: expand test data
>       packfile: generalize pack directory list
>       multi-pack-index: read packfile list
>       multi-pack-index: write pack names in chunk
>       midx: read pack names into array
>       midx: sort and deduplicate objects from packfiles
>       midx: write object ids in a chunk
>       midx: write object id fanout chunk
>       midx: write object offsets
>       config: create core.multiPackIndex setting
>       midx: read objects from multi-pack-index
>       midx: use midx in abbreviation calculations
>       midx: use existing midx when writing new one
>       midx: use midx in approximate_object_count
>       midx: prevent duplicate packfile loads
>       packfile: skip loading index if in multi-pack-index
>       midx: clear midx on repack
>       commit-reach: move walk methods from commit.c
>       commit.h: remove method declarations
>       commit-reach: move ref_newer from remote.c
>       commit-reach: move commit_contains from ref-filter
>       upload-pack: make reachable() more generic
>       upload-pack: refactor ok_to_give_up()
>       upload-pack: generalize commit date cutoff
>       commit-reach: move can_all_from_reach_with_flags
>       test-reach: create new test tool for ref_newer
>       test-reach: test in_merge_bases
>       test-reach: test is_descendant_of
>       test-reach: test get_merge_bases_many
>       test-reach: test reduce_heads
>       test-reach: test can_all_from_reach_with_flags
>       test-reach: test commit_contains
>       commit-reach: replace ref_newer logic
>       commit-reach: make can_all_from_reach... linear
>       commit-reach: use can_all_from_reach
>       multi-pack-index: provide more helpful usage info
>       multi-pack-index: store local property
>       midx: mark bad packed objects
>       midx: stop reporting garbage
>       midx: fix bug that skips midx with alternates
>       packfile: add all_packs list
>       treewide: use get_all_packs
>       midx: test a few commands that use get_all_packs
>       pack-objects: consider packs in multi-pack-index
>       commit-graph: update design document
>       test-repository: properly init repo
>       commit-graph: not compatible with replace objects
>       commit-graph: not compatible with grafts
>       commit-graph: not compatible with uninitialized repo
>       commit-graph: close_commit_graph before shallow walk
>       commit-graph: define GIT_TEST_COMMIT_GRAPH
>       t3206-range-diff.sh: cover single-patch case
>       t5318: use test_oid for HASH_LEN
>       multi-pack-index: add 'verify' verb
>       multi-pack-index: verify bad header
>       multi-pack-index: verify corrupt chunk lookup table
>       multi-pack-index: verify packname order
>       multi-pack-index: verify missing pack
>       multi-pack-index: verify oid fanout order
>       multi-pack-index: verify oid lookup order
>       multi-pack-index: fix 32-bit vs 64-bit size check
>       multi-pack-index: verify object offsets
>       multi-pack-index: report progress during 'verify'
>       fsck: verify multi-pack-index
>       commit-reach: properly peel tags
>       commit-reach: fix memory and flag leaks
>       commit-reach: cleanups in can_all_from_reach...
>       commit-graph: clean up leaked memory during write
>       commit-graph: reduce initial oid allocation
>       midx: fix broken free() in close_midx()
>       contrib: add coverage-diff script
>       ci: add optional test variables
>       commit-reach: fix first-parent heuristic
>       midx: close multi-pack-index on repack
>       multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
>       packfile: close multi-pack-index in close_all_packs
>       prio-queue: add 'peek' operation
>       test-reach: add run_three_modes method
>       test-reach: add rev-list tests
>       revision.c: begin refactoring --topo-order logic
>       commit/revisions: bookkeeping before refactoring
>       revision.c: generation-based topo-order algorithm
>       t6012: make rev-list tests more interesting
>       commit-reach: implement get_reachable_subset
>       test-reach: test get_reachable_subset
>       remote: make add_missing_tags() linear
>       pack-objects: ignore ambiguous object warnings
> 
> Elijah Newren (14):
>       Remove superfluous trailing semicolons
>       t4200: demonstrate rerere segfault on specially crafted merge
>       rerere: avoid buffer overrun
>       update-ref: fix type of update_flags variable to match its usage
>       update-ref: allow --no-deref with --stdin
>       sequencer: fix --allow-empty-message behavior, make it smarter
>       merge-recursive: set paths correctly when three-way merging content
>       merge-recursive: avoid wrapper function when unnecessary and wasteful
>       merge-recursive: remove final remaining caller of merge_file_one()
>       merge-recursive: rename merge_file_1() and merge_content()
>       commit: fix erroneous BUG, 'multiple renames on the same target? how?'
>       merge-recursive: improve auto-merging messages with path collisions
>       merge-recursive: avoid showing conflicts with merge branch before HEAD
>       fsck: move fsck_head_link() to get_default_heads() to avoid some globals
> 
> Eric Sunshine (26):
>       format-patch: allow additional generated content in make_cover_letter()
>       format-patch: add --interdiff option to embed diff in cover letter
>       format-patch: teach --interdiff to respect -v/--reroll-count
>       interdiff: teach show_interdiff() to indent interdiff
>       log-tree: show_log: make commentary block delimiting reusable
>       format-patch: allow --interdiff to apply to a lone-patch
>       range-diff: respect diff_option.file rather than assuming 'stdout'
>       range-diff: publish default creation factor
>       range-diff: relieve callers of low-level configuration burden
>       format-patch: add --range-diff option to embed diff in cover letter
>       format-patch: extend --range-diff to accept revision range
>       format-patch: teach --range-diff to respect -v/--reroll-count
>       format-patch: add --creation-factor tweak for --range-diff
>       format-patch: allow --range-diff to apply to a lone-patch
>       worktree: don't die() in library function find_worktree()
>       worktree: move delete_git_dir() earlier in file for upcoming new callers
>       worktree: generalize delete_git_dir() to reduce code duplication
>       worktree: prepare for more checks of whether path can become worktree
>       worktree: disallow adding same path multiple times
>       worktree: teach 'add' to respect --force for registered but missing path
>       worktree: teach 'move' to override lock when --force given twice
>       worktree: teach 'remove' to override lock when --force given twice
>       worktree: delete .git/worktrees if empty after 'remove'
>       doc-diff: fix non-portable 'man' invocation
>       doc-diff: add --clean mode to remove temporary working gunk
>       doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
> 
> Frederick Eaton (3):
>       git-archimport.1: specify what kind of Arch we're talking about
>       git-column.1: clarify initial description, provide examples
>       git-describe.1: clarify that "human readable" is also git-readable
> 
> Greg Hurrell (1):
>       doc: update diff-format.txt for removed ellipses in --raw
> 
> James Knight (1):
>       build: link with curl-defined linker flags
> 
> Jann Horn (2):
>       patch-delta: fix oob read
>       patch-delta: consistently report corruption
> 
> Jean-Noël Avila (1):
>       i18n: fix small typos
> 
> Jeff Hostetler (2):
>       t0051: test GIT_TRACE to a windows named pipe
>       mingw: fix mingw_open_append to work with named pipes
> 
> Jeff King (98):
>       branch: make "-l" a synonym for "--list"
>       Add delta-islands.{c,h}
>       pack-objects: add delta-islands support
>       repack: add delta-islands support
>       t5320: tests for delta islands
>       t/perf: factor boilerplate out of test_perf
>       t/perf: factor out percent calculations
>       t/perf: add infrastructure for measuring sizes
>       t/perf: add perf tests for fetches from a bitmapped server
>       pack-bitmap: save "have" bitmap from walk
>       pack-objects: reuse on-disk deltas for thin "have" objects
>       SubmittingPatches: mention doc-diff
>       rev-list: make empty --stdin not an error
>       trailer: use size_t for string offsets
>       trailer: use size_t for iterating trailer list
>       trailer: pass process_trailer_opts to trailer_info_get()
>       interpret-trailers: tighten check for "---" patch boundary
>       interpret-trailers: allow suppressing "---" divider
>       pretty, ref-filter: format %(trailers) with no_divider option
>       sequencer: ignore "---" divider when parsing trailers
>       append_signoff: use size_t for string offsets
>       coccinelle: use <...> for function exclusion
>       introduce hasheq() and oideq()
>       convert "oidcmp() == 0" to oideq()
>       convert "hashcmp() == 0" to hasheq()
>       convert "oidcmp() != 0" to "!oideq()"
>       convert "hashcmp() != 0" to "!hasheq()"
>       convert hashmap comparison functions to oideq()
>       read-cache: use oideq() in ce_compare functions
>       show_dirstat: simplify same-content check
>       doc-diff: always use oids inside worktree
>       test-delta: read input into a heap buffer
>       t5303: test some corrupt deltas
>       patch-delta: handle truncated copy parameters
>       t5303: use printf to generate delta bases
>       doc/git-branch: remove obsolete "-l" references
>       bitmap_has_sha1_in_uninteresting(): drop BUG check
>       t5310: test delta reuse with bitmaps
>       traverse_bitmap_commit_list(): don't free result
>       pack-bitmap: drop "loaded" flag
>       reopen_tempfile(): truncate opened file
>       doc-diff: force worktree add
>       config.mak.dev: add -Wformat-security
>       pack-objects: handle island check for "external" delta base
>       receive-pack: update comment with check_everything_connected
>       submodule--helper: use "--" to signal end of clone options
>       submodule-config: ban submodule urls that start with dash
>       submodule-config: ban submodule paths that start with a dash
>       fsck: detect submodule urls starting with dash
>       fsck: detect submodule paths starting with dash
>       more oideq/hasheq conversions
>       transport: drop refnames from for_each_alternate_ref
>       test-tool: show tool list on error
>       config.mak.dev: enable -Wunused-function
>       run-command: mark path lookup errors with ENOENT
>       t5410: use longer path for sample script
>       upload-pack: fix broken if/else chain in config callback
>       t1450: check large blob in trailing-garbage test
>       check_stream_sha1(): handle input underflow
>       cat-file: handle streaming failures consistently
>       ls-remote: do not send ref prefixes for patterns
>       ls-remote: pass heads/tags prefixes to transport
>       read_istream_pack_non_delta(): document input handling
>       xdiff: provide a separate emit callback for hunks
>       xdiff-interface: provide a separate consume callback for hunks
>       rev-list: handle flags for --indexed-objects
>       approxidate: handle pending number for "specials"
>       pathspec: handle non-terminated strings with :(attr)
>       diff: avoid generating unused hunk header lines
>       diff: discard hunk headers for patch-ids earlier
>       diff: use hunk callback for word-diff
>       combine-diff: use an xdiff hunk callback
>       diff: convert --check to use a hunk callback
>       range-diff: use a hunk callback
>       xdiff-interface: drop parse_hunk_header()
>       apply: mark include/exclude options as NONEG
>       am: handle --no-patch-format option
>       ls-files: mark exclude options as NONEG
>       pack-objects: mark index-version option as NONEG
>       cat-file: mark batch options with NONEG
>       status: mark --find-renames option with NONEG
>       format-patch: mark "--no-numbered" option with NONEG
>       show-branch: mark --reflog option as NONEG
>       tag: mark "--message" option with NONEG
>       cat-file: report an error on multiple --batch options
>       apply: return -1 from option callback instead of calling exit(1)
>       parse-options: drop OPT_DATE()
>       assert NOARG/NONEG behavior of parse-options callbacks
>       midx: double-check large object write loop
>       merge: extract verify_merge_signature() helper
>       merge: handle --verify-signatures for unborn branch
>       pull: handle --verify-signatures for unborn branch
>       approxidate: fix NULL dereference in date_time()
>       bundle: dup() output descriptor closer to point-of-use
>       pack-objects: fix tree_depth and layer invariants
>       pack-objects: zero-initialize tree_depth/layer arrays
>       pack-objects: fix off-by-one in delta-island tree-depth computation
>       t5562: fix perl path
> 
> Johannes Schindelin (64):
>       rebase -i --autosquash: demonstrate a problem skipping the last squash
>       rebase -i: be careful to wrap up fixup/squash chains
>       compat/poll: prepare for targeting Windows Vista
>       mingw: set _WIN32_WINNT explicitly for Git for Windows
>       mingw: bump the minimum Windows version to Vista
>       builtin rebase: prepare for builtin rebase -i
>       rebase -i: clarify what happens on a failed `exec`
>       rebase -i: introduce the 'break' command
>       getpwuid(mingw): initialize the structure only once
>       getpwuid(mingw): provide a better default for the user name
>       mingw: use domain information for default email
>       http: add support for selecting SSL backends at runtime
>       pack-objects: fix typo 'detla' -> 'delta'
>       pack-objects (mingw): demonstrate a segmentation fault with large deltas
>       pack-objects (mingw): initialize `packing_data` mutex in the correct spot
>       rebase (autostash): avoid duplicate call to state_dir_path()
>       rebase (autostash): store the full OID in <state-dir>/autostash
>       rebase (autostash): use an explicit OID to apply the stash
>       mingw: factor out code to set stat() data
>       rebase --autostash: demonstrate a problem with dirty submodules
>       rebase --autostash: fix issue with dirty submodules
>       mingw: load system libraries the recommended way
>       mingw: ensure `getcwd()` reports the correct case
>       repack: point out a bug handling stale shallow info
>       shallow: offer to prune only non-existing entries
>       repack -ad: prune the list of shallow commits
>       http: when using Secure Channel, ignore sslCAInfo by default
>       t7800: fix quoting
>       mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
>       config: rename `dummy` parameter to `cb` in git_default_config()
>       config: allow for platform-specific core.* config settings
>       config: move Windows-specific config settings into compat/mingw.c
>       mingw: unset PERL5LIB by default
>       mingw: fix isatty() after dup2()
>       t3404: decouple some test cases from outcomes of previous test cases
>       t3418: decouple test cases from a previous `rebase -p` test case
>       tests: optionally skip `git rebase -p` tests
>       Windows: force-recompile git.res for differing architectures
>       built-in rebase: demonstrate regression with --autostash
>       built-in rebase --autostash: leave the current branch alone if possible
>       Update .mailmap
>       rebase -r: demonstrate bug with conflicting merges
>       rebase -r: do not write MERGE_HEAD unless needed
>       rebase -i: include MERGE_HEAD into files to clean up
>       built-in rebase --skip/--abort: clean up stale .git/<name> files
>       status: rebase and merge can be in progress at the same time
>       apply --recount: allow "no-op hunks"
>       rebase: consolidate clean-up code before leaving reset_head()
>       rebase: prepare reset_head() for more flags
>       built-in rebase: reinstate `checkout -q` behavior where appropriate
>       tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/
>       tests: respect GIT_TEST_INSTALLED when initializing repositories
>       t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
>       mingw: use `CreateHardLink()` directly
>       rebase: really just passthru the `git am` options
>       rebase: validate -C<n> and --whitespace=<mode> parameters early
>       config: report a bug if git_dir exists without commondir
>       tests: do not require Git to be built when testing an installed Git
>       tests: explicitly use `git.exe` on Windows
>       mingw: replace an obsolete link with the superseding one
>       legacy-rebase: backport -C<n> and --whitespace=<option> checks
>       rebase: warn about the correct tree's OID
>       rebase: fix GIT_REFLOG_ACTION regression
>       rebase --stat: fix when rebasing to an unrelated history
> 
> Johannes Sixt (3):
>       diff: don't attempt to strip prefix from absolute Windows paths
>       rebase -i: recognize short commands without arguments
>       t3404-rebase-interactive: test abbreviated commands
> 
> Jonathan Nieder (9):
>       gc: improve handling of errors reading gc.log
>       gc: exit with status 128 on failure
>       gc: do not return error for prior errors in daemonized mode
>       commit-reach: correct accidental #include of C file
>       mailmap: consistently normalize brian m. carlson's name
>       git doc: direct bug reporters to mailing list archive
>       eoie: default to not writing EOIE section
>       ieot: default to not writing IEOT section
>       index: make index.threads=true enable ieot and eoie
> 
> Jonathan Tan (15):
>       fetch-object: unify fetch_object[s] functions
>       fetch-object: set exact_oid when fetching
>       connected: document connectivity in partial clones
>       fetch: in partial clone, check presence of targets
>       fetch-pack: avoid object flags if no_dependents
>       fetch-pack: exclude blobs when lazy-fetching trees
>       transport: allow skipping of ref listing
>       transport: do not list refs if possible
>       transport: list refs before fetch if necessary
>       fetch: do not list refs if fetching only hashes
>       cache-tree: skip some blob checks in partial clone
>       upload-pack: make have_obj not global
>       upload-pack: make want_obj not global
>       upload-pack: clear flags before each v2 request
>       fetch-pack: be more precise in parsing v2 response
> 
> Josh Steadmon (4):
>       fuzz: add basic fuzz testing target.
>       fuzz: add fuzz testing for packfile indices.
>       archive: initialize archivers earlier
>       Makefile: use FUZZ_CXXFLAGS for linking fuzzers
> 
> Joshua Watt (1):
>       send-email: explicitly disable authentication
> 
> Junio C Hamano (36):
>       Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
>       Initial batch post 2.19
>       Second batch post 2.19
>       Git 2.14.5
>       Git 2.15.3
>       Git 2.16.5
>       Git 2.17.2
>       Git 2.18.1
>       Git 2.19.1
>       t0000: do not get self-test disrupted by environment warnings
>       CodingGuidelines: document the API in *.h files
>       Declare that the next one will be named 2.20
>       Third batch for 2.20
>       rebase: fix typoes in error messages
>       Fourth batch for 2.20
>       Revert "subtree: make install targets depend on build targets"
>       Fifth batch for 2.20
>       receive: denyCurrentBranch=updateinstead should not blindly update
>       cocci: simplify "if (++u > 1)" to "if (u++)"
>       fsck: s/++i > 1/i++/
>       http: give curl version warnings consistently
>       Sixth batch for 2.20
>       Seventh batch for 2.20
>       fetch: replace string-list used as a look-up table with a hashmap
>       rebase: apply cocci patch
>       Eighth batch for 2.20
>       Ninth batch for 2.20
>       Makefile: ease dynamic-gettext-poison transition
>       Tenth batch for 2.20
>       Git 2.20-rc0
>       RelNotes: name the release properly
>       Prepare for 2.20-rc1
>       Git 2.19.2
>       Git 2.20-rc1
>       format-patch: do not let its diff-options affect --range-diff
>       Git 2.20-rc2
> 
> Karsten Blees (2):
>       mingw: replace MSVCRT's fstat() with a Win32-based implementation
>       mingw: implement nanosecond-precision file times
> 
> Loo Rong Jie (1):
>       win32: replace pthread_cond_*() with much simpler code
> 
> Lucas De Marchi (1):
>       range-diff: allow to diff files regardless of submodule config
> 
> Luke Diamand (3):
>       git-p4: do not fail in verbose mode for missing 'fileSize' key
>       git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
>       git-p4: fully support unshelving changelists
> 
> Martin Ågren (11):
>       Doc: use `--type=bool` instead of `--bool`
>       git-config.txt: fix 'see: above' note
>       git-commit-graph.txt: fix bullet lists
>       git-commit-graph.txt: typeset more in monospace
>       git-commit-graph.txt: refer to "*commit*-graph file"
>       Doc: refer to the "commit-graph file" with dash
>       t1400: drop debug `echo` to actually execute `test`
>       builtin/commit-graph.c: UNLEAK variables
>       sequencer: break out of loop explicitly
>       git-reset.txt: render tables correctly under Asciidoctor
>       git-reset.txt: render literal examples as monospace
> 
> Matthew DeVore (19):
>       list-objects: store common func args in struct
>       list-objects: refactor to process_tree_contents
>       list-objects: always parse trees gently
>       t/README: reformat Do, Don't, Keep in mind lists
>       Documentation: add shell guidelines
>       tests: standardize pipe placement
>       t/*: fix ordering of expected/observed arguments
>       tests: don't swallow Git errors upstream of pipes
>       t9109: don't swallow Git errors upstream of pipes
>       tests: order arguments to git-rev-list properly
>       rev-list: handle missing tree objects properly
>       revision: mark non-user-given objects instead
>       list-objects-filter: use BUG rather than die
>       list-objects-filter-options: do not over-strbuf_init
>       list-objects-filter: implement filter tree:0
>       filter-trees: code clean-up of tests
>       list-objects: support for skipping tree traversal
>       Documentation/git-log.txt: do not show --exclude-promisor-objects
>       exclude-promisor-objects: declare when option is allowed
> 
> Max Kirillov (1):
>       http-backend test: make empty CONTENT_LENGTH test more realistic
> 
> Michael Witten (3):
>       docs: typo: s/go/to/
>       docs: graph: remove unnecessary `graph_update()' call
>       docs: typo: s/isimilar/similar/
> 
> Michał Górny (6):
>       gpg-interface.c: detect and reject multiple signatures on commits
>       gpg-interface.c: use flags to determine key/signer info presence
>       gpg-interface.c: support getting key fingerprint via %GF format
>       gpg-interface.c: obtain primary key fingerprint as well
>       t/t7510-signed-commit.sh: Add %GP to custom format checks
>       t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
> 
> Mihir Mehta (1):
>       doc: fix a typo and clarify a sentence
> 
> Nguyễn Thái Ngọc Duy (170):
>       clone: report duplicate entries on case-insensitive filesystems
>       trace.h: support nested performance tracing
>       unpack-trees: add performance tracing
>       unpack-trees: optimize walking same trees with cache-tree
>       unpack-trees: reduce malloc in cache-tree walk
>       unpack-trees: reuse (still valid) cache-tree from src_index
>       unpack-trees: add missing cache invalidation
>       cache-tree: verify valid cache-tree in the test suite
>       Document update for nd/unpack-trees-with-cache-tree
>       bisect.c: make show_list() build again
>       t/helper: keep test-tool command list sorted
>       t/helper: merge test-dump-untracked-cache into test-tool
>       t/helper: merge test-pkt-line into test-tool
>       t/helper: merge test-parse-options into test-tool
>       t/helper: merge test-dump-fsmonitor into test-tool
>       Makefile: add a hint about TEST_BUILTINS_OBJS
>       config.txt: follow camelCase naming
>       config.txt: move fetch part out to a separate file
>       config.txt: move format part out to a separate file
>       config.txt: move gitcvs part out to a separate file
>       config.txt: move gui part out to a separate file
>       config.txt: move pull part out to a separate file
>       config.txt: move push part out to a separate file
>       config.txt: move receive part out to a separate file
>       config.txt: move sendemail part out to a separate file
>       config.txt: move sequence.editor out of "core" part
>       config.txt: move submodule part out to a separate file
>       archive.c: remove implicit dependency the_repository
>       status: show progress bar if refreshing the index takes too long
>       add: do not accept pathspec magic 'attr'
>       completion: support "git fetch --multiple"
>       read-cache.c: remove 'const' from index_has_changes()
>       diff.c: reduce implicit dependency on the_index
>       combine-diff.c: remove implicit dependency on the_index
>       blame.c: rename "repo" argument to "r"
>       diff.c: remove the_index dependency in textconv() functions
>       grep.c: remove implicit dependency on the_index
>       diff.c: remove implicit dependency on the_index
>       read-cache.c: remove implicit dependency on the_index
>       diff-lib.c: remove implicit dependency on the_index
>       ll-merge.c: remove implicit dependency on the_index
>       merge-blobs.c: remove implicit dependency on the_index
>       merge.c: remove implicit dependency on the_index
>       patch-ids.c: remove implicit dependency on the_index
>       sha1-file.c: remove implicit dependency on the_index
>       rerere.c: remove implicit dependency on the_index
>       userdiff.c: remove implicit dependency on the_index
>       line-range.c: remove implicit dependency on the_index
>       submodule.c: remove implicit dependency on the_index
>       tree-diff.c: remove implicit dependency on the_index
>       ws.c: remove implicit dependency on the_index
>       revision.c: remove implicit dependency on the_index
>       revision.c: reduce implicit dependency the_repository
>       read-cache.c: optimize reading index format v4
>       config.txt: correct the note about uploadpack.packObjectsHook
>       help -a: improve and make --verbose default
>       refs.c: indent with tabs, not spaces
>       Add a place for (not) sharing stuff between worktrees
>       submodule.c: remove some of the_repository references
>       completion: fix __gitcomp_builtin no longer consider extra options
>       t1300: extract and use test_cmp_config()
>       worktree: add per-worktree config files
>       refs: new ref types to make per-worktree refs visible to all worktrees
>       revision.c: correct a parameter name
>       revision.c: better error reporting on ref from different worktrees
>       fsck: check HEAD and reflog from other worktrees
>       reflog expire: cover reflog from all worktrees
>       Update makefile in preparation for Documentation/config/*.txt
>       config.txt: move advice.* to a separate file
>       config.txt: move core.* to a separate file
>       config.txt: move add.* to a separate file
>       config.txt: move alias.* to a separate file
>       config.txt: move am.* to a separate file
>       config.txt: move apply.* to a separate file
>       config.txt: move blame.* to a separate file
>       config.txt: move branch.* to a separate file
>       config.txt: move browser.* to a separate file
>       config.txt: move checkout.* to a separate file
>       config.txt: move clean.* to a separate file
>       config.txt: move color.* to a separate file
>       config.txt: move column.* to a separate file
>       config.txt: move commit.* to a separate file
>       config.txt: move credential.* to a separate file
>       config.txt: move completion.* to a separate file
>       config.txt: move diff-config.txt to config/
>       config.txt: move difftool.* to a separate file
>       config.txt: move fastimport.* to a separate file
>       config.txt: move fetch-config.txt to config/
>       config.txt: move filter.* to a separate file
>       config.txt: move format-config.txt to config/
>       config.txt: move fmt-merge-msg-config.txt to config/
>       config.txt: move fsck.* to a separate file
>       config.txt: move gc.* to a separate file
>       config.txt: move gitcvs-config.txt to config/
>       config.txt: move gitweb.* to a separate file
>       config.txt: move grep.* to a separate file
>       config.txt: move gpg.* to a separate file
>       config.txt: move gui-config.txt to config/
>       config.txt: move guitool.* to a separate file
>       config.txt: move help.* to a separate file
>       config.txt: move ssh.* to a separate file
>       config.txt: move http.* to a separate file
>       config.txt: move i18n.* to a separate file
>       git-imap-send.txt: move imap.* to a separate file
>       config.txt: move index.* to a separate file
>       config.txt: move init.* to a separate file
>       config.txt: move instaweb.* to a separate file
>       config.txt: move interactive.* to a separate file
>       config.txt: move log.* to a separate file
>       config.txt: move mailinfo.* to a separate file
>       config.txt: move mailmap.* to a separate file
>       config.txt: move man.* to a separate file
>       config.txt: move merge-config.txt to config/
>       config.txt: move mergetool.* to a separate file
>       config.txt: move notes.* to a separate file
>       config.txt: move pack.* to a separate file
>       config.txt: move pager.* to a separate file
>       config.txt: move pretty.* to a separate file
>       config.txt: move protocol.* to a separate file
>       config.txt: move pull-config.txt to config/
>       config.txt: move push-config.txt to config/
>       config.txt: move rebase-config.txt to config/
>       config.txt: move receive-config.txt to config/
>       config.txt: move remote.* to a separate file
>       config.txt: move remotes.* to a separate file
>       config.txt: move repack.* to a separate file
>       config.txt: move rerere.* to a separate file
>       config.txt: move reset.* to a separate file
>       config.txt: move sendemail-config.txt to config/
>       config.txt: move sequencer.* to a separate file
>       config.txt: move showBranch.* to a separate file
>       config.txt: move splitIndex.* to a separate file
>       config.txt: move status.* to a separate file
>       config.txt: move stash.* to a separate file
>       config.txt: move submodule.* to a separate file
>       config.txt: move tag.* to a separate file
>       config.txt: move transfer.* to a separate file
>       config.txt: move uploadarchive.* to a separate file
>       config.txt: move uploadpack.* to a separate file
>       config.txt: move url.* to a separate file
>       config.txt: move user.* to a separate file
>       config.txt: move versionsort.* to a separate file
>       config.txt: move web.* to a separate file
>       config.txt: move worktree.* to a separate file
>       config.txt: remove config/dummy.txt
>       thread-utils: macros to unconditionally compile pthreads API
>       wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
>       git-worktree.txt: correct linkgit command name
>       sequencer.c: remove a stray semicolon
>       tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
>       run-command.h: include thread-utils.h instead of pthread.h
>       send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
>       index-pack: remove #ifdef NO_PTHREADS
>       name-hash.c: remove #ifdef NO_PTHREADS
>       attr.c: remove #ifdef NO_PTHREADS
>       grep: remove #ifdef NO_PTHREADS
>       grep: clean up num_threads handling
>       preload-index.c: remove #ifdef NO_PTHREADS
>       pack-objects: remove #ifdef NO_PTHREADS
>       read-cache.c: remove #ifdef NO_PTHREADS
>       read-cache.c: reduce branching based on HAVE_THREADS
>       read-cache.c: initialize copy_len to shut up gcc 8
>       Clean up pthread_create() error handling
>       completion: use __gitcomp_builtin for format-patch
>       build: fix broken command-list.h generation with core.autocrlf
>       format-patch: respect --stat in cover letter's diffstat
>       doc: move extensions.worktreeConfig to the right place
>       clone: fix colliding file detection on APFS
>       files-backend.c: fix build error on Solaris
>       transport-helper.c: do not translate a string twice
> 
> Nickolai Belakovski (2):
>       worktree: update documentation for lock_reason and lock_reason_valid
>       worktree: rename is_worktree_locked to worktree_lock_reason
> 
> Noam Postavsky (1):
>       log: fix coloring of certain octopus merge shapes
> 
> Olga Telezhnaya (3):
>       ref-filter: free memory from used_atom
>       ls-remote: release memory instead of UNLEAK
>       ref-filter: free item->value and item->value->s
> 
> Phillip Wood (11):
>       diff: fix --color-moved-ws=allow-indentation-change
>       diff --color-moved-ws: fix double free crash
>       diff --color-moved-ws: fix out of bounds string access
>       diff --color-moved-ws: fix a memory leak
>       diff --color-moved-ws: fix another memory leak
>       diff --color-moved: fix a memory leak
>       am: don't die in read_author_script()
>       am: improve author-script error reporting
>       am: rename read_author_script()
>       add read_author_script() to libgit
>       sequencer: use read_author_script()
> 
> Pratik Karki (46):
>       rebase: start implementing it as a builtin
>       rebase: refactor common shell functions into their own file
>       builtin/rebase: support running "git rebase <upstream>"
>       builtin rebase: support --onto
>       builtin rebase: support `git rebase --onto A...B`
>       builtin rebase: handle the pre-rebase hook and --no-verify
>       builtin rebase: support --quiet
>       builtin rebase: support the `verbose` and `diffstat` options
>       builtin rebase: require a clean worktree
>       builtin rebase: try to fast forward when possible
>       builtin rebase: support --force-rebase
>       builtin rebase: start a new rebase only if none is in progress
>       builtin rebase: only store fully-qualified refs in `options.head_name`
>       builtin rebase: support `git rebase <upstream> <switch-to>`
>       builtin rebase: support --continue
>       builtin rebase: support --skip
>       builtin rebase: support --abort
>       builtin rebase: support --quit
>       builtin rebase: support --edit-todo and --show-current-patch
>       builtin rebase: actions require a rebase in progress
>       builtin rebase: stop if `git am` is in progress
>       builtin rebase: allow selecting the rebase "backend"
>       builtin rebase: support --signoff
>       builtin rebase: support --rerere-autoupdate
>       builtin rebase: support --committer-date-is-author-date
>       builtin rebase: support `ignore-whitespace` option
>       builtin rebase: support `ignore-date` option
>       builtin rebase: support `keep-empty` option
>       builtin rebase: support `--autosquash`
>       builtin rebase: support `--gpg-sign` option
>       builtin rebase: support `-C` and `--whitespace=<type>`
>       builtin rebase: support `--autostash` option
>       builtin rebase: support `--exec`
>       builtin rebase: support `--allow-empty-message` option
>       builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
>       merge-base --fork-point: extract libified function
>       builtin rebase: support `fork-point` option
>       builtin rebase: add support for custom merge strategies
>       builtin rebase: support --root
>       builtin rebase: optionally auto-detect the upstream
>       builtin rebase: optionally pass custom reflogs to reset_head()
>       builtin rebase: fast-forward to onto if it is a proper descendant
>       builtin rebase: show progress when connected to a terminal
>       builtin rebase: use no-op editor when interactive is "implied"
>       builtin rebase: error out on incompatible option/mode combinations
>       rebase: default to using the builtin rebase
> 
> Rafael Ascensão (2):
>       refs: show --exclude failure with --branches/tags/remotes=glob
>       refs: fix some exclude patterns being ignored
> 
> Ralf Thielow (2):
>       git-rebase.sh: fix typos in error messages
>       builtin/rebase.c: remove superfluous space in messages
> 
> Ramsay Jones (12):
>       Makefile: add a hdr-check target
>       json-writer.h: add missing include (hdr-check)
>       ewah/ewok_rlw.h: add missing include (hdr-check)
>       refs/ref-cache.h: add missing declarations (hdr-check)
>       refs/packed-backend.h: add missing declaration (hdr-check)
>       refs/refs-internal.h: add missing declarations (hdr-check)
>       midx.h: add missing forward declarations (hdr-check)
>       delta-islands.h: add missing forward declarations (hdr-check)
>       headers: normalize the spelling of some header guards
>       fetch-object.h: add missing declaration (hdr-check)
>       ewok_rlw.h: add missing 'inline' to function definition
>       commit-reach.h: add missing declarations (hdr-check)
> 
> Rasmus Villemoes (6):
>       help: redirect to aliased commands for "git cmd --help"
>       git.c: handle_alias: prepend alias info when first argument is -h
>       git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
>       Documentation/git-send-email.txt: style fixes
>       send-email: only consider lines containing @ or <> for automatic Cc'ing
>       send-email: also pick up cc addresses from -by trailers
> 
> René Scharfe (12):
>       mailinfo: support format=flowed
>       fsck: add a performance test for skipList
>       fsck: use strbuf_getline() to read skiplist file
>       fsck: use oidset instead of oid_array for skipList
>       sequencer: use return value of oidset_insert()
>       grep: add -r/--[no-]recursive
>       fetch-pack: factor out is_unmatched_ref()
>       fetch-pack: load tip_oids eagerly iff needed
>       khash: factor out kh_release_*
>       oidset: use khash
>       oidset: uninline oidset_init()
>       commit-reach: fix cast in compare_commits_by_gen()
> 
> Roger Strain (1):
>       subtree: performance improvement for finding unexpected parent commits
> 
> SZEDER Gábor (20):
>       t1404: increase core.packedRefsTimeout to avoid occasional test failure
>       Documentation/git.txt: clarify that GIT_TRACE=/path appends
>       t3701-add-interactive: tighten the check of trace output
>       t1700-split-index: drop unnecessary 'grep'
>       t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
>       t1700-split-index: document why FSMONITOR is disabled in this test script
>       split-index: add tests to demonstrate the racy split index problem
>       t1700-split-index: date back files to avoid racy situations
>       split-index: count the number of deleted entries
>       split-index: don't compare cached data of entries already marked for split index
>       split-index: smudge and add racily clean cache entries to split index
>       split-index: BUG() when cache entry refers to non-existing shared entry
>       object_id.cocci: match only expressions of type 'struct object_id'
>       test-lib: introduce the '-V' short option for '--verbose-log'
>       travis-ci: install packages in 'ci/install-dependencies.sh'
>       coccicheck: introduce 'pending' semantic patches
>       ref-filter: don't look for objects when outside of a repository
>       tests: send "bug in the test script" errors to the script's stderr
>       test-lib-functions: make 'test_cmp_rev' more informative on failure
>       t/lib-git-daemon: fix signal checking
> 
> Sam McKelvie (1):
>       rev-parse: --show-superproject-working-tree should work during a merge
> 
> Saulius Gurklys (1):
>       doc: fix small typo in git show-branch
> 
> Sebastian Staudt (1):
>       travis-ci: no longer use containers
> 
> Shulhan (1):
>       builtin/remote: quote remote name on error to display empty name
> 
> Stefan Beller (25):
>       git-submodule.sh: align error reporting for update mode to use path
>       git-submodule.sh: rename unused variables
>       builtin/submodule--helper: factor out submodule updating
>       builtin/submodule--helper: store update_clone information in a struct
>       builtin/submodule--helper: factor out method to update a single submodule
>       submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
>       submodule--helper: introduce new update-module-mode helper
>       test_decode_color: understand FAINT and ITALIC
>       t3206: add color test for range-diff --dual-color
>       diff.c: simplify caller of emit_line_0
>       diff.c: reorder arguments for emit_line_ws_markup
>       diff.c: add set_sign to emit_line_0
>       diff: use emit_line_0 once per line
>       diff.c: omit check for line prefix in emit_line_0
>       diff.c: rewrite emit_line_0 more understandably
>       diff.c: add --output-indicator-{new, old, context}
>       range-diff: make use of different output indicators
>       range-diff: indent special lines as context
>       refs.c: migrate internal ref iteration to pass thru repository argument
>       refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
>       string-list: remove unused function print_string_list
>       strbuf.h: format according to coding guidelines
>       diff.c: pass sign_index to emit_line_ws_markup
>       submodule helper: convert relative URL to absolute URL if needed
>       builtin/submodule--helper: remove debugging leftover tracing
> 
> Stephen P. Smith (10):
>       wt-status.c: move has_unmerged earlier in the file
>       wt-status: rename commitable to committable
>       t7501: add test of "commit --dry-run --short"
>       wt-status.c: set the committable flag in the collect phase
>       roll wt_status_state into wt_status and populate in the collect phase
>       t2000: rename and combine checkout clash tests
>       t7509: cleanup description and filename
>       t7502: rename commit test script to comply with naming convention
>       t7500: rename commit tests script to comply with naming convention
>       t7501: rename commit test to comply with naming convention
> 
> Steve Hoelzer (1):
>       poll: use GetTickCount64() to avoid wrap-around issues
> 
> Steven Fernandez (1):
>       git-completion.bash: add completion for stash list
> 
> Strain, Roger L (4):
>       subtree: refactor split of a commit into standalone method
>       subtree: make --ignore-joins pay attention to adds
>       subtree: use commits before rejoins for splits
>       subtree: improve decision on merges kept in split
> 
> Sven Strickroth (1):
>       msvc: directly use MS version (_stricmp) of strcasecmp
> 
> Tao Qingyun (3):
>       refs: docstring typo
>       builtin/branch.c: remove useless branch_get
>       branch: trivial style fix
> 
> Taylor Blau (4):
>       transport.c: extract 'fill_alternate_refs_command'
>       transport.c: introduce core.alternateRefsCommand
>       transport.c: introduce core.alternateRefsPrefixes
>       Documentation/config.txt: fix typo in core.alternateRefsCommand
> 
> Thomas Gummerer (17):
>       rerere: unify error messages when read_cache fails
>       rerere: lowercase error messages
>       rerere: wrap paths in output in sq
>       rerere: mark strings for translation
>       rerere: add documentation for conflict normalization
>       rerere: fix crash with files rerere can't handle
>       rerere: only return whether a path has conflicts or not
>       rerere: factor out handle_conflict function
>       rerere: return strbuf from handle path
>       rerere: teach rerere to handle nested conflicts
>       rerere: recalculate conflict ID when unresolved conflict is committed
>       rerere: mention caveat about unmatched conflict markers
>       rerere: add note about files with existing conflict markers
>       .gitattributes: add conflict-marker-size for relevant files
>       linear-assignment: fix potential out of bounds memory access
>       t5551: move setup code inside test_expect blocks
>       t5551: compare sorted cookies files
> 
> Tim Schumacher (4):
>       Documentation/Makefile: make manpage-base-url.xsl generation quieter
>       alias: add support for aliases of an alias
>       alias: show the call history when an alias is looping
>       t0014: introduce an alias testing suite
> 
> Todd Zullinger (1):
>       Documentation: build technical/multi-pack-index
> 
> Torsten Bögershausen (5):
>       Make git_check_attr() a void function
>       path.c: char is not (always) signed
>       Upcast size_t variables to uintmax_t when printing
>       remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)
>       t5601-99: Enable colliding file detection for MINGW
> 
> Uwe Kleine-König (1):
>       howto/using-merge-subtree: mention --allow-unrelated-histories
> 
> brian m. carlson (26):
>       t: add test functions to translate hash-related values
>       t0000: use hash translation table
>       t0000: update tests for SHA-256
>       t0002: abstract away SHA-1 specific constants
>       t0064: make hash size independent
>       t1006: make hash size independent
>       t1400: switch hard-coded object ID to variable
>       t1405: make hash size independent
>       t1406: make hash-size independent
>       t1407: make hash size independent
>       editorconfig: provide editor settings for Git developers
>       editorconfig: indicate settings should be kept in sync
>       pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
>       builtin/repack: replace hard-coded constants
>       builtin/mktree: remove hard-coded constant
>       builtin/fetch-pack: remove constants with parse_oid_hex
>       pack-revindex: express constants in terms of the_hash_algo
>       packfile: express constants in terms of the_hash_algo
>       refs/packed-backend: express constants using the_hash_algo
>       upload-pack: express constants in terms of the_hash_algo
>       transport: use parse_oid_hex instead of a constant
>       tag: express constant in terms of the_hash_algo
>       apply: replace hard-coded constants
>       apply: rename new_sha1_prefix and old_sha1_prefix
>       submodule: make zero-oid comparison hash function agnostic
>       rerere: convert to use the_hash_algo
> 
> Ævar Arnfjörð Bjarmason (35):
>       fetch: change "branch" to "reference" in --force -h output
>       push tests: make use of unused $1 in test description
>       push tests: use spaces in interpolated string
>       fetch tests: add a test for clobbering tag behavior
>       push doc: remove confusing mention of remote merger
>       push doc: move mention of "tag <tag>" later in the prose
>       push doc: correct lies about how push refspecs work
>       fetch: document local ref updates with/without --force
>       fetch: stop clobbering existing tags without --force
>       fsck tests: setup of bogus commit object
>       fsck tests: add a test for no skipList input
>       fsck: document and test sorted skipList input
>       fsck: document and test commented & empty line skipList input
>       fsck: document that skipList input must be unabbreviated
>       fsck: add a performance test
>       fsck: support comments & empty lines in skipList
>       commit-graph write: add progress output
>       commit-graph verify: add progress output
>       config doc: add missing list separator for checkout.optimizeNewBranch
>       push doc: add spacing between two words
>       fetch doc: correct grammar in --force docs
>       gc: fix regression in 7b0f229222 impacting --quiet
>       gc doc: mention the commit-graph in the intro
>       pack-objects test: modernize style
>       pack-objects tests: don't leave test .git corrupt at end
>       index-pack tests: don't leave test repo dirty at end
>       i18n: make GETTEXT_POISON a runtime option
>       range-diff doc: add a section about output stability
>       range-diff: fix regression in passing along diff options
>       range-diff: make diff option behavior (e.g. --stat) consistent
>       push: change needlessly ambiguous example in error
>       rebase doc: document rebase.useBuiltin
>       tests: add a special setup where rebase.useBuiltin is off
>       read-cache: make the split index obey umask settings
>       advice: don't pointlessly suggest --convert-graft-file
> 
> Đoàn Trần Công Danh (1):
>       git-compat-util: prefer poll.h to sys/poll.h
> 
> -- 
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@xxxxxxxxxxxxxxxx.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqq36rhjnts.fsf%40gitster-ct.c.googlers.com.
> For more options, visit https://groups.google.com/d/optout.
>