{"thread":{"id":"53474","subject":"[ANNOUNCE] Git v2.27.0-rc0","startedAt":"2020-05-14T23:28:06Z","lastAt":"2020-05-20T14:38:01Z","messageCount":7,"participants":["Junio C Hamano","Randall S. Becker","Adam Dinwoodie"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"397846","messageId":"xmqqy2punll7.fsf@gitster.c.googlers.com","threadId":"53474","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.27.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-05-14T23:27:48Z","receivedAt":"2020-05-14T23:28:06Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"An early preview release Git v2.27.0-rc0 is now available for\ntesting at the usual places.  It is comprised of 479 non-merge\ncommits since v2.26.0, contributed by 53 people, 16 of which are\nnew faces.\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/testing/\n\nThe following public repositories all have a copy of the\n'v2.27.0-rc0' tag and the 'master' branch that the tag points at:\n\n  url = https://kernel.googlesource.com/pub/scm/git/git\n  url = git://repo.or.cz/alt-git.git\n  url = https://github.com/gitster/git\n\nNew contributors whose contributions weren't in v2.26.0 are as follows.\nWelcome to the Git development community!\n\n  Andras Kucsma, Ash Holland, Christopher Warrington, Emma\n  Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,\n  Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,\n  Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry\n  Moschou, Vasil Dimov, and Yang Zhao.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  마누엘, Alban Gruin, Alexandr Miloslavskiy, Alex Henrie,\n  Andrei Rybak, Andrew Oakley, Ben Keene, brian m. carlson,\n  Carlo Marcelo Arenas Belón, Christian Couder, Damien Robert,\n  Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah\n  Newren, Emily Shaffer, Eric Sunshine, Garima Singh, Hans Jerry\n  Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes Schindelin,\n  Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,\n  Martin Ågren, Matheus Tavares, Patrick Steinhardt, Philippe\n  Blain, Phillip Wood, René Scharfe, Shourya Shukla, SZEDER\n  Gábor, Taylor Blau, and Thomas Gummerer.\n\n----------------------------------------------------------------\n\nGit 2.27 Release Notes (draft)\n==============================\n\nUpdates since v2.26\n-------------------\n\nBackward compatibility notes\n\n * When \"git describe C\" finds that commit C is pointed by a signed or\n   annotated tag, which records T as its tagname in the object, the\n   command gives T as its answer.  Even if the user renames or moves\n   such a tag from its natural location in the \"refs/tags/\" hierarchy,\n   \"git describe C\" would still give T as the answer, but in such a\n   case \"git show T^0\" would no longer work as expected.  There may be\n   nothing at \"refs/tags/T\" or even worse there may be a different tag\n   instead.\n\n   Starting from this version, \"git describe\" will always use the\n   \"long\" version, as if the \"--long\" option were given, when giving\n   its output based on such a misplaced tag to work around the problem.\n\n * \"git pull\" issues a warning message until the pull.rebase\n   configuration variable is explicitly given, which some existing\n   users may find annoying---those who prefer not to rebase need to\n   set the variable to false to squelch the warning.\n\n\nUI, Workflows & Features\n\n * A handful of options to configure SSL when talking to proxies have\n   been added.\n\n * Smudge/clean conversion filters are now given more information\n   (e.g. the object of the tree-ish in which the blob being converted\n   appears, in addition to its path, which has already been given).\n\n * When \"git describe C\" finds an annotated tag with tagname A to be\n   the best name to explain commit C, and the tag is stored in a\n   \"wrong\" place in the refs/tags hierarchy, e.g. refs/tags/B, the\n   command gave a warning message but used A (not B) to describe C.\n   If C is exactly at the tag, the describe output would be \"A\", but\n   \"git rev-parse A^0\" would not be equal as \"git rev-parse C^0\".  The\n   behavior of the command has been changed to use the \"long\" form\n   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.\n\n * \"git pull\" learned to warn when no pull.rebase configuration\n   exists, and neither --[no-]rebase nor --ff-only is given (which\n   would result a merge).\n\n * \"git p4\" learned four new hooks and also \"--no-verify\" option to\n   bypass them (and the existing \"p4-pre-submit\" hook).\n\n * \"git pull\" shares many options with underlying \"git fetch\", but\n   some of them were not documented and some of those that would make\n   sense to pass down were not passed down.\n\n * \"git rebase\" learned the \"--no-gpg-sign\" option to countermand\n   commit.gpgSign the user may have.\n\n * The output from \"git format-patch\" uses RFC 2047 encoding for\n   non-ASCII letters on From: and Subject: headers, so that it can\n   directly be fed to e-mail programs.  A new option has been added\n   to produce these headers in raw.\n\n * \"git log\" learned \"--show-pulls\" that helps pathspec limited\n   history views; a merge commit that takes the whole change from a\n   side branch, which is normally omitted from the output, is shown\n   in addition to the commits that introduce real changes.\n\n * The interactive input from various codepaths are consolidated and\n   any prompt possibly issued earlier are fflush()ed before we read.\n\n * Allow \"git rebase\" to reapply all local commits, even if the may be\n   already in the upstream, without checking first.\n\n * The 'pack.useSparse' configuration variable now defaults to 'true',\n   enabling an optimization that has been experimental since Git 2.21.\n\n * \"git rebase\" happens to call some hooks meant for \"checkout\" and\n   \"commit\" by this was not a designed behaviour than historical\n   accident.  This has been documented.\n\n * \"git merge\" learns the \"--autostash\" option.\n\n * \"sparse-checkout\" UI improvements.\n\n * \"git update-ref --stdin\" learned a handful of new verbs to let the\n   user control ref update transactions more explicitly, which helps\n   as an ingredient to implement two-phase commit-style atomic\n   ref-updates across multiple repositories.\n\n * \"git commit-graph write\" learned different ways to write out split\n   files.\n\n * Introduce an extension to the commit-graph to make it efficient to\n   check for the paths that were modified at each commit using Bloom\n   filters.\n\n * The approxidate parser learns to parse seconds with fraction and\n   ignore fractional part.\n\n * The userdiff patterns for Markdown documents have been added.\n\n * The sparse-checkout patterns have been forbidden from excluding all\n   paths, leaving an empty working tree, for a long time.  This\n   limitation has been lifted.\n\n * \"git restore --staged --worktree\" now defaults to take the contents\n   out of \"HEAD\", instead of erring out.\n\n * \"git p4\" learned to recover from a (broken) state where a directory\n   and a file are recorded at the same path in the Perforce repository\n   the same way as their clients do.\n\n * \"git multi-pack-index repack\" has been taught to honor some\n   repack.* configuration variables.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * The advise API has been revamped to allow more systematic enumeration of\n   advice knobs in the future.\n\n * SHA-256 transition continues.\n\n * The code to interface with GnuPG has been refactored.\n\n * \"git stash\" has kept an escape hatch to use the scripted version\n   for a few releases, which got stale.  It has been removed.\n\n * Enable tests that require GnuPG on Windows.\n\n * Minor test usability improvement.\n\n * Trace2 enhancement to allow logging of the environment variables.\n\n * Test clean-up continues.\n\n * Perf-test update.\n\n * A Windows-specific test element has been made more robust against\n   misuse from both user's environment and programmer's errors.\n\n * Various tests have been updated to work around issues found with\n   shell utilities that come with busybox etc.\n\n * The config API made mixed uses of int and size_t types to represent\n   length of various pieces of text it parsed, which has been updated\n   to use the correct type (i.e. size_t) throughout.\n\n * The \"--decorate-refs\" and \"--decorate-refs-exclude\" options \"git\n   log\" takes have learned a companion configuration variable\n   log.excludeDecoration that sits at the lowest priority in the\n   family.\n\n * A new CI job to build and run test suite on linux with musl libc\n   has been added.\n\n * Update the CI configuration to use GitHub Actions, retiring the one\n   based on Azure Pipelines.\n\n * The directory traversal code had redundant recursive calls which\n   made its performance characteristics exponential with respect to\n   the depth of the tree, which was corrected.\n\n * \"git blame\" learns to take advantage of the \"changed-paths\" Bloom\n   filter stored in the commit-graph file.\n\n * The \"bugreport\" tool has been added.\n\n * The object walk with object filter \"--filter=tree:0\" can now take\n   advantage of the pack bitmap when available.\n\n * Instead of always building all branches at GitHub via Actions,\n   users can specify which branches to build.\n\n * Codepaths that show progress meter have been taught to also use the\n   start_progress() and the stop_progress() calls as a \"region\" to be\n   traced.\n\n\nFixes since v2.26\n-----------------\n\n * The real_path() convenience function can easily be misused; with a\n   bit of code refactoring in the callers' side, its use has been\n   eliminated.\n   (merge 49d3c4b481 am/real-path-fix later to maint).\n\n * Update \"git p4\" to work with Python 3.\n   (merge 6bb40ed20a yz/p4-py3 later to maint).\n\n * The mechanism to prevent \"git commit\" from making an empty commit\n   or amending during an interrupted cherry-pick was broken during the\n   rewrite of \"git rebase\" in C, which has been corrected.\n   (merge 430b75f720 pw/advise-rebase-skip later to maint).\n\n * Fix \"git checkout --recurse-submodules\" of a nested submodule\n   hierarchy.\n   (merge 846f34d351 pb/recurse-submodules-fix later to maint).\n\n * The \"--fork-point\" mode of \"git rebase\" regressed when the command\n   was rewritten in C back in 2.20 era, which has been corrected.\n   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).\n\n * The import-tars importer (in contrib/fast-import/) used to create\n   phony files at the top-level of the repository when the archive\n   contains global PAX headers, which made its own logic to detect and\n   omit the common leading directory ineffective, which has been\n   corrected.\n   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).\n\n * Simplify the commit ancestry connectedness check in a partial clone\n   repository in which \"promised\" objects are assumed to be obtainable\n   lazily on-demand from promisor remote repositories.\n   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).\n\n * The server-end of the v2 protocol to serve \"git clone\" and \"git\n   fetch\" was not prepared to see a delim packets at unexpected\n   places, which led to a crash.\n   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).\n\n * When fed a midx that records no objects, some codepaths tried to\n   loop from 0 through (num_objects-1), which, due to integer\n   arithmetic wrapping around, made it nonsense operation with out of\n   bounds array accesses.  The code has been corrected to reject such\n   an midx file.\n   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).\n\n * Utitiles run via the run_command() API were not spawned correctly\n   on Cygwin, when the paths to them are given as a full path with\n   backslashes.\n   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).\n\n * \"git pull --rebase\" tried to run a rebase even after noticing that\n   the pull results in a fast-forward and no rebase is needed nor\n   sensible, for the past few years due to a mistake nobody noticed.\n   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).\n\n * \"git rebase\" with the merge backend did not work well when the\n   rebase.abbreviateCommands configuration was set.\n   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).\n\n * The logic to auto-follow tags by \"git clone --single-branch\" was\n   not careful to avoid lazy-fetching unnecessary tags, which has been\n   corrected.\n   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).\n\n * \"git rebase -i\" did not leave the reflog entries correctly.\n   (merge 1f6965f994 en/sequencer-reflog-action later to maint).\n\n * The more aggressive updates to remote-tracking branches we had for\n   the past 7 years or so were not reflected in the documentation,\n   which has been corrected.\n   (merge a44088435c pb/pull-fetch-doc later to maint).\n\n * We've left the command line parsing of \"git log :/a/b/\" broken for\n   about a full year without anybody noticing, which has been\n   corrected.\n   (merge 0220461071 jc/missing-ref-store-fix later to maint).\n\n * Misc fixes for Windows.\n   (merge 3efc128cd5 js/mingw-fixes later to maint).\n\n * \"git rebase\" (again) learns to honor \"--no-keep-empty\", which lets\n   the user to discard commits that are empty from the beginning (as\n   opposed to the ones that become empty because of rebasing).  The\n   interactive rebase also marks commits that are empty in the todo.\n   (merge 50ed76148a en/rebase-no-keep-empty later to maint).\n\n * Parsing the host part out of URL for the credential helper has been corrected.\n   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).\n\n * Document the recommended way to abort a failing test early (e.g. by\n   exiting a loop), which is to say \"return 1\".\n   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).\n\n * The code that refreshes the last access and modified time of\n   on-disk packfiles and loose object files have been updated.\n   (merge 312cd76130 lr/freshen-file-fix later to maint).\n\n * Validation of push certificate has been made more robust against\n   timing attacks.\n   (merge 719483e547 bc/constant-memequal later to maint).\n\n * The custom hash function used by \"git fast-import\" has been\n   replaced with the one from hashmap.c, which gave us a nice\n   performance boost.\n   (merge d8410a816b jk/fast-import-use-hashmap later to maint).\n\n * The \"git submodule\" command did not initialize a few variables it\n   internally uses and was affected by variable settings leaked from\n   the environment.\n   (merge 65d100c4dd lx/submodule-clear-variables later to maint).\n\n * Raise the minimum required version of docbook-xsl package to 1.74,\n   as 1.74.0 was from late 2008, which is more than 10 years old, and\n   drop compatibility cruft from our documentation suite.\n   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).\n\n * \"git log\" learns \"--[no-]mailmap\" as a synonym to \"--[no-]use-mailmap\"\n   (merge 88acccda38 jc/log-no-mailmap later to maint).\n\n * \"git commit-graph write --expire-time=<timestamp>\" did not use the\n   given timestamp correctly, which has been corrected.\n   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).\n\n * Tests update to use \"test-chmtime\" instead of \"touch -t\".\n   (merge e892a56845 ds/t5319-touch-fix later to maint).\n\n * \"git diff\" in a partial clone learned to avoid lazy loading blob\n   objects in more casese when they are not needed.\n   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).\n\n * \"git push --atomic\" used to show failures for refs that weren't\n   even pushed, which has been corrected.\n   (merge dfe1b7f19c jx/atomic-push later to maint).\n\n * Code in builtin/*, i.e. those can only be called from within\n   built-in subcommands, that implements bulk of a couple of\n   subcommands have been moved to libgit.a so that they could be used\n   by others.\n   (merge 9460fd48b5 dl/libify-a-few later to maint).\n\n * Allowing the user to split a patch hunk while \"git stash -p\" does\n   not work well; a band-aid has been added to make this (partially)\n   work better.\n\n * \"git diff-tree --pretty --notes\" used to hit an assertion failure,\n   as it forgot to initialize the notes subsystem.\n   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).\n\n * \"git range-diff\" fixes.\n   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).\n\n * \"git grep\" did not quote a path with unusual character like other\n   commands (like \"git diff\", \"git status\") do, but did quote when run\n   from a subdirectory, both of which has been corrected.\n   (merge 45115d8490 mt/grep-cquote-path later to maint).\n\n * GNU/Hurd is also among the ones that need the fopen() wrapper.\n   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).\n\n * Those fetching over protocol v2 from linux-next and other kernel\n   repositories are reporting that v2 often fetches way too much than\n   needed.\n   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).\n\n * The upload-pack protocol v2 gave up too early before finding a\n   common ancestor, resulting in a wasteful fetch from a fork of a\n   project.  This has been corrected to match the behaviour of v0\n   protocol.\n   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).\n\n * The build procedure did not use the libcurl library and its include\n   files correctly for a custom-built installation.\n   (merge 0573831950 jk/build-with-right-curl later to maint).\n\n * Tighten \"git mailinfo\" to notice and error out when decoded result\n   contains NUL in it.\n   (merge 3919997447 dd/mailinfo-with-nul later to maint).\n\n * Fix in-core inconsistency after fetching into a shallow repository\n   that broke the code to write out commit-graph.\n   (merge 37b9dcabfc tb/reset-shallow later to maint).\n\n * The commit-graph code exhausted file descriptors easily when it\n   does not have to.\n   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).\n\n * The multi-pack-index left mmapped file descriptors open when it\n   does not have to.\n   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).\n\n * Recent update to Homebrew used by macOS folks breaks build by\n   moving gettext library and necessary headers.\n   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).\n\n * Incompatible options \"--root\" and \"--fork-point\" of \"git rebase\"\n   have been marked and documented as being incompatible.\n   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).\n\n * Error and verbose trace messages from \"git push\" did not redact\n   credential material embedded in URLs.\n   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).\n\n * Update the parser used for credential.<URL>.<variable>\n   configuration, to handle <URL>s with '/' in them correctly.\n   (merge b44d0118ac bc/wildcard-credential later to maint).\n\n * Recent updates broke parsing of \"credential.<url>.<key>\" where\n   <url> is not a full URL (e.g. [credential \"https://\"] helper = ...)\n   stopped working, which has been corrected.\n   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).\n   (merge cd93e6c029 js/partial-urlmatch later to maint).\n\n * Some of the files commit-graph subsystem keeps on disk did not\n   correctly honor the core.sharedRepository settings and some were\n   left read-write.\n\n * In error messages that \"git switch\" mentions its option to create a\n   new branch, \"-b/-B\" options were shown, where \"-c/-C\" options\n   should be, which has been corrected.\n   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).\n\n * With the recent tightening of the code that is used to parse\n   various parts of a URL for use in the credential subsystem, a\n   hand-edited credential-store file causes the credential helper to\n   die, which is a bit too harsh to the users.  Demote the error\n   behaviour to just ignore and keep using well-formed lines instead.\n   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).\n\n * The samples in the credential documentation has been updated to\n   make it clear that we depict what would appear in the .git/config\n   file, by adding appropriate quotes as needed..\n   (merge 177681a07e jk/credential-sample-update later to maint).\n\n * \"git branch\" and other \"for-each-ref\" variants accepted multiple\n   --sort=<key> options in the increasing order of precedence, but it\n   had a few breakages around \"--ignore-case\" handling, and tie-breaking\n   with the refname, which have been fixed.\n   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).\n\n * The coding guideline for shell scripts instructed to refer to a\n   variable with dollar-sign inside arithmetic expansion to work\n   around a bug in old versions of dash, which is a thing of the past.\n   Now we are not forbidden from writing $((var+1)).\n   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).\n\n * The <stdlib.h> header on NetBSD brings in its own definition of\n   hmac() function (eek), which conflicts with our own and unrelated\n   function with the same name.  Our function has been renamed to work\n   around the issue.\n   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).\n\n * The basic test did not honor $TEST_SHELL_PATH setting, which has\n   been corrected.\n   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).\n\n * Minor in-code comments and documentation updates around credential\n   API.\n   (merge 1aed817f99 cb/credential-doc-fixes later to maint).\n\n * Teach \"am\", \"commit\", \"merge\" and \"rebase\", when they are run with\n   the \"--quiet\" option, to pass \"--quiet\" down to \"gc --auto\".\n   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).\n\n * The code to skip unmerged paths in the index when sparse checkout\n   is in use would have made out-of-bound access of the in-core index\n   when the last path was unmerged, which has been corrected.\n\n * Serving a \"git fetch\" client over \"git://\" and \"ssh://\" protocols\n   using the on-wire protocol version 2 was buggy on the server end\n   when the client needs to make a follow-up request to\n   e.g. auto-follow tags.\n   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).\n\n * \"git bisect replay\" had trouble with input files when they used\n   CRLF line ending, which has been corrected.\n   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).\n\n * \"rebase -i\" segfaulted when rearranging a sequence that has a\n   fix-up that applies another fix-up (which may or may not be a\n   fix-up of yet another step).\n   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).\n\n * \"git fsck\" ensures that the paths recorded in tree objects are\n   sorted and without duplicates, but it failed to notice a case where\n   a blob is followed by entries that sort before a tree with the same\n   name.  This has been corrected.\n   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 564956f358 jc/maintain-doc later to maint).\n   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).\n   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).\n   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).\n   (merge 8312aa7d74 jc/config-tar later to maint).\n   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).\n   (merge 64d1022e14 ar/test-style-fixes later to maint).\n   (merge 4a465443a6 ds/doc-clone-filter later to maint).\n   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).\n   (merge d3507cc712 js/test-junit-finalization-fix later to maint).\n   (merge 2149b6748f bc/faq later to maint).\n   (merge 12dc0879f1 jk/test-cleanup later to maint).\n   (merge 344420bf0f pb/rebase-doc-typofix later to maint).\n   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).\n   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).\n   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).\n   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).\n   (merge a1aba0c95c js/t0007-typofix later to maint).\n   (merge 76ba7fa225 ma/config-doc-fix later to maint).\n   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).\n   (merge 88eaf361e0 eb/mboxrd-doc later to maint).\n   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).\n   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).\n   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).\n   (merge bdccbf7047 mt/doc-worktree-ref later to maint).\n   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).\n   (merge 4153274052 bc/doc-credential-helper-value later to maint).\n   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.26.0 are as follows:\n\nAlban Gruin (3):\n      sequencer: mark messages for translation\n      sequencer: don't abbreviate a command if it doesn't have a short form\n      t3432: test `--merge' with `rebase.abbreviateCommands = true', too\n\nAlex Henrie (1):\n      pull: warn if the user didn't say whether to rebase or to merge\n\nAlexandr Miloslavskiy (4):\n      set_git_dir: fix crash when used with real_path()\n      real_path: remove unsafe API\n      real_path_if_valid(): remove unsafe API\n      get_superproject_working_tree(): return strbuf\n\nAndras Kucsma (1):\n      run-command: trigger PATH lookup properly on Cygwin\n\nAndrei Rybak (2):\n      t9500: remove spaces after redirect operators\n      t: fix whitespace around &&\n\nAndrew Oakley (1):\n      git-p4: recover from inconsistent perforce history\n\nAsh Holland (1):\n      userdiff: support Markdown\n\nBen Keene (8):\n      git-p4: change the expansion test from basestring to list\n      git-p4: rewrite prompt to be Windows compatible\n      git-p4: create new function run_git_hook\n      git-p4: add p4-pre-submit exit text\n      git-p4: add --no-verify option\n      git-p4: restructure code in submit\n      git-p4: add p4 submit hooks\n      git-p4: add RCS keyword status message\n\nCarlo Marcelo Arenas Belón (8):\n      credential-store: ignore bogus lines from store file\n      credential: update description for credential_from_url_gently\n      credential: correct order of parameters for credential_match\n      builtin/receive-pack: avoid generic function name hmac()\n      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH\n      t/test_lib: avoid naked bash arrays in file_lineno\n      credential: update gitcredentials documentation\n      credential: document protocol updates\n\nChristian Couder (1):\n      upload-pack: clear filter_options for each v2 fetch command\n\nChristopher Warrington (1):\n      bisect: allow CRLF line endings in \"git bisect replay\" input\n\nDamien Robert (6):\n      midx.c: fix an integer underflow\n      doc: list all commands affected by submodule.recurse\n      doc: document --recurse-submodules for reset and restore\n      doc: explain how to deactivate submodule.recurse completely\n      doc: be more precise on (fetch|push).recurseSubmodules\n      doc: --recurse-submodules mostly applies to active submodules\n\nDenton Liu (45):\n      Makefile: ASCII-sort += lists\n      t7600: use test_write_lines()\n      Lib-ify fmt-merge-msg\n      Lib-ify prune-packed\n      t5512: don't use `test_must_fail test_cmp`\n      t5512: stop losing git exit code in here-docs\n      t5512: stop losing return codes of git commands\n      t5550: simplify no matching line check\n      t5607: reorder `nongit test_must_fail`\n      t5612: don't use `test_must_fail test_cmp`\n      t5612: stop losing return codes of git commands\n      t5801: teach compare_refs() to accept !\n      wrapper: indent with tabs\n      sequencer: stop leaking buf\n      sequencer: make file exists check more efficient\n      sequencer: make read_oneliner() accept flags\n      sequencer: configurably warn on non-existent files\n      sequencer: make read_oneliner() extern\n      rebase: use read_oneliner()\n      sequencer: make apply_autostash() accept a path\n      sequencer: rename stash_sha1 to stash_oid\n      rebase: use apply_autostash() from sequencer.c\n      rebase: generify reset_head()\n      reset: extract reset_head() from rebase\n      rebase: extract create_autostash()\n      rebase: generify create_autostash()\n      sequencer: extract perform_autostash() from rebase\n      sequencer: unlink autostash in apply_autostash()\n      sequencer: implement save_autostash()\n      sequencer: implement apply_autostash_oid()\n      merge: teach --autostash option\n      t5520: make test_pull_autostash() accept expect_parent_num\n      pull: pass --autostash to merge\n      t6030: use test_path_is_missing()\n      t7408: replace incorrect uses of test_must_fail\n      t7508: don't use `test_must_fail test_cmp`\n      t9141: use test_path_is_missing()\n      t9160: use test_path_is_missing()\n      t9164: use test_must_fail only on git commands\n      t9819: don't use test_must_fail with p4\n      Use OPT_CALLBACK and OPT_CALLBACK_F\n      push: unset PARSE_OPT_OPTARG for --recurse-submodules\n      rebase: save autostash entry into stash reflog on --quit\n      switch: fix errors and comments related to -c and -C\n      Doc: reference the \"stash list\" in autostash docs\n\nDerrick Stolee (25):\n      connected.c: reprepare packs for corner cases\n      config: set pack.useSparse=true by default\n      pack-objects: flip the use of GIT_TEST_PACK_SPARSE\n      clone: document --filter options\n      diff: halt tree-diff early after max_changes\n      dir: refactor treat_directory to clarify control flow\n      commit-graph: fix buggy --expire-time option\n      t5319: replace 'touch -m' with 'test-tool chmtime'\n      bloom: ignore renames when computing changed paths\n      revision: --show-pulls adds helpful merges\n      log-tree: make ref_filter_match() a helper method\n      log: add log.excludeDecoration config option\n      revision: complicated pathspecs disable filters\n      tests: write commit-graph with Bloom filters\n      blame: use changed-path Bloom filters\n      multi-pack-index: close file descriptor after mmap\n      bloom: fix whitespace around tab length\n      test-bloom: fix usage typo\n      sparse-checkout: stop blocking empty workdirs\n      unpack-trees: avoid array out-of-bounds error\n      multi-pack-index: respect repack.packKeptObjects=false\n      bloom: parse commit before computing filters\n      Documentation: changed-path Bloom filters use byte words\n      bloom: de-duplicate directory entries\n      bloom: use num_changes not nr for limit detection\n\nElijah Newren (37):\n      oidset: remove unnecessary include\n      unpack-trees: fix minor typo in comment\n      unpack-trees: remove unused error type\n      unpack-trees: simplify verify_absent_sparse()\n      unpack-trees: simplify pattern_list freeing\n      t1091: make some tests a little more defensive against failures\n      unpack-trees: allow check_updates() to work on a different index\n      unpack-trees: do not mark a dirty path with SKIP_WORKTREE\n      unpack-trees: pull sparse-checkout pattern reading into a new function\n      unpack-trees: add a new update_sparsity() function\n      sparse-checkout: use new update_sparsity() function\n      sparse-checkout: use improved unpack_trees porcelain messages\n      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier\n      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*\n      unpack-trees: split display_error_msgs() into two\n      unpack-trees: make sparse path messages sound like warnings\n      unpack-trees: provide warnings on sparse updates for unmerged paths too\n      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning\n      sparse-checkout: provide a new reapply subcommand\n      pull: avoid running both merge and rebase\n      t7063: more thorough status checking\n      t3000: add more testcases testing a variety of ls-files issues\n      dir: fix simple typo in comment\n      dir: consolidate treat_path() and treat_one_path()\n      dir: fix broken comment\n      dir: fix confusion based on variable tense\n      dir: replace exponential algorithm with a linear one\n      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()\n      dir: replace double pathspec matching with single in treat_directory()\n      Fix error-prone fill_directory() API; make it only return matches\n      completion: fix 'git add' on paths under an untracked directory\n      git-rebase.txt: add another hook to the hooks section, and explain more\n      sequencer: honor GIT_REFLOG_ACTION\n      rebase -i: mark commits that begin empty in todo editor\n      rebase: reinstate --no-keep-empty\n      rebase: fix an incompatible-options error message\n      rebase: display an error if --root and --fork-point are both provided\n\nEmily Shaffer (8):\n      help: move list_config_help to builtin/help\n      bugreport: add tool to generate debugging info\n      bugreport: gather git version and build info\n      bugreport: add uname info\n      bugreport: add compiler info\n      bugreport: drop extraneous includes\n      bugreport: collect list of populated hooks\n      trace2: log progress time and throughput\n\nEmma Brooks (3):\n      format-patch: teach --no-encode-email-headers\n      Documentation: explain \"mboxrd\" pretty format\n      gitweb: Recognize *-to and Closes/Fixes trailers\n\nEric Sunshine (1):\n      restore: default to HEAD when combining --staged and --worktree\n\nGarima Singh (13):\n      commit-graph: define and use MAX_NUM_CHUNKS\n      bloom.c: add the murmur3 hash implementation\n      bloom.c: introduce core Bloom filter constructs\n      bloom.c: core Bloom filter implementation for changed paths.\n      commit-graph: compute Bloom filters for changed paths\n      commit-graph: examine commits by generation number\n      commit-graph: write Bloom filters to commit graph file\n      commit-graph: reuse existing Bloom filters during write\n      commit-graph: add --changed-paths option to write subcommand\n      revision.c: use Bloom filters to speed up path based revision walks\n      revision.c: add trace2 stats around Bloom filter usage\n      t4216: add end to end tests for git log with Bloom filters\n      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag\n\nHans Jerry Illikainen (2):\n      t: increase test coverage of signature verification output\n      gpg-interface: prefer check_signature() for GPG verification\n\nHeba Waly (4):\n      advice: extract vadvise() from advise()\n      advice: change \"setupStreamFailure\" to \"setUpstreamFailure\"\n      advice: revamp advise API\n      tag: use new advice API to check visibility\n\nJeff King (51):\n      credential: avoid writing values with newlines\n      t/lib-credential: use test_i18ncmp to check stderr\n      credential: detect unrepresentable values when parsing urls\n      fsck: detect gitmodules URLs with embedded newlines\n      t3419: drop EXPENSIVE tests\n      t/lib-credential.sh: drop shebang line\n      t/lib-*.sh: drop executable bit\n      test-lib-functions: make packetize() more efficient\n      upload-pack: handle unexpected delim packets\n      p5310: stop timing non-bitmap pack-to-disk\n      Makefile: avoid running curl-config multiple times\n      Makefile: use curl-config --cflags\n      test-lib-functions: simplify packetize() stdin code\n      commit-graph: examine changed-path objects in pack order\n      oid_array: use size_t for count and allocation\n      oid_array: use size_t for iteration\n      oid_array: rename source file from sha1-array\n      test-tool: rename sha1-array to oid-array\n      bisect: stop referring to sha1_array\n      ref-filter: stop referring to \"sha1 array\"\n      oidset: stop referring to sha1-array\n      clone: use \"quick\" lookup while following tags\n      Makefile: avoid running curl-config unnecessarily\n      fast-import: replace custom hash with hashmap.c\n      repository: mark the \"refs\" pointer as private\n      remote: drop auto-strlen behavior of make_branch() and make_rewrite()\n      parse_config_key(): return subsection len as size_t\n      config: drop useless length variable in write_pair()\n      git_config_parse_key(): return baselen as size_t\n      config: use size_t to store parsed variable baselen\n      config: reject parsing of files over INT_MAX\n      credential: treat \"?\" and \"#\" in URLs as end of host\n      t0300: make \"quit\" helper more realistic\n      t0300: use more realistic inputs\n      credential: parse URL without host as empty host, not unset\n      credential: refuse to operate when missing host or protocol\n      credential: die() when parsing invalid urls\n      Git 2.17.5\n      blame: drop unused parameter from maybe_changed_path\n      test-bloom: fix some whitespace issues\n      test-bloom: check that we have expected arguments\n      commit-graph: close descriptors after mmap\n      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests\n      gitcredentials(7): clarify quoting of helper examples\n      gitcredentials(7): make shell-snippet example more realistic\n      CodingGuidelines: drop arithmetic expansion advice to use \"$x\"\n      ref-filter: apply --ignore-case to all sorting keys\n      ref-filter: apply fallback refname sort only after all user sorts\n      list-objects-filter: treat NULL filter_options as \"disabled\"\n      pack-bitmap: pass object filter to fill-in traversal\n      ci: allow per-branch config for GitHub Actions\n\nJessica Clarke (1):\n      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd\n\nJiang Xin (5):\n      send-pack: fix inconsistent porcelain output\n      t5543: never report what we do not push\n      send-pack: mark failure of atomic push properly\n      transport-helper: mark failure for atomic push\n      transport-helper: new method reject_atomic_push()\n\nJohannes Schindelin (36):\n      cherry-pick: add test for `--skip` advice in `git commit`\n      tests(junit-xml): avoid invalid XML\n      import-tars: ignore the global PAX header\n      tests(gpg): allow the gpg-agent to start on Windows\n      t/lib-gpg.sh: stop pretending to be a stand-alone script\n      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing\n      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs\n      tests: increase the verbosity of the GPG-related prereqs\n      MyFirstObjectWalk: remove unnecessary conditional statement\n      t0007: fix a typo\n      ci/lib: if CI type is unknown, show the environment variables\n      ci/lib: allow running in GitHub Actions\n      ci: fix the `jobname` of the `GETTEXT_POISON` job\n      subtree: fix build with AsciiDoctor 2\n      mingw: do not treat `COM0` as a reserved file name\n      t3904: fix incorrect demonstration of a bug\n      stash -p: (partially) fix bug concerning split hunks\n      mingw: help debugging by optionally executing bash with strace\n      interactive: refactor code asking the user for interactive input\n      ci: run gem with sudo to install asciidoctor\n      README: add a build badge for the GitHub Actions runs\n      ci: retire the Azure Pipelines definition\n      tests: when run in Bash, annotate test failures with file name/line number\n      ci: add a problem matcher for GitHub Actions\n      ci: let GitHub Actions upload failed tests' directories\n      t: consolidate the `is_hidden` functions\n      mingw: make test_path_is_hidden more robust\n      t: restrict `is_hidden` to be called only on Windows\n      credential: fix grammar\n      credential: optionally allow partial URLs in credential_from_url_gently()\n      credential: optionally allow partial URLs in credential_from_url_gently()\n      credential: handle `credential.<partial-URL>.<key>` again\n      macOS/brew: let the build find gettext headers/libraries/msgfmt\n      push: anonymize URLs in error messages and warnings\n      credential: handle `credential.<partial-URL>.<key>` again\n      rebase --autosquash: fix a potential segfault\n\nJonathan Nieder (5):\n      fsck: convert gitmodules url to URL passed to curl\n      credential: treat URL without scheme as invalid\n      credential: treat URL with empty scheme as invalid\n      fsck: reject URL with empty host in .gitmodules\n      Revert \"fetch: default to protocol version 2\"\n\nJonathan Tan (11):\n      connected: always use partial clone optimization\n      promisor-remote: accept 0 as oid_nr in function\n      diff: make diff_populate_filespec_options struct\n      diff: refactor object read\n      diff: restrict when prefetching occurs\n      rebase --merge: optionally skip upstreamed commits\n      fetch-pack: return enum from process_acks()\n      fetch-pack: in protocol v2, in_vain only after ACK\n      fetch-pack: in protocol v2, reset in_vain upon ACK\n      commit-graph: avoid memory leaks\n      t5500: count objects through stderr, not trace\n\nJorge Lopez Silva (2):\n      http: add client cert support for HTTPS proxies\n      http: add environment variable support for HTTPS proxies\n\nJosh Steadmon (1):\n      trace2: teach Git to log environment variables\n\nJulien Moutinho (1):\n      gitweb: fix UTF-8 encoding when using CGI::Fast\n\nJunio C Hamano (27):\n      rebase: --fork-point regression fix\n      describe: force long format for a name based on a mislocated tag\n      update how-to-maintain-git\n      parse-options: teach \"git cmd -h\" to show alias as alias\n      clone: reorder --recursive/--recurse-submodules\n      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap\n      Git 2.17.4\n      separate tar.* config to its own source file\n      The first batch post 2.26 cycle\n      The second batch post 2.26 cycle\n      t/README: suggest how to leave test early with failure\n      CodingGuidelines: allow ${#posix} == strlen($posix)\n      sha1-name: do not assume that the ref store is initialized\n      receive-pack: compilation fix\n      The third batch\n      The fourth batch\n      credential-store: document the file format a bit more\n      Revert \"commit-graph.c: introduce '--[no-]check-oids'\"\n      The fifth batch\n      The sixth batch\n      The seventh batch\n      auto-gc: extract a reusable helper from \"git fetch\"\n      auto-gc: pass --quiet down from am, commit, merge and rebase\n      CodingGuidelines: do not ==/!= compare with 0 or '\\0' or NULL\n      The eighth batch\n      The ninth batch\n      Git 2.27-rc0\n\nLi Xuejiang (1):\n      git-submodule.sh: setup uninitialized variables\n\nMartin Ågren (9):\n      Doc: drop support for docbook-xsl before 1.71.1\n      Doc: drop support for docbook-xsl before 1.72.0\n      Doc: drop support for docbook-xsl before 1.73.0\n      manpage-bold-literal.xsl: stop using git.docbook.backslash\n      manpage-normal.xsl: fold in manpage-base.xsl\n      INSTALL: drop support for docbook-xsl before 1.74\n      user-manual.conf: don't specify [listingblock]\n      config.txt: move closing \"----\" to cover entire listing\n      merge: use skip_prefix to parse config key\n\nMatheus Tavares (3):\n      test-lib: allow short options to be bundled\n      grep: follow conventions for printing paths w/ unusual chars\n      config doc: fix reference to config.worktree info\n\nMatthias Aßhauer (1):\n      mingw: use modern strftime implementation if possible\n\nMichael F. Schönitzer (1):\n      docs: fix minor glitch in illustration\n\nNathan Sanders (1):\n      mingw: cope with the Isilon network file system\n\nPatrick Steinhardt (9):\n      refs: fix segfault when aborting empty transaction\n      git-update-ref.txt: add missing word\n      strbuf: provide function to append whole lines\n      update-ref: organize commands in an array\n      update-ref: drop unused argument for `parse_refname`\n      update-ref: pass end pointer instead of strbuf\n      update-ref: move transaction handling into `update_refs_stdin()`\n      update-ref: read commands in a line-wise fashion\n      update-ref: implement interactive transaction handling\n\nPhilippe Blain (9):\n      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED\n      t/lib-submodule-update: remove outdated test description\n      t/lib-submodule-update: move a test to the right section\n      unpack-trees: remove outdated description for verify_clean_submodule\n      unpack-trees: check for missing submodule directory in merged_entry\n      t/lib-submodule-update: add test removing nested submodules\n      git-rebase.txt: fix typo\n      pull doc: refer to a specific section in 'fetch' doc\n      pull doc: correct outdated description of an example\n\nPhillip Wood (6):\n      t3404: use test_cmp_rev\n      cherry-pick: check commit error messages\n      sequencer: write CHERRY_PICK_HEAD for reword and edit\n      commit: use enum value for multiple cherry-picks\n      commit: encapsulate determine_whence() for sequencer\n      commit: give correct advice for empty commit during a rebase\n\nRené Scharfe (4):\n      pull: document more passthru options\n      pull: remove --update-head-ok from documentation\n      pull: pass documented fetch options on\n      fsck: report non-consecutive duplicate names in trees\n\nSZEDER Gábor (4):\n      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere\n      commit-slab: clarify slabname##_peek()'s return value\n      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job\n      completion: offer '--(no-)patch' among 'git log' options\n\nShourya Shukla (4):\n      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'\n      gitfaq: files in .gitignore are tracked\n      gitfaq: fetching and pulling a repository\n      submodule: port subcommand 'set-url' from shell to C\n\nSon Luong Ngoc (1):\n      midx: teach \"git multi-pack-index repack\" honor \"git repack\" configurations\n\nTaylor Blau (24):\n      t/helper/test-read-graph.c: support commit-graph chains\n      builtin/commit-graph.c: support for '--split[=<strategy>]'\n      builtin/commit-graph.c: introduce split strategy 'no-merge'\n      builtin/commit-graph.c: introduce split strategy 'replace'\n      oidset: introduce 'oidset_size'\n      commit-graph.h: replace 'commit_hex' with 'commits'\n      commit-graph.c: introduce '--[no-]check-oids'\n      diff-tree.c: load notes machinery when required\n      commit-graph.c: don't use discarded graph_name in error\n      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests\n      commit-graph.c: gracefully handle file descriptor exhaustion\n      t5537: use test_write_lines and indented heredocs for readability\n      shallow.c: use '{commit,rollback}_shallow_file'\n      tempfile.c: introduce 'create_tempfile_mode'\n      lockfile.c: introduce 'hold_lock_file_for_update_mode'\n      commit-graph.c: write non-split graphs as read-only\n      commit-graph.c: ensure graph layers respect core.sharedRepository\n      commit-graph.c: make 'commit-graph-chain's read-only\n      commit: make 'commit_graft_pos' non-static\n      shallow: extract a header file for shallow-related functions\n      shallow.h: document '{commit,rollback}_shallow_file'\n      shallow: use struct 'shallow_lock' for additional safety\n      pack-bitmap.c: make object filtering functions generic\n      pack-bitmap.c: support 'tree:0' filtering\n\nTerry Moschou (1):\n      complete: zsh: add missing sub cmd completion candidates\n\nThomas Gummerer (2):\n      stash: get git_stash_config at the top level\n      stash: remove the stash.useBuiltin setting\n\nVasil Dimov (2):\n      range-diff: fix a crash in parsing git-log output\n      range-diff: avoid negative string precision\n\nYang Zhao (12):\n      git-p4: make python2.7 the oldest supported version\n      git-p4: remove string type aliasing\n      git-p4: encode/decode communication with p4 for python3\n      git-p4: encode/decode communication with git for python3\n      git-p4: convert path to unicode before processing them\n      git-p4: open .gitp4-usercache.txt in text mode\n      git-p4: use marshal format version 2 when sending to p4\n      git-p4: fix freezing while waiting for fast-import progress\n      git-p4: use functools.reduce instead of reduce\n      git-p4: use dict.items() iteration for python3 compatibility\n      git-p4: simplify regex pattern generation for parsing diff-tree\n      git-p4: use python3's input() everywhere\n\nbrian m. carlson (34):\n      builtin/pack-objects: make hash agnostic\n      hash: implement and use a context cloning function\n      hex: introduce parsing variants taking hash algorithms\n      hex: add functions to parse hex object IDs in any algorithm\n      repository: require a build flag to use SHA-256\n      t: use hash-specific lookup tables to define test constants\n      t6300: abstract away SHA-1-specific constants\n      t6300: make hash algorithm independent\n      t/helper/test-dump-split-index: initialize git repository\n      t/helper: initialize repository if necessary\n      t/helper: make repository tests hash independent\n      setup: allow check_repository_format to read repository format\n      builtin/init-db: allow specifying hash algorithm on command line\n      builtin/init-db: add environment variable for new repo hash\n      init-db: move writing repo version into a function\n      worktree: allow repository version 1\n      commit: use expected signature header for SHA-256\n      fast-import: permit reading multiple marks files\n      fast-import: add helper function for inserting mark object entries\n      fast-import: make find_marks work on any mark set\n      fast-import: add a generic function to iterate over marks\n      fast-import: add options for rewriting submodules\n      builtin/checkout: pass branch info down to checkout_worktree\n      convert: permit passing additional metadata to filter processes\n      convert: provide additional metadata to filters\n      builtin/checkout: compute checkout metadata for checkouts\n      builtin/clone: compute checkout metadata for clones\n      builtin/rebase: compute checkout metadata for rebases\n      builtin/reset: compute checkout metadata for reset\n      t0021: test filter metadata for additional cases\n      docs: add a FAQ\n      builtin/receive-pack: use constant-time comparison for HMAC value\n      credential: fix matching URLs with multiple levels in path\n      docs: document credential.helper allowed values\n\nluciano.rocha@booking.com (1):\n      freshen_file(): use NULL `times' for implicit current-time\n\nĐoàn Trần Công Danh (34):\n      t4061: use POSIX compliant regex(7)\n      test-lib-functions: test_cmp: eval $GIT_TEST_CMP\n      t5003: drop the subshell in test_lazy_prereq\n      t5003: skip conversion test if unzip -a is unavailable\n      t5616: use rev-parse instead to get HEAD's object_id\n      t7063: drop non-POSIX argument \"-ls\" from find(1)\n      t4124: tweak test so that non-compliant diff(1) can also be used\n      t5703: feed raw data into test-tool unpack-sideband\n      rebase.c: honour --no-gpg-sign\n      cherry-pick/revert: honour --no-gpg-sign in all case\n      Documentation: document am --no-gpg-sign\n      Documentation: reword commit --no-gpg-sign\n      Documentation: merge commit-tree --[no-]gpg-sign\n      Documentation: document merge option --no-gpg-sign\n      ci/lib-docker: preserve required environment variables\n      ci/linux32: parameterise command to switch arch\n      ci: refactor docker runner script\n      ci/linux32: libify install-dependencies step\n      travis: build and test on Linux with musl libc and busybox\n      ci/lib: set TERM environment variable if not exist\n      ci: explicit install all required packages\n      ci: configure GitHub Actions for CI/PR\n      t4254: merge 2 steps of a single test\n      mailinfo.c: avoid strlen on strings that can contains NUL\n      mailinfo: disallow NUL character in mail's header\n      date.c: s/is_date/set_date/\n      date.c: validate and set time in a helper function\n      date.c: skip fractional second part of ISO-8601\n      date.c: allow compact version of ISO-8601 datetime\n      test-parse-pathspec-file.c: s/0/NULL/ for pointer type\n      compat/regex: move stdlib.h up in inclusion chain\n      graph.c: limit linkage of internal variable\n      progress.c: silence cgcc suggestion about internal linkage\n      bloom: fix `make sparse` warning\n\n마누엘 (1):\n      interactive: explicitly `fflush` stdout before expecting input\n\n"},{"id":"397876","messageId":"021601d62ac4$152ff770$3f8fe650$@nexbridge.com","threadId":"53474","inReplyTo":"xmqqy2punll7.fsf@gitster.c.googlers.com","subject":"RE: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Randall S. Becker","fromEmail":"rsbecker@nexbridge.com","sentAt":"2020-05-15T14:21:04Z","receivedAt":"2020-05-15T14:21:15Z","isPatch":false,"sender":{"key":"randall.becker@nexbridge.ca","avatar":"https://avatars.githubusercontent.com/u/28956764?v=4"},"body":"On May 14, 2020 7:28 PM, Junio wrote:\n> To: git@vger.kernel.org\n> Cc: Linux Kernel <linux-kernel@vger.kernel.org>; git-\n> packagers@googlegroups.com\n> Subject: [ANNOUNCE] Git v2.27.0-rc0\n> \n> An early preview release Git v2.27.0-rc0 is now available for\n> testing at the usual places.  It is comprised of 479 non-merge\n> commits since v2.26.0, contributed by 53 people, 16 of which are\n> new faces.\n\nThanks Junio. I am starting the HPE NonStop TNS/X test cycle and will let you know how it goes. Our TNS/E system is in the middle of being moved so I'll probably wait until the official release on that one.\n\nRegards,\nRandall\n\n-- Brief whoami:\n NonStop developer since approximately 211288444200000000\n UNIX developer since approximately 421664400\n MVS developer since (not admitting anything about this)\n-- In my real life, I talk too much.\n\n\n\n"},{"id":"397877","messageId":"xmqqlfltnt4f.fsf@gitster.c.googlers.com","threadId":"53474","inReplyTo":"021601d62ac4$152ff770$3f8fe650$@nexbridge.com","subject":"Re: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-05-15T14:57:20Z","receivedAt":"2020-05-15T14:57:27Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Randall S. Becker\" <rsbecker@nexbridge.com> writes:\n\n> .... I am starting the HPE NonStop TNS/X test cycle and\n> will let you know how it goes. Our TNS/E system is in the middle\n> of being moved so I'll probably wait until the official release on\n> that one.\n\nThanks.\n"},{"id":"398212","messageId":"CA+kUOanbgUPgCer-sBjX6YROYvZAhzBTUtCnFvuYP1EWvo3VEA@mail.gmail.com","threadId":"53474","inReplyTo":"xmqqy2punll7.fsf@gitster.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Adam Dinwoodie","fromEmail":"adam@dinwoodie.org","sentAt":"2020-05-19T19:10:37Z","receivedAt":"2020-05-19T19:11:15Z","isPatch":false,"sender":{"key":"adam@dinwoodie.org","avatar":"https://avatars.githubusercontent.com/u/1397507?v=4"},"body":"On Fri, 15 May 2020 at 00:27, Junio C Hamano wrote:\n>\n> An early preview release Git v2.27.0-rc0 is now available for\n> testing at the usual places.  It is comprised of 479 non-merge\n> commits since v2.26.0, contributed by 53 people, 16 of which are\n> new faces.\n>\n> <snip>\n>\n>       tests: when run in Bash, annotate test failures with file name/line number\n\nAt least on Cygwin, this breaks the test output parsing of failures\nwhen running with prove.\n\nCompare the expected behaviour, prior to this commit:\n\n~~~\n$ make -j17 && ( cd t && prove t4210-log-i18n.sh )\nGIT_VERSION = 2.26.0.131.g6081d3898f\n...\nt4210-log-i18n.sh .. Dubious, test returned 1 (wstat 256, 0x100)\nFailed 6/17 subtests\n        (less 3 skipped subtests: 8 okay)\n\nTest Summary Report\n-------------------\nt4210-log-i18n.sh (Wstat: 256 Tests: 17 Failed: 6)\n  Failed tests:  6, 8-9, 11-12, 14\n  Non-zero exit status: 1\nFiles=1, Tests=17,  3 wallclock secs ( 0.05 usr  0.02 sys +  0.77 cusr\n 1.80 csys =  2.63 CPU)\nResult: FAIL\n~~~\n\nwith the new behaviour as of this commit:\n\n~~~\n$ make -j17 && ( cd t && prove t4210-log-i18n.sh )\nGIT_VERSION = 2.26.0.132.g662f9cf154\n...\nt4210-log-i18n.sh .. Dubious, test returned 1 (wstat 256, 0x100)\nFailed 6/17 subtests\n        (less 3 skipped subtests: 8 okay)\n\nTest Summary Report\n-------------------\nt4210-log-i18n.sh (Wstat: 256 Tests: 11 Failed: 0)\n  Non-zero exit status: 1\n  Parse errors: Tests out of sequence.  Found (7) but expected (6)\n                Tests out of sequence.  Found (10) but expected (7)\n                Tests out of sequence.  Found (13) but expected (8)\n                Tests out of sequence.  Found (15) but expected (9)\n                Tests out of sequence.  Found (16) but expected (10)\nDisplayed the first 5 of 7 TAP syntax errors.\nRe-run prove with the -p option to see them all.\nFiles=1, Tests=11,  3 wallclock secs ( 0.02 usr  0.03 sys +  0.74 cusr\n 1.83 csys =  2.62 CPU)\nResult: FAIL\n~~~\n"},{"id":"398225","messageId":"xmqqwo57y0i5.fsf@gitster.c.googlers.com","threadId":"53474","inReplyTo":"CA+kUOanbgUPgCer-sBjX6YROYvZAhzBTUtCnFvuYP1EWvo3VEA@mail.gmail.com","subject":"Re: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-05-19T23:21:22Z","receivedAt":"2020-05-19T23:21:41Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Adam Dinwoodie <adam@dinwoodie.org> writes:\n\n>>       tests: when run in Bash, annotate test failures with file name/line number\n>\n> At least on Cygwin, this breaks the test output parsing of failures\n> when running with prove.\n\nWe'll revert this problematic topic out (which hasn't happened yet),\nwhich I hopefully will be able to merge to 'master' before tagging\nthe -rc1 release candidate.\n\nIf possible, could you test the result of merging e31600b0 (Revert\n\"tests: when run in Bash, annotate test failures with file name/line\nnumber\", 2020-05-15) into 'master'?\n\nThanks.\n"},{"id":"398250","messageId":"CA+kUOam31cLNftUx6rGz=bdpjo5Dqv_ahJ6jUnD8OGq6P6Ra3w@mail.gmail.com","threadId":"53474","inReplyTo":"xmqqwo57y0i5.fsf@gitster.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Adam Dinwoodie","fromEmail":"adam@dinwoodie.org","sentAt":"2020-05-20T14:14:17Z","receivedAt":"2020-05-20T14:14:56Z","isPatch":false,"sender":{"key":"adam@dinwoodie.org","avatar":"https://avatars.githubusercontent.com/u/1397507?v=4"},"body":"On Wed, 20 May 2020 at 00:21, Junio C Hamano <gitster@pobox.com> wrote:\n> Adam Dinwoodie <adam@dinwoodie.org> writes:\n>\n> >>       tests: when run in Bash, annotate test failures with file name/line number\n> >\n> > At least on Cygwin, this breaks the test output parsing of failures\n> > when running with prove.\n>\n> We'll revert this problematic topic out (which hasn't happened yet),\n> which I hopefully will be able to merge to 'master' before tagging\n> the -rc1 release candidate.\n>\n> If possible, could you test the result of merging e31600b0 (Revert\n> \"tests: when run in Bash, annotate test failures with file name/line\n> number\", 2020-05-15) into 'master'?\n\nI get a merge conflict due to 303775a25f (\"t/test_lib: avoid naked\nbash arrays in file_lineno\", 2020-05-07), but resolving that in the\nobvious fashion and the test summaries are working as expected again.\n"},{"id":"398254","messageId":"xmqq8shmy8n2.fsf@gitster.c.googlers.com","threadId":"53474","inReplyTo":"CA+kUOam31cLNftUx6rGz=bdpjo5Dqv_ahJ6jUnD8OGq6P6Ra3w@mail.gmail.com","subject":"Re: [ANNOUNCE] Git v2.27.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-05-20T14:37:53Z","receivedAt":"2020-05-20T14:38:01Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Adam Dinwoodie <adam@dinwoodie.org> writes:\n\n> On Wed, 20 May 2020 at 00:21, Junio C Hamano <gitster@pobox.com> wrote:\n>> Adam Dinwoodie <adam@dinwoodie.org> writes:\n>>\n>> >>       tests: when run in Bash, annotate test failures with file name/line number\n>> >\n>> > At least on Cygwin, this breaks the test output parsing of failures\n>> > when running with prove.\n>>\n>> We'll revert this problematic topic out (which hasn't happened yet),\n>> which I hopefully will be able to merge to 'master' before tagging\n>> the -rc1 release candidate.\n>>\n>> If possible, could you test the result of merging e31600b0 (Revert\n>> \"tests: when run in Bash, annotate test failures with file name/line\n>> number\", 2020-05-15) into 'master'?\n>\n> I get a merge conflict due to 303775a25f (\"t/test_lib: avoid naked\n> bash arrays in file_lineno\", 2020-05-07), but resolving that in the\n> obvious fashion and the test summaries are working as expected again.\n\nWonderful.  Thanks.\n"}]}