{"thread":{"id":"49845","subject":"[ANNOUNCE] Git v2.20.0-rc0","startedAt":"2018-11-18T14:20:32Z","lastAt":"2018-11-22T17:26:18Z","messageCount":8,"participants":["Junio C Hamano","Johannes Schindelin","Bryan Turner","Jeff King","stefan.naewe@atlas-elektronik.com"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"363578","messageId":"xmqqh8gefowy.fsf@gitster-ct.c.googlers.com","threadId":"49845","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.20.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-11-18T14:20:13Z","receivedAt":"2018-11-18T14:20:32Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"An early preview release Git v2.20.0-rc0 is now available for\ntesting at the usual places.  It is comprised of 887 non-merge\ncommits since v2.19.0, contributed by 71 people, 23 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.20.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.19.0 are as follows.\nWelcome to the Git development community!\n\n  Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan\n  Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David\n  Zych, Frederick Eaton, James Knight, Jann Horn, Joshua Watt,\n  Loo Rong Jie, Lucas De Marchi, Matthew DeVore, Mihir Mehta,\n  Nickolai Belakovski, Roger Strain, Sam McKelvie, Saulius Gurklys,\n  Shulhan, Steven Fernandez, Strain, Roger L, and Tim Schumacher.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,\n  Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,\n  brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,\n  Derrick Stolee, Elijah Newren, Eric Sunshine, Jeff Hostetler,\n  Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,\n  Jonathan Tan, Josh Steadmon, Junio C Hamano, Karsten Blees,\n  Luke Diamand, Martin Ågren, Max Kirillov, Michael Witten,\n  Michał Górny, Nguyễn Thái Ngọc Duy, Noam Postavsky,\n  Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael Ascensão,\n  Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René Scharfe,\n  Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve Hoelzer,\n  SZEDER Gábor, Tao Qingyun, Taylor Blau, Thomas Gummerer,\n  Torsten Bögershausen, and Uwe Kleine-König.\n\n----------------------------------------------------------------\n\nGit Release Notes\n=========================\n\nBackward Compatibility Notes\n----------------------------\n\n * \"git branch -l <foo>\" used to be a way to ask a reflog to be\n   created while creating a new branch, but that is no longer the\n   case.  It is a short-hand for \"git branch --list <foo>\" now.\n\n * \"git push\" into refs/tags/* hierarchy is rejected without getting\n   forced, but \"git fetch\" (misguidedly) used the \"fast forwarding\"\n   rule used for the refs/heads/* hierarchy; this has been corrected,\n   which means some fetches of tags that did not fail with older\n   version of Git will fail without \"--force\" with this version.\n\n * \"git help -a\" now gives verbose output (same as \"git help -av\").\n   Those who want the old output may say \"git help --no-verbose -a\"..\n\n * \"git cpn --help\", when \"cpn\" is an alias to, say, \"cherry-pick -n\",\n   reported only the alias expansion of \"cpn\" in earlier versions of\n   Git.  It now runs \"git cherry-pick --help\" to show the manual page\n   of the command, while sending the alias expansion to the standard\n   error stream.\n\n * \"git send-email\" learned to grab address-looking string on any\n   trailer whose name ends with \"-by\". This is a backward-incompatible\n   change.  Adding \"--suppress-cc=misc-by\" on the command line, or\n   setting sendemail.suppresscc configuration variable to \"misc-by\",\n   can be used to disable this behaviour.\n\n\nUpdates since v2.19\n-------------------\n\nUI, Workflows & Features\n\n * Running \"git clone\" against a project that contain two files with\n   pathnames that differ only in cases on a case insensitive\n   filesystem would result in one of the files lost because the\n   underlying filesystem is incapable of holding both at the same\n   time.  An attempt is made to detect such a case and warn.\n\n * \"git checkout -b newbranch [HEAD]\" should not have to do as much as\n   checking out a commit different from HEAD.  An attempt is made to\n   optimize this special case.\n\n * \"git rev-list --stdin </dev/null\" used to be an error; it now shows\n   no output without an error.  \"git rev-list --stdin --default HEAD\"\n   still falls back to the given default when nothing is given on the\n   standard input.\n\n * Lift code from GitHub to restrict delta computation so that an\n   object that exists in one fork is not made into a delta against\n   another object that does not appear in the same forked repository.\n\n * \"git format-patch\" learned new \"--interdiff\" and \"--range-diff\"\n   options to explain the difference between this version and the\n   previous attempt in the cover letter (or after the three-dashes as\n   a comment).\n\n * \"git mailinfo\" used in \"git am\" learned to make a best-effort\n   recovery of a patch corrupted by MUA that sends text/plain with\n   format=flawed option.\n   (merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).\n\n * The rules used by \"git push\" and \"git fetch\" to determine if a ref\n   can or cannot be updated were inconsistent; specifically, fetching\n   to update existing tags were allowed even though tags are supposed\n   to be unmoving anchoring points.  \"git fetch\" was taught to forbid\n   updates to existing tags without the \"--force\" option.\n\n * \"git multi-pack-index\" learned to detect corruption in the .midx\n   file it uses, and this feature has been integrated into \"git fsck\".\n\n * Generation of (experimental) commit-graph files have so far been\n   fairly silent, even though it takes noticeable amount of time in a\n   meaningfully large repository.  The users will now see progress\n   output.\n\n * The minimum version of Windows supported by Windows port of Git is\n   now set to Vista.\n\n * The completion script (in contrib/) learned to complete a handful of\n   options \"git stash list\" command takes.\n\n * The completion script (in contrib/) learned that \"git fetch\n   --multiple\" only takes remote names as arguments and no refspecs.\n\n * \"git status\" learns to show progress bar when refreshing the index\n   takes a long time.\n   (merge ae9af12287 nd/status-refresh-progress later to maint).\n\n * \"git help -a\" and \"git help -av\" give different pieces of\n   information, and generally the \"verbose\" version is more friendly\n   to the new users.  \"git help -a\" by default now uses the more\n   verbose output (with \"--no-verbose\", you can go back to the\n   original).  Also \"git help -av\" now lists aliases and external\n   commands, which it did not used to.\n\n * Unlike \"grep\", \"git grep\" by default recurses to the whole tree.\n   The command learned \"git grep --recursive\" option, so that \"git\n   grep --no-recursive\" can serve as a synonym to setting the\n   max-depth to 0.\n\n * When pushing into a repository that borrows its objects from an\n   alternate object store, \"git receive-pack\" that responds to the\n   push request on the other side lists the tips of refs in the\n   alternate to reduce the amount of objects transferred.  This\n   sometimes is detrimental when the number of refs in the alternate\n   is absurdly large, in which case the bandwidth saved in potentially\n   fewer objects transferred is wasted in excessively large ref\n   advertisement.  The alternate refs that are advertised are now\n   configurable with a pair of configuration variables.\n\n * \"git cmd --help\" when \"cmd\" is aliased used to only say \"cmd is\n   aliased to ...\".  Now it shows that to the standard error stream\n   and runs \"git $cmd --help\" where $cmd is the first word of the\n   alias expansion.\n\n * The documentation of \"git gc\" has been updated to mention that it\n   is no longer limited to \"pruning away crufts\" but also updates\n   ancillary files like commit-graph as a part of repository\n   optimization.\n\n * \"git p4 unshelve\" improvements.\n\n * The logic to select the default user name and e-mail on Windows has\n   been improved.\n   (merge 501afcb8b0 js/mingw-default-ident later to maint).\n\n * The \"rev-list --filter\" feature learned to exclude all trees via\n   \"tree:0\" filter.\n\n * \"git send-email\" learned to grab address-looking string on any\n   trailer whose name ends with \"-by\"; --suppress-cc=misc-by on the\n   command line, or setting sendemail.suppresscc configuration\n   variable to \"misc-by\", can be used to disable this behaviour.\n\n * Developer builds now uses -Wunused-function compilation option.\n\n * One of our CI tests to run with \"unusual/experimental/random\"\n   settings now also uses commit-graph and midx.\n\n * \"git mergetool\" learned to take the \"--[no-]gui\" option, just like\n   \"git difftool\" does.\n\n * \"git rebase -i\" learned a new insn, 'break', that the user can\n   insert in the to-do list.  Upon hitting it, the command returns\n   control back to the user.\n\n * New \"--pretty=format:\" placeholders %GF and %GP that show the GPG\n   key fingerprints have been invented.\n\n * On platforms with recent cURL library, http.sslBackend configuration\n   variable can be used to choose a different SSL backend at runtime.\n   The Windows port uses this mechanism to switch between OpenSSL and\n   Secure Channel while talking over the HTTPS protocol.\n\n * \"git send-email\" learned to disable SMTP authentication via the\n   \"--smtp-auth=none\" option, even when the smtp username is given\n   (which turns the authentication on by default).\n\n * A fourth class of configuration files (in addition to the\n   traditional \"system wide\", \"per user in the $HOME directory\" and\n   \"per repository in the $GIT_DIR/config\") has been introduced so\n   that different worktrees that share the same repository (hence the\n   same $GIT_DIR/config file) can use different customization.\n\n * A pattern with '**' that does not have a slash on either side used\n   to be an invalid one, but the code now treats such double-asterisks\n   the same way as two normal asterisks that happen to be adjacent to\n   each other.\n   (merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).\n\n * The \"--no-patch\" option, which can be used to get a high-level\n   overview without the actual line-by-line patch difference shown, of\n   the \"range-diff\" command was earlier broken, which has been\n   corrected.\n\n * The recently merged \"rebase in C\" has an escape hatch to use the\n   scripted version when necessary, but it hasn't been documented,\n   which has been corrected.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * When there are too many packfiles in a repository (which is not\n   recommended), looking up an object in these would require\n   consulting many pack .idx files; a new mechanism to have a single\n   file that consolidates all of these .idx files is introduced.\n\n * \"git submodule update\" is getting rewritten piece-by-piece into C.\n\n * The code for computing history reachability has been shuffled,\n   obtained a bunch of new tests to cover them, and then being\n   improved.\n\n * The unpack_trees() API used in checking out a branch and merging\n   walks one or more trees along with the index.  When the cache-tree\n   in the index tells us that we are walking a tree whose flattened\n   contents is known (i.e. matches a span in the index), as linearly\n   scanning a span in the index is much more efficient than having to\n   open tree objects recursively and listing their entries, the walk\n   can be optimized, which has been done.\n\n * When creating a thin pack, which allows objects to be made into a\n   delta against another object that is not in the resulting pack but\n   is known to be present on the receiving end, the code learned to\n   take advantage of the reachability bitmap; this allows the server\n   to send a delta against a base beyond the \"boundary\" commit.\n\n * spatch transformation to replace boolean uses of !hashcmp() to\n   newly introduced oideq() is added, and applied, to regain\n   performance lost due to support of multiple hash algorithms.\n\n * Fix a bug in which the same path could be registered under multiple\n   worktree entries if the path was missing (for instance, was removed\n   manually).  Also, as a convenience, expand the number of cases in\n   which --force is applicable.\n\n * Split Documentation/config.txt for easier maintenance.\n   (merge 6014363f0b nd/config-split later to maint).\n\n * Test helper binaries clean-up.\n   (merge c9a1f4161f nd/test-tool later to maint).\n\n * Various tests have been updated to make it easier to swap the\n   hash function used for object identification.\n   (merge ae0c89d41b bc/hash-independent-tests later to maint).\n\n * Update fsck.skipList implementation and documentation.\n   (merge 371a655074 ab/fsck-skiplist later to maint).\n\n * An alias that expands to another alias has so far been forbidden,\n   but now it is allowed to create such an alias.\n\n * Various test scripts have been updated for style and also correct\n   handling of exit status of various commands.\n\n * \"gc --auto\" ended up calling exit(-1) upon error, which has been\n   corrected to use exit(1).  Also the error reporting behaviour when\n   daemonized has been updated to exit with zero status when stopping\n   due to a previously discovered error (which implies there is no\n   point running gc to improve the situation); we used to exit with\n   failure in such a case.\n\n * Various codepaths in the core-ish part learned to work on an\n   arbitrary in-core index structure, not necessarily the default\n   instance \"the_index\".\n   (merge b3c7eef9b0 nd/the-index later to maint).\n\n * Code clean-up in the internal machinery used by \"git status\" and\n   \"git commit --dry-run\".\n   (merge 73ba5d78b4 ss/wt-status-committable later to maint).\n\n * Some environment variables that control the runtime options of Git\n   used during tests are getting renamed for consistency.\n   (merge 4231d1ba99 bp/rename-test-env-var later to maint).\n\n * A new extension to the index file has been introduced, which allows\n   the index file to be read in parallel for performance.\n\n * The oidset API was built on top of the oidmap API which in turn is\n   on the hashmap API.  Replace the implementation to build on top of\n   the khash API and gain performance.\n\n * Over some transports, fetching objects with an exact commit object\n   name can be done without first seeing the ref advertisements.  The\n   code has been optimized to exploit this.\n\n * In a partial clone that will lazily be hydrated from the\n   originating repository, we generally want to avoid \"does this\n   object exist (locally)?\" on objects that we deliberately omitted\n   when we created the clone.  The cache-tree codepath (which is used\n   to write a tree object out of the index) however insisted that the\n   object exists, even for paths that are outside of the partial\n   checkout area.  The code has been updated to avoid such a check.\n\n * To help developers, an EditorConfig file that attempts to follow\n   the project convention has been added.\n   (merge b548d698a0 bc/editorconfig later to maint).\n\n * The result of coverage test can be combined with \"git blame\" to\n   check the test coverage of code introduced recently with a new\n   'coverage-diff' tool (in contrib/).\n   (merge 783faedd65 ds/coverage-diff later to maint).\n\n * An experiment to fuzz test a few areas, hopefully we can gain more\n   coverage to various areas.\n\n * More codepaths are moving away from hardcoded hash sizes.\n\n * The way the Windows port figures out the current directory has been\n   improved.\n\n * The way DLLs are loaded on the Windows port has been improved.\n\n * Some tests have been reorganized and renamed; \"ls t/\" now gives a\n   better overview of what is tested for these scripts than before.\n\n * \"git rebase\" and \"git rebase -i\" have been reimplemented in C.\n\n * Windows port learned to use nano-second resolution file timestamps.\n\n * The overly large Documentation/config.txt file have been split into\n   million little pieces.  This potentially allows each individual piece\n   included into the manual page of the command it affects more easily.\n\n * Replace three string-list instances used as look-up tables in \"git\n   fetch\" with hashmaps.\n\n * Unify code to read the author-script used in \"git am\" and the\n   commands that use the sequencer machinery, e.g. \"git rebase -i\".\n\n * In preparation to the day when we can deprecate and remove the\n   \"rebase -p\", make sure we can skip and later remove tests for\n   it.\n\n * The history traversal used to implement the tag-following has been\n   optimized by introducing a new helper.\n\n * The helper function to refresh the cached stat information in the\n   in-core index has learned to perform the lstat() part of the\n   operation in parallel on multi-core platforms.\n\n * The code to traverse objects for reachability, used to decide what\n   objects are unreferenced and expendable, have been taught to also\n   consider per-worktree refs of other worktrees as starting points to\n   prevent data loss.\n\n * \"git add\" needs to internally run \"diff-files\" equivalent, and the\n   codepath learned the same optimization as \"diff-files\" has to run\n   lstat(2) in parallel to find which paths have been updated in the\n   working tree.\n\n * The procedure to install dependencies before testing at Travis CI\n   is getting revamped for both simplicity and flexibility, taking\n   advantage of the recent move to the vm-based environment.\n\n * The support for format-patch (and send-email) by the command-line\n   completion script (in contrib/) has been simplified a bit.\n\n * The revision walker machinery learned to take advantage of the\n   commit generation numbers stored in the commit-graph file.\n\n * The codebase has been cleaned up to reduce \"#ifndef NO_PTHREADS\".\n\n * The way -lcurl library gets linked has been simplified by taking\n   advantage of the fact that we can just ask curl-config command how.\n\n * Various functions have been audited for \"-Wunused-parameter\" warnings\n   and bugs in them got fixed.\n\n * A sanity check for start-up sequence has been added in the config\n   API codepath.\n\n * The build procedure to link for fuzzing test has been made\n   customizable with a new Makefile variable.\n\n * The way \"git rebase\" parses and forwards the command line options\n   meant for underlying \"git am\" has been revamped, which fixed for\n   options with parameters that were not passed correctly.\n\n\nFixes since v2.19\n-----------------\n\n * \"git interpret-trailers\" and its underlying machinery had a buggy\n   code that attempted to ignore patch text after commit log message,\n   which triggered in various codepaths that will always get the log\n   message alone and never get such an input.\n   (merge 66e83d9b41 jk/trailer-fixes later to maint).\n\n * Malformed or crafted data in packstream can make our code attempt\n   to read or write past the allocated buffer and abort, instead of\n   reporting an error, which has been fixed.\n\n * \"git rebase -i\" did not clear the state files correctly when a run\n   of \"squash/fixup\" is aborted and then the user manually amended the\n   commit instead, which has been corrected.\n   (merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).\n\n * When fsmonitor is in use, after operation on submodules updates\n   .gitmodules, we lost track of the fact that we did so and relied on\n   stale fsmonitor data.\n   (merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).\n\n * Fix for a long-standing bug that leaves the index file corrupt when\n   it shrinks during a partial commit.\n   (merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).\n\n * Further fix for O_APPEND emulation on Windows\n   (merge eeaf7ddac7 js/mingw-o-append later to maint).\n\n * A corner case bugfix in \"git rerere\" code.\n   (merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).\n\n * \"git add ':(attr:foo)'\" is not supported and is supposed to be\n   rejected while the command line arguments are parsed, but we fail\n   to reject such a command line upfront.\n   (merge 84d938b732 nd/attr-pathspec-fix later to maint).\n\n * Recent update broke the reachability algorithm when refs (e.g.\n   tags) that point at objects that are not commit were involved,\n   which has been fixed.\n\n * \"git rebase\" etc. in Git 2.19 fails to abort when given an empty\n   commit log message as result of editing, which has been corrected.\n   (merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).\n\n * The code to backfill objects in lazily cloned repository did not\n   work correctly, which has been corrected.\n   (merge e68302011c jt/lazy-object-fetch-fix later to maint).\n\n * Update error messages given by \"git remote\" and make them consistent.\n   (merge 5025425dff ms/remote-error-message-update later to maint).\n\n * \"git update-ref\" learned to make both \"--no-deref\" and \"--stdin\"\n   work at the same time.\n   (merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).\n\n * Recently added \"range-diff\" had a corner-case bug to cause it\n   segfault, which has been corrected.\n   (merge e467a90c7a tg/range-diff-corner-case-fix later to maint).\n\n * The recently introduced commit-graph auxiliary data is incompatible\n   with mechanisms such as replace & grafts that \"breaks\" immutable\n   nature of the object reference relationship.  Disable optimizations\n   based on its use (and updating existing commit-graph) when these\n   incompatible features are in use in the repository.\n   (merge 829a321569 ds/commit-graph-with-grafts later to maint).\n\n * The mailmap file update.\n   (merge 255eb03edf jn/mailmap-update later to maint).\n\n * The code in \"git status\" sometimes hit an assertion failure.  This\n   was caused by a structure that was reused without cleaning the data\n   used for the first run, which has been corrected.\n   (merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).\n\n * \"git fetch $repo $object\" in a partial clone did not correctly\n   fetch the asked-for object that is referenced by an object in\n   promisor packfile, which has been fixed.\n\n * A corner-case bugfix.\n   (merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).\n\n * Various fixes to \"diff --color-moved-ws\".\n\n * A partial clone that is configured to lazily fetch missing objects\n   will on-demand issue a \"git fetch\" request to the originating\n   repository to fill not-yet-obtained objects.  The request has been\n   optimized for requesting a tree object (and not the leaf blob\n   objects contained in it) by telling the originating repository that\n   no blobs are needed.\n   (merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).\n\n * The codepath to support the experimental split-index mode had\n   remaining \"racily clean\" issues fixed.\n   (merge 4c490f3d32 sg/split-index-racefix later to maint).\n\n * \"git log --graph\" showing an octopus merge sometimes miscounted the\n   number of display columns it is consuming to show the merge and its\n   parent commits, which has been corrected.\n   (merge 04005834ed np/log-graph-octopus-fix later to maint).\n\n * \"git range-diff\" did not work well when the compared ranges had\n   changes in submodules and the \"--submodule=log\" was used.\n\n * The implementation of run_command() API on the UNIX platforms had a\n   bug that caused a command not on $PATH to be found in the current\n   directory.\n   (merge f67b980771 jk/run-command-notdot later to maint).\n\n * A mutex used in \"git pack-objects\" were not correctly initialized\n   and this caused \"git repack\" to dump core on Windows.\n   (merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).\n\n * Under certain circumstances, \"git diff D:/a/b/c D:/a/b/d\" on\n   Windows would strip initial parts from the paths because they\n   were not recognized as absolute, which has been corrected.\n   (merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).\n\n * The receive.denyCurrentBranch=updateInstead codepath kicked in even\n   when the push should have been rejected due to other reasons, such\n   as it does not fast-forward or the update-hook rejects it, which\n   has been corrected.\n   (merge b072a25fad jc/receive-deny-current-branch-fix later to maint).\n\n * The logic to determine the archive type \"git archive\" uses did not\n   correctly kick in for \"git archive --remote\", which has been\n   corrected.\n\n * \"git repack\" in a shallow clone did not correctly update the\n   shallow points in the repository, leading to a repository that\n   does not pass fsck.\n   (merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).\n\n * Some codepaths failed to form a proper URL when .gitmodules record\n   the URL to a submodule repository as relative to the repository of\n   superproject, which has been corrected.\n   (merge e0a862fdaf sb/submodule-url-to-absolute later to maint).\n\n * \"git fetch\" over protocol v2 into a shallow repository failed to\n   fetch full history behind a new tip of history that was diverged\n   before the cut-off point of the history that was previously fetched\n   shallowly.\n\n * The command line completion machinery (in contrib/) has been\n   updated to allow the completion script to tweak the list of options\n   that are reported by the parse-options machinery correctly.\n   (merge 276b49ff34 nd/completion-negation later to maint).\n\n * Operations on promisor objects make sense in the context of only a\n   small subset of the commands that internally use the revisions\n   machinery, but the \"--exclude-promisor-objects\" option were taken\n   and led to nonsense results by commands like \"log\", to which it\n   didn't make much sense.  This has been corrected.\n   (merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).\n\n * The \"container\" mode of TravisCI is going away.  Our .travis.yml\n   file is getting prepared for the transition.\n   (merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).\n\n * Our test scripts can now take the '-V' option as a synonym for the\n   '--verbose-log' option.\n   (merge a5f52c6dab sg/test-verbose-log later to maint).\n\n * A regression in Git 2.12 era made \"git fsck\" fall into an infinite\n   loop while processing truncated loose objects.\n   (merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).\n\n * \"git ls-remote $there foo\" was broken by recent update for the\n   protocol v2 and stopped showing refs that match 'foo' that are not\n   refs/{heads,tags}/foo, which has been fixed.\n   (merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).\n\n * Additional comment on a tricky piece of code to help developers.\n   (merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).\n\n * A couple of tests used to leave the repository in a state that is\n   deliberately corrupt, which have been corrected.\n   (merge aa984dbe5e ab/pack-tests-cleanup later to maint).\n\n * The submodule support has been updated to read from the blob at\n   HEAD:.gitmodules when the .gitmodules file is missing from the\n   working tree.\n   (merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).\n\n * \"git fetch\" was a bit loose in parsing responses from the other side\n   when talking over the protocol v2.\n\n * \"git rev-parse --exclude=* --branches --branches\"  (i.e. first\n   saying \"add only things that do not match '*' out of all branches\"\n   and then adding all branches, without any exclusion this time\")\n   worked as expected, but \"--exclude=* --all --all\" did not work the\n   same way, which has been fixed.\n   (merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).\n\n * \"git send-email --transfer-encoding=...\" in recent versions of Git\n   sometimes produced an empty \"Content-Transfer-Encoding:\" header,\n   which has been corrected.\n   (merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).\n\n * The interface into \"xdiff\" library used to discover the offset and\n   size of a generated patch hunk by first formatting it into the\n   textual hunk header \"@@ -n,m +k,l @@\" and then parsing the numbers\n   out.  A new interface has been introduced to allow callers a more\n   direct access to them.\n   (merge 5eade0746e jk/xdiff-interface later to maint).\n\n * Pathspec matching against a tree object were buggy when negative\n   pathspec elements were involved, which has been fixed.\n   (merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).\n\n * \"git merge\" and \"git pull\" that merges into an unborn branch used\n   to completely ignore \"--verify-signatures\", which has been\n   corrected.\n   (merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).\n\n * \"git rebase --autostash\" did not correctly re-attach the HEAD at times.\n\n * \"rev-parse --exclude=<pattern> --branches=<pattern>\" etc. did not\n   quite work, which has been corrected.\n   (merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).\n\n * When editing a patch in a \"git add -i\" session, a hunk could be\n   made to no-op.  The \"git apply\" program used to reject a patch with\n   such a no-op hunk to catch user mistakes, but it is now updated to\n   explicitly allow a no-op hunk in an edited patch.\n   (merge 22cb3835b9 js/apply-recount-allow-noop later to maint).\n\n * The URL to an MSDN page in a comment has been updated.\n   (merge 2ef2ae2917 js/mingw-msdn-url later to maint).\n\n * \"git ls-remote --sort=<thing>\" can feed an object that is not yet\n   available into the comparison machinery and segfault, which has\n   been corrected to check such a request upfront and reject it.\n\n * When \"git bundle\" aborts due to an empty commit ranges\n   (i.e. resulting in an empty pack), it left a file descriptor to an\n   lockfile open, which resulted in leftover lockfile on Windows where\n   you cannot remove a file with an open file descriptor.  This has\n   been corrected.\n   (merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).\n\n * Code cleanup, docfix, build fix, etc.\n   (merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).\n   (merge b9b07efdb2 tg/conflict-marker-size later to maint).\n   (merge fa0aeea770 sg/doc-trace-appends later to maint).\n   (merge d64324cb60 tb/void-check-attr later to maint).\n   (merge c3b9bc94b9 en/double-semicolon-fix later to maint).\n   (merge 79336116f5 sg/t3701-tighten-trace later to maint).\n   (merge 801fa63a90 jk/dev-build-format-security later to maint).\n   (merge 0597dd62ba sb/string-list-remove-unused later to maint).\n   (merge db2d36fad8 bw/protocol-v2 later to maint).\n   (merge 456d7cd3a9 sg/split-index-test later to maint).\n   (merge 7b6057c852 tq/refs-internal-comment-fix later to maint).\n   (merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).\n   (merge 55f6bce2c9 fe/doc-updates later to maint).\n   (merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).\n   (merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).\n   (merge 4c399442f7 ma/commit-graph-docs later to maint).\n   (merge fc0503b04e ma/t1400-undebug-test later to maint).\n   (merge e56b53553a nd/packobjectshook-doc-fix later to maint).\n   (merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).\n   (merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).\n   (merge ad0b8f9575 mw/doc-typofixes later to maint).\n   (merge d9f079ad1a jc/how-to-document-api later to maint).\n   (merge b1492bf315 ma/t7005-bash-workaround later to maint).\n   (merge ac1f98a0df du/rev-parse-is-plumbing later to maint).\n   (merge ca8ed443a5 mm/doc-no-dashed-git later to maint).\n   (merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).\n   (merge 61018fe9e0 du/cherry-is-plumbing later to maint).\n   (merge c7e5fe79b9 sb/strbuf-h-update later to maint).\n   (merge 8d2008196b tq/branch-create-wo-branch-get later to maint).\n   (merge 2e3c894f4b tq/branch-style-fix later to maint).\n   (merge c5d844af9c sg/doc-show-branch-typofix later to maint).\n   (merge 081d91618b ah/doc-updates later to maint).\n   (merge b84c783882 jc/cocci-preincr later to maint).\n   (merge 5e495f8122 uk/merge-subtree-doc-update later to maint).\n   (merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).\n   (merge 3063477445 tb/char-may-be-unsigned later to maint).\n   (merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).\n   (merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).\n   (merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.19.0 are as follows:\n\nAaron Lindsay (1):\n      send-email: avoid empty transfer encoding header\n\nAlban Gruin (21):\n      sequencer: make three functions and an enum from sequencer.c public\n      rebase -i: rewrite append_todo_help() in C\n      editor: add a function to launch the sequence editor\n      rebase -i: rewrite the edit-todo functionality in C\n      sequencer: add a new function to silence a command, except if it fails\n      rebase -i: rewrite setup_reflog_action() in C\n      rebase -i: rewrite checkout_onto() in C\n      sequencer: refactor append_todo_help() to write its message to a buffer\n      sequencer: change the way skip_unnecessary_picks() returns its result\n      t3404: todo list with commented-out commands only aborts\n      rebase -i: rewrite complete_action() in C\n      rebase -i: remove unused modes and functions\n      rebase -i: implement the logic to initialize $revisions in C\n      rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C\n      rebase -i: rewrite write_basic_state() in C\n      rebase -i: rewrite init_basic_state() in C\n      rebase -i: implement the main part of interactive rebase as a builtin\n      rebase--interactive2: rewrite the submodes of interactive rebase in C\n      rebase -i: remove git-rebase--interactive.sh\n      rebase -i: move rebase--helper modes to rebase--interactive\n      p3400: replace calls to `git checkout -b' by `git checkout -B'\n\nAlexander Pyhalov (1):\n      t7005-editor: quote filename to fix whitespace-issue\n\nAndreas Gruenbacher (1):\n      rev-parse: clear --exclude list after 'git rev-parse --all'\n\nAndreas Heiduk (6):\n      doc: clarify boundaries of 'git worktree list --porcelain'\n      doc: fix ASCII art tab spacing\n      doc: fix inappropriate monospace formatting\n      doc: fix descripion for 'git tag --format'\n      doc: fix indentation of listing blocks in gitweb.conf.txt\n      doc: fix formatting in git-update-ref\n\nAnton Serbulov (1):\n      mingw: fix getcwd when the parent directory cannot be queried\n\nAntonio Ospite (10):\n      submodule: add a print_config_from_gitmodules() helper\n      submodule: factor out a config_set_in_gitmodules_file_gently function\n      t7411: merge tests 5 and 6\n      t7411: be nicer to future tests and really clean things up\n      submodule--helper: add a new 'config' subcommand\n      submodule: use the 'submodule--helper config' command\n      t7506: clean up .gitmodules properly before setting up new scenario\n      submodule: add a helper to check if it is safe to write to .gitmodules\n      submodule: support reading .gitmodules when it's not in the working tree\n      t/helper: add test-submodule-nested-repo-config\n\nBen Peart (19):\n      checkout: optimize \"git checkout -b <new_branch>\"\n      git-mv: allow submodules and fsmonitor to work together\n      t/README: correct spelling of \"uncommon\"\n      preload-index: use git_env_bool() not getenv() for customization\n      fsmonitor: update GIT_TEST_FSMONITOR support\n      read-cache: update TEST_GIT_INDEX_VERSION support\n      preload-index: update GIT_FORCE_PRELOAD_TEST support\n      read-cache: clean up casting and byte decoding\n      eoie: add End of Index Entry (EOIE) extension\n      config: add new index.threads config setting\n      read-cache: load cache extensions on a worker thread\n      ieot: add Index Entry Offset Table (IEOT) extension\n      read-cache: load cache entries on worker threads\n      reset: don't compute unstaged changes after reset when --quiet\n      reset: add new reset.quiet config setting\n      reset: warn when refresh_index() takes more than 2 seconds\n      speed up refresh_index() by utilizing preload_index()\n      add: speed up cmd_add() by utilizing read_cache_preload()\n      refresh_index: remove unnecessary calls to preload_index()\n\nBrandon Williams (1):\n      config: document value 2 for protocol.version\n\nBrendan Forster (1):\n      http: add support for disabling SSL revocation checks in cURL\n\nCarlo Marcelo Arenas Belón (8):\n      unpack-trees: avoid dead store for struct progress\n      multi-pack-index: avoid dead store for struct progress\n      read-cache: use of memory after it is freed\n      commit-slabs: move MAYBE_UNUSED out\n      khash: silence -Wunused-function for delta-islands\n      compat: make sure git_mmap is not expected to write\n      sequencer: cleanup for gcc warning in non developer mode\n      builtin/notes: remove unnecessary free\n\nChristian Couder (3):\n      pack-objects: refactor code into compute_layer_order()\n      pack-objects: move tree_depth into 'struct packing_data'\n      pack-objects: move 'layer' into 'struct packing_data'\n\nChristian Hesse (2):\n      subtree: add build targets 'man' and 'html'\n      subtree: make install targets depend on build targets\n\nDaniels Umanovskis (3):\n      doc: move git-rev-parse from porcelain to plumbing\n      doc: move git-get-tar-commit-id to plumbing\n      doc: move git-cherry to plumbing\n\nDavid Zych (1):\n      doc: clarify gitcredentials path component matching\n\nDenton Liu (3):\n      mergetool: accept -g/--[no-]gui as arguments\n      completion: support `git mergetool --[no-]gui`\n      doc: document diff/merge.guitool config keys\n\nDerrick Stolee (92):\n      multi-pack-index: add design document\n      multi-pack-index: add format details\n      multi-pack-index: add builtin\n      multi-pack-index: add 'write' verb\n      midx: write header information to lockfile\n      multi-pack-index: load into memory\n      t5319: expand test data\n      packfile: generalize pack directory list\n      multi-pack-index: read packfile list\n      multi-pack-index: write pack names in chunk\n      midx: read pack names into array\n      midx: sort and deduplicate objects from packfiles\n      midx: write object ids in a chunk\n      midx: write object id fanout chunk\n      midx: write object offsets\n      config: create core.multiPackIndex setting\n      midx: read objects from multi-pack-index\n      midx: use midx in abbreviation calculations\n      midx: use existing midx when writing new one\n      midx: use midx in approximate_object_count\n      midx: prevent duplicate packfile loads\n      packfile: skip loading index if in multi-pack-index\n      midx: clear midx on repack\n      commit-reach: move walk methods from commit.c\n      commit.h: remove method declarations\n      commit-reach: move ref_newer from remote.c\n      commit-reach: move commit_contains from ref-filter\n      upload-pack: make reachable() more generic\n      upload-pack: refactor ok_to_give_up()\n      upload-pack: generalize commit date cutoff\n      commit-reach: move can_all_from_reach_with_flags\n      test-reach: create new test tool for ref_newer\n      test-reach: test in_merge_bases\n      test-reach: test is_descendant_of\n      test-reach: test get_merge_bases_many\n      test-reach: test reduce_heads\n      test-reach: test can_all_from_reach_with_flags\n      test-reach: test commit_contains\n      commit-reach: replace ref_newer logic\n      commit-reach: make can_all_from_reach... linear\n      commit-reach: use can_all_from_reach\n      multi-pack-index: provide more helpful usage info\n      multi-pack-index: store local property\n      midx: mark bad packed objects\n      midx: stop reporting garbage\n      midx: fix bug that skips midx with alternates\n      packfile: add all_packs list\n      treewide: use get_all_packs\n      midx: test a few commands that use get_all_packs\n      pack-objects: consider packs in multi-pack-index\n      commit-graph: update design document\n      test-repository: properly init repo\n      commit-graph: not compatible with replace objects\n      commit-graph: not compatible with grafts\n      commit-graph: not compatible with uninitialized repo\n      commit-graph: close_commit_graph before shallow walk\n      commit-graph: define GIT_TEST_COMMIT_GRAPH\n      t3206-range-diff.sh: cover single-patch case\n      t5318: use test_oid for HASH_LEN\n      multi-pack-index: add 'verify' verb\n      multi-pack-index: verify bad header\n      multi-pack-index: verify corrupt chunk lookup table\n      multi-pack-index: verify packname order\n      multi-pack-index: verify missing pack\n      multi-pack-index: verify oid fanout order\n      multi-pack-index: verify oid lookup order\n      multi-pack-index: fix 32-bit vs 64-bit size check\n      multi-pack-index: verify object offsets\n      multi-pack-index: report progress during 'verify'\n      fsck: verify multi-pack-index\n      commit-reach: properly peel tags\n      commit-reach: fix memory and flag leaks\n      commit-reach: cleanups in can_all_from_reach...\n      commit-graph: clean up leaked memory during write\n      commit-graph: reduce initial oid allocation\n      midx: fix broken free() in close_midx()\n      contrib: add coverage-diff script\n      ci: add optional test variables\n      commit-reach: fix first-parent heuristic\n      midx: close multi-pack-index on repack\n      multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX\n      packfile: close multi-pack-index in close_all_packs\n      prio-queue: add 'peek' operation\n      test-reach: add run_three_modes method\n      test-reach: add rev-list tests\n      revision.c: begin refactoring --topo-order logic\n      commit/revisions: bookkeeping before refactoring\n      revision.c: generation-based topo-order algorithm\n      t6012: make rev-list tests more interesting\n      commit-reach: implement get_reachable_subset\n      test-reach: test get_reachable_subset\n      remote: make add_missing_tags() linear\n\nElijah Newren (14):\n      Remove superfluous trailing semicolons\n      t4200: demonstrate rerere segfault on specially crafted merge\n      rerere: avoid buffer overrun\n      update-ref: fix type of update_flags variable to match its usage\n      update-ref: allow --no-deref with --stdin\n      sequencer: fix --allow-empty-message behavior, make it smarter\n      merge-recursive: set paths correctly when three-way merging content\n      merge-recursive: avoid wrapper function when unnecessary and wasteful\n      merge-recursive: remove final remaining caller of merge_file_one()\n      merge-recursive: rename merge_file_1() and merge_content()\n      commit: fix erroneous BUG, 'multiple renames on the same target? how?'\n      merge-recursive: improve auto-merging messages with path collisions\n      merge-recursive: avoid showing conflicts with merge branch before HEAD\n      fsck: move fsck_head_link() to get_default_heads() to avoid some globals\n\nEric Sunshine (26):\n      format-patch: allow additional generated content in make_cover_letter()\n      format-patch: add --interdiff option to embed diff in cover letter\n      format-patch: teach --interdiff to respect -v/--reroll-count\n      interdiff: teach show_interdiff() to indent interdiff\n      log-tree: show_log: make commentary block delimiting reusable\n      format-patch: allow --interdiff to apply to a lone-patch\n      range-diff: respect diff_option.file rather than assuming 'stdout'\n      range-diff: publish default creation factor\n      range-diff: relieve callers of low-level configuration burden\n      format-patch: add --range-diff option to embed diff in cover letter\n      format-patch: extend --range-diff to accept revision range\n      format-patch: teach --range-diff to respect -v/--reroll-count\n      format-patch: add --creation-factor tweak for --range-diff\n      format-patch: allow --range-diff to apply to a lone-patch\n      worktree: don't die() in library function find_worktree()\n      worktree: move delete_git_dir() earlier in file for upcoming new callers\n      worktree: generalize delete_git_dir() to reduce code duplication\n      worktree: prepare for more checks of whether path can become worktree\n      worktree: disallow adding same path multiple times\n      worktree: teach 'add' to respect --force for registered but missing path\n      worktree: teach 'move' to override lock when --force given twice\n      worktree: teach 'remove' to override lock when --force given twice\n      worktree: delete .git/worktrees if empty after 'remove'\n      doc-diff: fix non-portable 'man' invocation\n      doc-diff: add --clean mode to remove temporary working gunk\n      doc/Makefile: drop doc-diff worktree and temporary files on \"make clean\"\n\nFrederick Eaton (3):\n      git-archimport.1: specify what kind of Arch we're talking about\n      git-column.1: clarify initial description, provide examples\n      git-describe.1: clarify that \"human readable\" is also git-readable\n\nJames Knight (1):\n      build: link with curl-defined linker flags\n\nJann Horn (2):\n      patch-delta: fix oob read\n      patch-delta: consistently report corruption\n\nJeff Hostetler (2):\n      t0051: test GIT_TRACE to a windows named pipe\n      mingw: fix mingw_open_append to work with named pipes\n\nJeff King (94):\n      branch: make \"-l\" a synonym for \"--list\"\n      Add delta-islands.{c,h}\n      pack-objects: add delta-islands support\n      repack: add delta-islands support\n      t5320: tests for delta islands\n      t/perf: factor boilerplate out of test_perf\n      t/perf: factor out percent calculations\n      t/perf: add infrastructure for measuring sizes\n      t/perf: add perf tests for fetches from a bitmapped server\n      pack-bitmap: save \"have\" bitmap from walk\n      pack-objects: reuse on-disk deltas for thin \"have\" objects\n      SubmittingPatches: mention doc-diff\n      rev-list: make empty --stdin not an error\n      trailer: use size_t for string offsets\n      trailer: use size_t for iterating trailer list\n      trailer: pass process_trailer_opts to trailer_info_get()\n      interpret-trailers: tighten check for \"---\" patch boundary\n      interpret-trailers: allow suppressing \"---\" divider\n      pretty, ref-filter: format %(trailers) with no_divider option\n      sequencer: ignore \"---\" divider when parsing trailers\n      append_signoff: use size_t for string offsets\n      coccinelle: use <...> for function exclusion\n      introduce hasheq() and oideq()\n      convert \"oidcmp() == 0\" to oideq()\n      convert \"hashcmp() == 0\" to hasheq()\n      convert \"oidcmp() != 0\" to \"!oideq()\"\n      convert \"hashcmp() != 0\" to \"!hasheq()\"\n      convert hashmap comparison functions to oideq()\n      read-cache: use oideq() in ce_compare functions\n      show_dirstat: simplify same-content check\n      doc-diff: always use oids inside worktree\n      test-delta: read input into a heap buffer\n      t5303: test some corrupt deltas\n      patch-delta: handle truncated copy parameters\n      t5303: use printf to generate delta bases\n      doc/git-branch: remove obsolete \"-l\" references\n      bitmap_has_sha1_in_uninteresting(): drop BUG check\n      t5310: test delta reuse with bitmaps\n      traverse_bitmap_commit_list(): don't free result\n      pack-bitmap: drop \"loaded\" flag\n      reopen_tempfile(): truncate opened file\n      doc-diff: force worktree add\n      config.mak.dev: add -Wformat-security\n      pack-objects: handle island check for \"external\" delta base\n      receive-pack: update comment with check_everything_connected\n      submodule--helper: use \"--\" to signal end of clone options\n      submodule-config: ban submodule urls that start with dash\n      submodule-config: ban submodule paths that start with a dash\n      fsck: detect submodule urls starting with dash\n      fsck: detect submodule paths starting with dash\n      more oideq/hasheq conversions\n      transport: drop refnames from for_each_alternate_ref\n      test-tool: show tool list on error\n      config.mak.dev: enable -Wunused-function\n      run-command: mark path lookup errors with ENOENT\n      t5410: use longer path for sample script\n      upload-pack: fix broken if/else chain in config callback\n      t1450: check large blob in trailing-garbage test\n      check_stream_sha1(): handle input underflow\n      cat-file: handle streaming failures consistently\n      ls-remote: do not send ref prefixes for patterns\n      ls-remote: pass heads/tags prefixes to transport\n      read_istream_pack_non_delta(): document input handling\n      xdiff: provide a separate emit callback for hunks\n      xdiff-interface: provide a separate consume callback for hunks\n      rev-list: handle flags for --indexed-objects\n      approxidate: handle pending number for \"specials\"\n      pathspec: handle non-terminated strings with :(attr)\n      diff: avoid generating unused hunk header lines\n      diff: discard hunk headers for patch-ids earlier\n      diff: use hunk callback for word-diff\n      combine-diff: use an xdiff hunk callback\n      diff: convert --check to use a hunk callback\n      range-diff: use a hunk callback\n      xdiff-interface: drop parse_hunk_header()\n      apply: mark include/exclude options as NONEG\n      am: handle --no-patch-format option\n      ls-files: mark exclude options as NONEG\n      pack-objects: mark index-version option as NONEG\n      cat-file: mark batch options with NONEG\n      status: mark --find-renames option with NONEG\n      format-patch: mark \"--no-numbered\" option with NONEG\n      show-branch: mark --reflog option as NONEG\n      tag: mark \"--message\" option with NONEG\n      cat-file: report an error on multiple --batch options\n      apply: return -1 from option callback instead of calling exit(1)\n      parse-options: drop OPT_DATE()\n      assert NOARG/NONEG behavior of parse-options callbacks\n      midx: double-check large object write loop\n      merge: extract verify_merge_signature() helper\n      merge: handle --verify-signatures for unborn branch\n      pull: handle --verify-signatures for unborn branch\n      approxidate: fix NULL dereference in date_time()\n      bundle: dup() output descriptor closer to point-of-use\n\nJohannes Schindelin (55):\n      rebase -i --autosquash: demonstrate a problem skipping the last squash\n      rebase -i: be careful to wrap up fixup/squash chains\n      compat/poll: prepare for targeting Windows Vista\n      mingw: set _WIN32_WINNT explicitly for Git for Windows\n      mingw: bump the minimum Windows version to Vista\n      builtin rebase: prepare for builtin rebase -i\n      rebase -i: clarify what happens on a failed `exec`\n      rebase -i: introduce the 'break' command\n      getpwuid(mingw): initialize the structure only once\n      getpwuid(mingw): provide a better default for the user name\n      mingw: use domain information for default email\n      http: add support for selecting SSL backends at runtime\n      pack-objects: fix typo 'detla' -> 'delta'\n      pack-objects (mingw): demonstrate a segmentation fault with large deltas\n      pack-objects (mingw): initialize `packing_data` mutex in the correct spot\n      rebase (autostash): avoid duplicate call to state_dir_path()\n      rebase (autostash): store the full OID in <state-dir>/autostash\n      rebase (autostash): use an explicit OID to apply the stash\n      mingw: factor out code to set stat() data\n      rebase --autostash: demonstrate a problem with dirty submodules\n      rebase --autostash: fix issue with dirty submodules\n      mingw: load system libraries the recommended way\n      mingw: ensure `getcwd()` reports the correct case\n      repack: point out a bug handling stale shallow info\n      shallow: offer to prune only non-existing entries\n      repack -ad: prune the list of shallow commits\n      http: when using Secure Channel, ignore sslCAInfo by default\n      t7800: fix quoting\n      mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)\n      config: rename `dummy` parameter to `cb` in git_default_config()\n      config: allow for platform-specific core.* config settings\n      config: move Windows-specific config settings into compat/mingw.c\n      mingw: unset PERL5LIB by default\n      mingw: fix isatty() after dup2()\n      t3404: decouple some test cases from outcomes of previous test cases\n      t3418: decouple test cases from a previous `rebase -p` test case\n      tests: optionally skip `git rebase -p` tests\n      Windows: force-recompile git.res for differing architectures\n      built-in rebase: demonstrate regression with --autostash\n      built-in rebase --autostash: leave the current branch alone if possible\n      Update .mailmap\n      rebase -r: demonstrate bug with conflicting merges\n      rebase -r: do not write MERGE_HEAD unless needed\n      rebase -i: include MERGE_HEAD into files to clean up\n      built-in rebase --skip/--abort: clean up stale .git/<name> files\n      status: rebase and merge can be in progress at the same time\n      apply --recount: allow \"no-op hunks\"\n      rebase: consolidate clean-up code before leaving reset_head()\n      rebase: prepare reset_head() for more flags\n      built-in rebase: reinstate `checkout -q` behavior where appropriate\n      mingw: use `CreateHardLink()` directly\n      rebase: really just passthru the `git am` options\n      rebase: validate -C<n> and --whitespace=<mode> parameters early\n      config: report a bug if git_dir exists without commondir\n      mingw: replace an obsolete link with the superseding one\n\nJohannes Sixt (3):\n      diff: don't attempt to strip prefix from absolute Windows paths\n      rebase -i: recognize short commands without arguments\n      t3404-rebase-interactive: test abbreviated commands\n\nJonathan Nieder (6):\n      gc: improve handling of errors reading gc.log\n      gc: exit with status 128 on failure\n      gc: do not return error for prior errors in daemonized mode\n      commit-reach: correct accidental #include of C file\n      mailmap: consistently normalize brian m. carlson's name\n      git doc: direct bug reporters to mailing list archive\n\nJonathan Tan (15):\n      fetch-object: unify fetch_object[s] functions\n      fetch-object: set exact_oid when fetching\n      connected: document connectivity in partial clones\n      fetch: in partial clone, check presence of targets\n      fetch-pack: avoid object flags if no_dependents\n      fetch-pack: exclude blobs when lazy-fetching trees\n      transport: allow skipping of ref listing\n      transport: do not list refs if possible\n      transport: list refs before fetch if necessary\n      fetch: do not list refs if fetching only hashes\n      cache-tree: skip some blob checks in partial clone\n      upload-pack: make have_obj not global\n      upload-pack: make want_obj not global\n      upload-pack: clear flags before each v2 request\n      fetch-pack: be more precise in parsing v2 response\n\nJosh Steadmon (4):\n      fuzz: add basic fuzz testing target.\n      fuzz: add fuzz testing for packfile indices.\n      archive: initialize archivers earlier\n      Makefile: use FUZZ_CXXFLAGS for linking fuzzers\n\nJoshua Watt (1):\n      send-email: explicitly disable authentication\n\nJunio C Hamano (29):\n      Revert \"doc/Makefile: drop doc-diff worktree and temporary files on \"make clean\"\"\n      Initial batch post 2.19\n      Second batch post 2.19\n      Git 2.14.5\n      Git 2.15.3\n      Git 2.16.5\n      Git 2.17.2\n      Git 2.18.1\n      Git 2.19.1\n      t0000: do not get self-test disrupted by environment warnings\n      CodingGuidelines: document the API in *.h files\n      Declare that the next one will be named 2.20\n      Third batch for 2.20\n      rebase: fix typoes in error messages\n      Fourth batch for 2.20\n      Revert \"subtree: make install targets depend on build targets\"\n      Fifth batch for 2.20\n      receive: denyCurrentBranch=updateinstead should not blindly update\n      cocci: simplify \"if (++u > 1)\" to \"if (u++)\"\n      fsck: s/++i > 1/i++/\n      http: give curl version warnings consistently\n      Sixth batch for 2.20\n      Seventh batch for 2.20\n      fetch: replace string-list used as a look-up table with a hashmap\n      rebase: apply cocci patch\n      Eighth batch for 2.20\n      Ninth batch for 2.20\n      Tenth batch for 2.20\n      Git 2.20-rc0\n\nKarsten Blees (2):\n      mingw: replace MSVCRT's fstat() with a Win32-based implementation\n      mingw: implement nanosecond-precision file times\n\nLoo Rong Jie (1):\n      win32: replace pthread_cond_*() with much simpler code\n\nLucas De Marchi (1):\n      range-diff: allow to diff files regardless of submodule config\n\nLuke Diamand (3):\n      git-p4: do not fail in verbose mode for missing 'fileSize' key\n      git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved\n      git-p4: fully support unshelving changelists\n\nMartin Ågren (9):\n      Doc: use `--type=bool` instead of `--bool`\n      git-config.txt: fix 'see: above' note\n      git-commit-graph.txt: fix bullet lists\n      git-commit-graph.txt: typeset more in monospace\n      git-commit-graph.txt: refer to \"*commit*-graph file\"\n      Doc: refer to the \"commit-graph file\" with dash\n      t1400: drop debug `echo` to actually execute `test`\n      builtin/commit-graph.c: UNLEAK variables\n      sequencer: break out of loop explicitly\n\nMatthew DeVore (19):\n      list-objects: store common func args in struct\n      list-objects: refactor to process_tree_contents\n      list-objects: always parse trees gently\n      t/README: reformat Do, Don't, Keep in mind lists\n      Documentation: add shell guidelines\n      tests: standardize pipe placement\n      t/*: fix ordering of expected/observed arguments\n      tests: don't swallow Git errors upstream of pipes\n      t9109: don't swallow Git errors upstream of pipes\n      tests: order arguments to git-rev-list properly\n      rev-list: handle missing tree objects properly\n      revision: mark non-user-given objects instead\n      list-objects-filter: use BUG rather than die\n      list-objects-filter-options: do not over-strbuf_init\n      list-objects-filter: implement filter tree:0\n      filter-trees: code clean-up of tests\n      list-objects: support for skipping tree traversal\n      Documentation/git-log.txt: do not show --exclude-promisor-objects\n      exclude-promisor-objects: declare when option is allowed\n\nMax Kirillov (1):\n      http-backend test: make empty CONTENT_LENGTH test more realistic\n\nMichael Witten (3):\n      docs: typo: s/go/to/\n      docs: graph: remove unnecessary `graph_update()' call\n      docs: typo: s/isimilar/similar/\n\nMichał Górny (6):\n      gpg-interface.c: detect and reject multiple signatures on commits\n      gpg-interface.c: use flags to determine key/signer info presence\n      gpg-interface.c: support getting key fingerprint via %GF format\n      gpg-interface.c: obtain primary key fingerprint as well\n      t/t7510-signed-commit.sh: Add %GP to custom format checks\n      t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key\n\nMihir Mehta (1):\n      doc: fix a typo and clarify a sentence\n\nNguyễn Thái Ngọc Duy (166):\n      clone: report duplicate entries on case-insensitive filesystems\n      trace.h: support nested performance tracing\n      unpack-trees: add performance tracing\n      unpack-trees: optimize walking same trees with cache-tree\n      unpack-trees: reduce malloc in cache-tree walk\n      unpack-trees: reuse (still valid) cache-tree from src_index\n      unpack-trees: add missing cache invalidation\n      cache-tree: verify valid cache-tree in the test suite\n      Document update for nd/unpack-trees-with-cache-tree\n      bisect.c: make show_list() build again\n      t/helper: keep test-tool command list sorted\n      t/helper: merge test-dump-untracked-cache into test-tool\n      t/helper: merge test-pkt-line into test-tool\n      t/helper: merge test-parse-options into test-tool\n      t/helper: merge test-dump-fsmonitor into test-tool\n      Makefile: add a hint about TEST_BUILTINS_OBJS\n      config.txt: follow camelCase naming\n      config.txt: move fetch part out to a separate file\n      config.txt: move format part out to a separate file\n      config.txt: move gitcvs part out to a separate file\n      config.txt: move gui part out to a separate file\n      config.txt: move pull part out to a separate file\n      config.txt: move push part out to a separate file\n      config.txt: move receive part out to a separate file\n      config.txt: move sendemail part out to a separate file\n      config.txt: move sequence.editor out of \"core\" part\n      config.txt: move submodule part out to a separate file\n      archive.c: remove implicit dependency the_repository\n      status: show progress bar if refreshing the index takes too long\n      add: do not accept pathspec magic 'attr'\n      completion: support \"git fetch --multiple\"\n      read-cache.c: remove 'const' from index_has_changes()\n      diff.c: reduce implicit dependency on the_index\n      combine-diff.c: remove implicit dependency on the_index\n      blame.c: rename \"repo\" argument to \"r\"\n      diff.c: remove the_index dependency in textconv() functions\n      grep.c: remove implicit dependency on the_index\n      diff.c: remove implicit dependency on the_index\n      read-cache.c: remove implicit dependency on the_index\n      diff-lib.c: remove implicit dependency on the_index\n      ll-merge.c: remove implicit dependency on the_index\n      merge-blobs.c: remove implicit dependency on the_index\n      merge.c: remove implicit dependency on the_index\n      patch-ids.c: remove implicit dependency on the_index\n      sha1-file.c: remove implicit dependency on the_index\n      rerere.c: remove implicit dependency on the_index\n      userdiff.c: remove implicit dependency on the_index\n      line-range.c: remove implicit dependency on the_index\n      submodule.c: remove implicit dependency on the_index\n      tree-diff.c: remove implicit dependency on the_index\n      ws.c: remove implicit dependency on the_index\n      revision.c: remove implicit dependency on the_index\n      revision.c: reduce implicit dependency the_repository\n      read-cache.c: optimize reading index format v4\n      config.txt: correct the note about uploadpack.packObjectsHook\n      help -a: improve and make --verbose default\n      refs.c: indent with tabs, not spaces\n      Add a place for (not) sharing stuff between worktrees\n      submodule.c: remove some of the_repository references\n      completion: fix __gitcomp_builtin no longer consider extra options\n      t1300: extract and use test_cmp_config()\n      worktree: add per-worktree config files\n      refs: new ref types to make per-worktree refs visible to all worktrees\n      revision.c: correct a parameter name\n      revision.c: better error reporting on ref from different worktrees\n      fsck: check HEAD and reflog from other worktrees\n      reflog expire: cover reflog from all worktrees\n      Update makefile in preparation for Documentation/config/*.txt\n      config.txt: move advice.* to a separate file\n      config.txt: move core.* to a separate file\n      config.txt: move add.* to a separate file\n      config.txt: move alias.* to a separate file\n      config.txt: move am.* to a separate file\n      config.txt: move apply.* to a separate file\n      config.txt: move blame.* to a separate file\n      config.txt: move branch.* to a separate file\n      config.txt: move browser.* to a separate file\n      config.txt: move checkout.* to a separate file\n      config.txt: move clean.* to a separate file\n      config.txt: move color.* to a separate file\n      config.txt: move column.* to a separate file\n      config.txt: move commit.* to a separate file\n      config.txt: move credential.* to a separate file\n      config.txt: move completion.* to a separate file\n      config.txt: move diff-config.txt to config/\n      config.txt: move difftool.* to a separate file\n      config.txt: move fastimport.* to a separate file\n      config.txt: move fetch-config.txt to config/\n      config.txt: move filter.* to a separate file\n      config.txt: move format-config.txt to config/\n      config.txt: move fmt-merge-msg-config.txt to config/\n      config.txt: move fsck.* to a separate file\n      config.txt: move gc.* to a separate file\n      config.txt: move gitcvs-config.txt to config/\n      config.txt: move gitweb.* to a separate file\n      config.txt: move grep.* to a separate file\n      config.txt: move gpg.* to a separate file\n      config.txt: move gui-config.txt to config/\n      config.txt: move guitool.* to a separate file\n      config.txt: move help.* to a separate file\n      config.txt: move ssh.* to a separate file\n      config.txt: move http.* to a separate file\n      config.txt: move i18n.* to a separate file\n      git-imap-send.txt: move imap.* to a separate file\n      config.txt: move index.* to a separate file\n      config.txt: move init.* to a separate file\n      config.txt: move instaweb.* to a separate file\n      config.txt: move interactive.* to a separate file\n      config.txt: move log.* to a separate file\n      config.txt: move mailinfo.* to a separate file\n      config.txt: move mailmap.* to a separate file\n      config.txt: move man.* to a separate file\n      config.txt: move merge-config.txt to config/\n      config.txt: move mergetool.* to a separate file\n      config.txt: move notes.* to a separate file\n      config.txt: move pack.* to a separate file\n      config.txt: move pager.* to a separate file\n      config.txt: move pretty.* to a separate file\n      config.txt: move protocol.* to a separate file\n      config.txt: move pull-config.txt to config/\n      config.txt: move push-config.txt to config/\n      config.txt: move rebase-config.txt to config/\n      config.txt: move receive-config.txt to config/\n      config.txt: move remote.* to a separate file\n      config.txt: move remotes.* to a separate file\n      config.txt: move repack.* to a separate file\n      config.txt: move rerere.* to a separate file\n      config.txt: move reset.* to a separate file\n      config.txt: move sendemail-config.txt to config/\n      config.txt: move sequencer.* to a separate file\n      config.txt: move showBranch.* to a separate file\n      config.txt: move splitIndex.* to a separate file\n      config.txt: move status.* to a separate file\n      config.txt: move stash.* to a separate file\n      config.txt: move submodule.* to a separate file\n      config.txt: move tag.* to a separate file\n      config.txt: move transfer.* to a separate file\n      config.txt: move uploadarchive.* to a separate file\n      config.txt: move uploadpack.* to a separate file\n      config.txt: move url.* to a separate file\n      config.txt: move user.* to a separate file\n      config.txt: move versionsort.* to a separate file\n      config.txt: move web.* to a separate file\n      config.txt: move worktree.* to a separate file\n      config.txt: remove config/dummy.txt\n      thread-utils: macros to unconditionally compile pthreads API\n      wildmatch: change behavior of \"foo**bar\" in WM_PATHNAME mode\n      git-worktree.txt: correct linkgit command name\n      sequencer.c: remove a stray semicolon\n      tree-walk.c: fix overoptimistic inclusion in :(exclude) matching\n      run-command.h: include thread-utils.h instead of pthread.h\n      send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c\n      index-pack: remove #ifdef NO_PTHREADS\n      name-hash.c: remove #ifdef NO_PTHREADS\n      attr.c: remove #ifdef NO_PTHREADS\n      grep: remove #ifdef NO_PTHREADS\n      grep: clean up num_threads handling\n      preload-index.c: remove #ifdef NO_PTHREADS\n      pack-objects: remove #ifdef NO_PTHREADS\n      read-cache.c: remove #ifdef NO_PTHREADS\n      read-cache.c: reduce branching based on HAVE_THREADS\n      read-cache.c: initialize copy_len to shut up gcc 8\n      Clean up pthread_create() error handling\n      completion: use __gitcomp_builtin for format-patch\n      build: fix broken command-list.h generation with core.autocrlf\n      doc: move extensions.worktreeConfig to the right place\n\nNickolai Belakovski (2):\n      worktree: update documentation for lock_reason and lock_reason_valid\n      worktree: rename is_worktree_locked to worktree_lock_reason\n\nNoam Postavsky (1):\n      log: fix coloring of certain octopus merge shapes\n\nOlga Telezhnaya (3):\n      ref-filter: free memory from used_atom\n      ls-remote: release memory instead of UNLEAK\n      ref-filter: free item->value and item->value->s\n\nPhillip Wood (11):\n      diff: fix --color-moved-ws=allow-indentation-change\n      diff --color-moved-ws: fix double free crash\n      diff --color-moved-ws: fix out of bounds string access\n      diff --color-moved-ws: fix a memory leak\n      diff --color-moved-ws: fix another memory leak\n      diff --color-moved: fix a memory leak\n      am: don't die in read_author_script()\n      am: improve author-script error reporting\n      am: rename read_author_script()\n      add read_author_script() to libgit\n      sequencer: use read_author_script()\n\nPratik Karki (46):\n      rebase: start implementing it as a builtin\n      rebase: refactor common shell functions into their own file\n      builtin/rebase: support running \"git rebase <upstream>\"\n      builtin rebase: support --onto\n      builtin rebase: support `git rebase --onto A...B`\n      builtin rebase: handle the pre-rebase hook and --no-verify\n      builtin rebase: support --quiet\n      builtin rebase: support the `verbose` and `diffstat` options\n      builtin rebase: require a clean worktree\n      builtin rebase: try to fast forward when possible\n      builtin rebase: support --force-rebase\n      builtin rebase: start a new rebase only if none is in progress\n      builtin rebase: only store fully-qualified refs in `options.head_name`\n      builtin rebase: support `git rebase <upstream> <switch-to>`\n      builtin rebase: support --continue\n      builtin rebase: support --skip\n      builtin rebase: support --abort\n      builtin rebase: support --quit\n      builtin rebase: support --edit-todo and --show-current-patch\n      builtin rebase: actions require a rebase in progress\n      builtin rebase: stop if `git am` is in progress\n      builtin rebase: allow selecting the rebase \"backend\"\n      builtin rebase: support --signoff\n      builtin rebase: support --rerere-autoupdate\n      builtin rebase: support --committer-date-is-author-date\n      builtin rebase: support `ignore-whitespace` option\n      builtin rebase: support `ignore-date` option\n      builtin rebase: support `keep-empty` option\n      builtin rebase: support `--autosquash`\n      builtin rebase: support `--gpg-sign` option\n      builtin rebase: support `-C` and `--whitespace=<type>`\n      builtin rebase: support `--autostash` option\n      builtin rebase: support `--exec`\n      builtin rebase: support `--allow-empty-message` option\n      builtin rebase: support --rebase-merges[=[no-]rebase-cousins]\n      merge-base --fork-point: extract libified function\n      builtin rebase: support `fork-point` option\n      builtin rebase: add support for custom merge strategies\n      builtin rebase: support --root\n      builtin rebase: optionally auto-detect the upstream\n      builtin rebase: optionally pass custom reflogs to reset_head()\n      builtin rebase: fast-forward to onto if it is a proper descendant\n      builtin rebase: show progress when connected to a terminal\n      builtin rebase: use no-op editor when interactive is \"implied\"\n      builtin rebase: error out on incompatible option/mode combinations\n      rebase: default to using the builtin rebase\n\nRafael Ascensão (2):\n      refs: show --exclude failure with --branches/tags/remotes=glob\n      refs: fix some exclude patterns being ignored\n\nRalf Thielow (1):\n      git-rebase.sh: fix typos in error messages\n\nRamsay Jones (12):\n      Makefile: add a hdr-check target\n      json-writer.h: add missing include (hdr-check)\n      ewah/ewok_rlw.h: add missing include (hdr-check)\n      refs/ref-cache.h: add missing declarations (hdr-check)\n      refs/packed-backend.h: add missing declaration (hdr-check)\n      refs/refs-internal.h: add missing declarations (hdr-check)\n      midx.h: add missing forward declarations (hdr-check)\n      delta-islands.h: add missing forward declarations (hdr-check)\n      headers: normalize the spelling of some header guards\n      fetch-object.h: add missing declaration (hdr-check)\n      ewok_rlw.h: add missing 'inline' to function definition\n      commit-reach.h: add missing declarations (hdr-check)\n\nRasmus Villemoes (6):\n      help: redirect to aliased commands for \"git cmd --help\"\n      git.c: handle_alias: prepend alias info when first argument is -h\n      git-help.txt: document \"git help cmd\" vs \"git cmd --help\" for aliases\n      Documentation/git-send-email.txt: style fixes\n      send-email: only consider lines containing @ or <> for automatic Cc'ing\n      send-email: also pick up cc addresses from -by trailers\n\nRené Scharfe (12):\n      mailinfo: support format=flowed\n      fsck: add a performance test for skipList\n      fsck: use strbuf_getline() to read skiplist file\n      fsck: use oidset instead of oid_array for skipList\n      sequencer: use return value of oidset_insert()\n      grep: add -r/--[no-]recursive\n      fetch-pack: factor out is_unmatched_ref()\n      fetch-pack: load tip_oids eagerly iff needed\n      khash: factor out kh_release_*\n      oidset: use khash\n      oidset: uninline oidset_init()\n      commit-reach: fix cast in compare_commits_by_gen()\n\nRoger Strain (1):\n      subtree: performance improvement for finding unexpected parent commits\n\nSZEDER Gábor (16):\n      t1404: increase core.packedRefsTimeout to avoid occasional test failure\n      Documentation/git.txt: clarify that GIT_TRACE=/path appends\n      t3701-add-interactive: tighten the check of trace output\n      t1700-split-index: drop unnecessary 'grep'\n      t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index\n      t1700-split-index: document why FSMONITOR is disabled in this test script\n      split-index: add tests to demonstrate the racy split index problem\n      t1700-split-index: date back files to avoid racy situations\n      split-index: count the number of deleted entries\n      split-index: don't compare cached data of entries already marked for split index\n      split-index: smudge and add racily clean cache entries to split index\n      split-index: BUG() when cache entry refers to non-existing shared entry\n      object_id.cocci: match only expressions of type 'struct object_id'\n      test-lib: introduce the '-V' short option for '--verbose-log'\n      travis-ci: install packages in 'ci/install-dependencies.sh'\n      ref-filter: don't look for objects when outside of a repository\n\nSam McKelvie (1):\n      rev-parse: --show-superproject-working-tree should work during a merge\n\nSaulius Gurklys (1):\n      doc: fix small typo in git show-branch\n\nSebastian Staudt (1):\n      travis-ci: no longer use containers\n\nShulhan (1):\n      builtin/remote: quote remote name on error to display empty name\n\nStefan Beller (25):\n      git-submodule.sh: align error reporting for update mode to use path\n      git-submodule.sh: rename unused variables\n      builtin/submodule--helper: factor out submodule updating\n      builtin/submodule--helper: store update_clone information in a struct\n      builtin/submodule--helper: factor out method to update a single submodule\n      submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree\n      submodule--helper: introduce new update-module-mode helper\n      test_decode_color: understand FAINT and ITALIC\n      t3206: add color test for range-diff --dual-color\n      diff.c: simplify caller of emit_line_0\n      diff.c: reorder arguments for emit_line_ws_markup\n      diff.c: add set_sign to emit_line_0\n      diff: use emit_line_0 once per line\n      diff.c: omit check for line prefix in emit_line_0\n      diff.c: rewrite emit_line_0 more understandably\n      diff.c: add --output-indicator-{new, old, context}\n      range-diff: make use of different output indicators\n      range-diff: indent special lines as context\n      refs.c: migrate internal ref iteration to pass thru repository argument\n      refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback\n      string-list: remove unused function print_string_list\n      strbuf.h: format according to coding guidelines\n      diff.c: pass sign_index to emit_line_ws_markup\n      submodule helper: convert relative URL to absolute URL if needed\n      builtin/submodule--helper: remove debugging leftover tracing\n\nStephen P. Smith (10):\n      wt-status.c: move has_unmerged earlier in the file\n      wt-status: rename commitable to committable\n      t7501: add test of \"commit --dry-run --short\"\n      wt-status.c: set the committable flag in the collect phase\n      roll wt_status_state into wt_status and populate in the collect phase\n      t2000: rename and combine checkout clash tests\n      t7509: cleanup description and filename\n      t7502: rename commit test script to comply with naming convention\n      t7500: rename commit tests script to comply with naming convention\n      t7501: rename commit test to comply with naming convention\n\nSteve Hoelzer (1):\n      poll: use GetTickCount64() to avoid wrap-around issues\n\nSteven Fernandez (1):\n      git-completion.bash: add completion for stash list\n\nStrain, Roger L (4):\n      subtree: refactor split of a commit into standalone method\n      subtree: make --ignore-joins pay attention to adds\n      subtree: use commits before rejoins for splits\n      subtree: improve decision on merges kept in split\n\nTao Qingyun (3):\n      refs: docstring typo\n      builtin/branch.c: remove useless branch_get\n      branch: trivial style fix\n\nTaylor Blau (4):\n      transport.c: extract 'fill_alternate_refs_command'\n      transport.c: introduce core.alternateRefsCommand\n      transport.c: introduce core.alternateRefsPrefixes\n      Documentation/config.txt: fix typo in core.alternateRefsCommand\n\nThomas Gummerer (17):\n      rerere: unify error messages when read_cache fails\n      rerere: lowercase error messages\n      rerere: wrap paths in output in sq\n      rerere: mark strings for translation\n      rerere: add documentation for conflict normalization\n      rerere: fix crash with files rerere can't handle\n      rerere: only return whether a path has conflicts or not\n      rerere: factor out handle_conflict function\n      rerere: return strbuf from handle path\n      rerere: teach rerere to handle nested conflicts\n      rerere: recalculate conflict ID when unresolved conflict is committed\n      rerere: mention caveat about unmatched conflict markers\n      rerere: add note about files with existing conflict markers\n      .gitattributes: add conflict-marker-size for relevant files\n      linear-assignment: fix potential out of bounds memory access\n      t5551: move setup code inside test_expect blocks\n      t5551: compare sorted cookies files\n\nTim Schumacher (4):\n      Documentation/Makefile: make manpage-base-url.xsl generation quieter\n      alias: add support for aliases of an alias\n      alias: show the call history when an alias is looping\n      t0014: introduce an alias testing suite\n\nTorsten Bögershausen (2):\n      Make git_check_attr() a void function\n      path.c: char is not (always) signed\n\nUwe Kleine-König (1):\n      howto/using-merge-subtree: mention --allow-unrelated-histories\n\nbrian m. carlson (26):\n      t: add test functions to translate hash-related values\n      t0000: use hash translation table\n      t0000: update tests for SHA-256\n      t0002: abstract away SHA-1 specific constants\n      t0064: make hash size independent\n      t1006: make hash size independent\n      t1400: switch hard-coded object ID to variable\n      t1405: make hash size independent\n      t1406: make hash-size independent\n      t1407: make hash size independent\n      editorconfig: provide editor settings for Git developers\n      editorconfig: indicate settings should be kept in sync\n      pack-bitmap-write: use GIT_MAX_RAWSZ for allocation\n      builtin/repack: replace hard-coded constants\n      builtin/mktree: remove hard-coded constant\n      builtin/fetch-pack: remove constants with parse_oid_hex\n      pack-revindex: express constants in terms of the_hash_algo\n      packfile: express constants in terms of the_hash_algo\n      refs/packed-backend: express constants using the_hash_algo\n      upload-pack: express constants in terms of the_hash_algo\n      transport: use parse_oid_hex instead of a constant\n      tag: express constant in terms of the_hash_algo\n      apply: replace hard-coded constants\n      apply: rename new_sha1_prefix and old_sha1_prefix\n      submodule: make zero-oid comparison hash function agnostic\n      rerere: convert to use the_hash_algo\n\nÆvar Arnfjörð Bjarmason (31):\n      fetch: change \"branch\" to \"reference\" in --force -h output\n      push tests: make use of unused $1 in test description\n      push tests: use spaces in interpolated string\n      fetch tests: add a test for clobbering tag behavior\n      push doc: remove confusing mention of remote merger\n      push doc: move mention of \"tag <tag>\" later in the prose\n      push doc: correct lies about how push refspecs work\n      fetch: document local ref updates with/without --force\n      fetch: stop clobbering existing tags without --force\n      fsck tests: setup of bogus commit object\n      fsck tests: add a test for no skipList input\n      fsck: document and test sorted skipList input\n      fsck: document and test commented & empty line skipList input\n      fsck: document that skipList input must be unabbreviated\n      fsck: add a performance test\n      fsck: support comments & empty lines in skipList\n      commit-graph write: add progress output\n      commit-graph verify: add progress output\n      config doc: add missing list separator for checkout.optimizeNewBranch\n      push doc: add spacing between two words\n      fetch doc: correct grammar in --force docs\n      gc: fix regression in 7b0f229222 impacting --quiet\n      gc doc: mention the commit-graph in the intro\n      pack-objects test: modernize style\n      pack-objects tests: don't leave test .git corrupt at end\n      index-pack tests: don't leave test repo dirty at end\n      range-diff doc: add a section about output stability\n      range-diff: fix regression in passing along diff options\n      range-diff: make diff option behavior (e.g. --stat) consistent\n      rebase doc: document rebase.useBuiltin\n      tests: add a special setup where rebase.useBuiltin is off\n\n"},{"id":"363782","messageId":"nycvar.QRO.7.76.6.1811202152290.41@tvgsbejvaqbjf.bet","threadId":"49845","inReplyTo":"xmqqh8gefowy.fsf@gitster-ct.c.googlers.com","subject":"Git for Windows v2.20.0-rc0, was Re: [ANNOUNCE] Git v2.20.0-rc0","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-11-20T20:56:54Z","receivedAt":"2018-11-20T20:57:18Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Team,\n\nOn Sun, 18 Nov 2018, Junio C Hamano wrote:\n\n> An early preview release Git v2.20.0-rc0 is now available for\n> testing at the usual places.  It is comprised of 887 non-merge\n> commits since v2.19.0, contributed by 71 people, 23 of which are\n> new faces.\n\nThe \"for Windows\" flavor of Git v2.20.0-rc0 is available here:\n\nhttps://github.com/git-for-windows/git/releases/tag/v2.20.0-rc0.windows.1\n\nThe current change log for v2.20.0 reads like this:\n\nChanges since Git for Windows v2.19.1 (Oct 5th 2018)\n\nPlease note: Git CMD is deprecated as of this Git for Windows version. The\ndefault is to have git.exe in the PATH anyway, so there is no noticeable\ndifference between CMD and Git CMD. It is impossible to turn off CMD's\nbehavior where it picks up any git.exe in the current directory, so let's\ndiscourage the use of Git CMD. Users who dislike Git Bash should switch to\nPowershell instead.\n\nNew Features\n\n  • Comes with OpenSSH v7.9p1.\n  • The description of the editor option to choose Vim has been clarified\n    to state that this unsets core.editor.\n  • Comes with cURL v7.62.0.\n  • The type of symlinks to create (directory or file) can now be\n    specified via the .gitattributes.\n  • The FSCache feature now uses a faster method to enumerate files,\n    making e.g. git status faster in large repositories.\n  • Comes with Git Credential Manager v1.18.3.\n  • Comes with Git LFS v2.6.0.\n  • Comes with MSYS2 runtime (Git for Windows flavor) based on Cygwin\n    2.11.2.\n  • The FSCache feature was optimized to become faster.\n\nBug Fixes\n\n  • The 64-bit Portable Git no longer sets pack.packSizeLimit.\n\nThanks,\nJohannes"},{"id":"363785","messageId":"CAGyf7-FALWBEfcu4OOsrQEKZJ=ub0=exM_f-Y7=avPqiwOeH7Q@mail.gmail.com","threadId":"49845","inReplyTo":"nycvar.QRO.7.76.6.1811202152290.41@tvgsbejvaqbjf.bet","subject":"Re: Git for Windows v2.20.0-rc0, was Re: [ANNOUNCE] Git v2.20.0-rc0","fromName":"Bryan Turner","fromEmail":"bturner@atlassian.com","sentAt":"2018-11-20T23:17:07Z","receivedAt":"2018-11-20T23:17:21Z","isPatch":false,"sender":{"key":"bturner@atlassian.com","avatar":"https://gravatar.com/avatar/16bcf3167981c1ef7c804e502642366d888a35b0d0b0a4ca01fdc442aa1acb1e?d=mp&s=160"},"body":"On Tue, Nov 20, 2018 at 12:57 PM Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n>\n> Team,\n>\n> On Sun, 18 Nov 2018, Junio C Hamano wrote:\n>\n> > An early preview release Git v2.20.0-rc0 is now available for\n> > testing at the usual places.  It is comprised of 887 non-merge\n> > commits since v2.19.0, contributed by 71 people, 23 of which are\n> > new faces.\n>\n> The \"for Windows\" flavor of Git v2.20.0-rc0 is available here:\n>\n\nThanks again for publishing these release candidates! I greatly\nappreciate the effort that's involved, and the opportunity it affords\nto test new versions prior to their final release.\n\nI've run 2.20.0-rc0 through the test matrix for Bitbucket Server on\nboth Linux and Windows, and the only failures were related to this\nchange:\n\n* \"git branch -l <foo>\" used to be a way to ask a reflog to be\n   created while creating a new branch, but that is no longer the\n   case.  It is a short-hand for \"git branch --list <foo>\" now.\n\nSince this is an intentional change I suspect there's nothing to do\nfor it but patch Bitbucket Server and move on, but I'll confess it's a\nlittle frustrating that the option was deprecated in 2.19 and then\nimmediately removed in the next minor release. Such a\nbackwards-incompatible change seems far more apt for a major release,\na perspective that's reinforced by having the change follow such a\nbrief deprecation period--2.19.0 was only tagged September 10th (in my\ntimezone), so it's been less than 3 months. (Looking at the git branch\ndocumentation for 2.18.0 [1] shows nothing about this deprecation; the\nmessaging first appears in 2.19.0 [2]. To be honest, I didn't even\nrealize it was deprecated until now, when it's gone--our test suite is\nautomated, so the deprecation warning was not visible.)\n\nFor what it's worth, I think having -l mean --list is a _good change_,\nand one that will likely be more natural for both new and existing\nusers. It's the rapid changeover that hurts.\n\nBest regards,\nBryan Turner\n\n[1] https://git-scm.com/docs/git-branch/2.18.0\n[2] https://git-scm.com/docs/git-branch/2.19.0\n"},{"id":"363831","messageId":"20181121142026.GA10324@sigill.intra.peff.net","threadId":"49845","inReplyTo":"CAGyf7-FALWBEfcu4OOsrQEKZJ=ub0=exM_f-Y7=avPqiwOeH7Q@mail.gmail.com","subject":"Re: Git for Windows v2.20.0-rc0, was Re: [ANNOUNCE] Git v2.20.0-rc0","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2018-11-21T14:20:26Z","receivedAt":"2018-11-21T14:20:30Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Nov 20, 2018 at 03:17:07PM -0800, Bryan Turner wrote:\n\n> I've run 2.20.0-rc0 through the test matrix for Bitbucket Server on\n> both Linux and Windows, and the only failures were related to this\n> change:\n> \n> * \"git branch -l <foo>\" used to be a way to ask a reflog to be\n>    created while creating a new branch, but that is no longer the\n>    case.  It is a short-hand for \"git branch --list <foo>\" now.\n> \n> Since this is an intentional change I suspect there's nothing to do\n> for it but patch Bitbucket Server and move on, but I'll confess it's a\n> little frustrating that the option was deprecated in 2.19 and then\n> immediately removed in the next minor release. Such a\n> backwards-incompatible change seems far more apt for a major release,\n> a perspective that's reinforced by having the change follow such a\n> brief deprecation period--2.19.0 was only tagged September 10th (in my\n> timezone), so it's been less than 3 months. (Looking at the git branch\n> documentation for 2.18.0 [1] shows nothing about this deprecation; the\n> messaging first appears in 2.19.0 [2]. To be honest, I didn't even\n> realize it was deprecated until now, when it's gone--our test suite is\n> automated, so the deprecation warning was not visible.)\n\nWe did go a bit faster than usual, under the assumption that nobody's\nreally using \"-l\". It has been the default since 2006.\n\nCan you tell us a little more about your invocation?\n\nWe still have time to avoid the change for this release. And this early\ntesting of master and release candidates is wonderful exactly to get\nthis kind of feedback before it's too late.\n\n-Peff\n"},{"id":"363844","messageId":"CAGyf7-FDZxCTfXV_HwHRS3PiWnLR08F5B=whxAizOsjJFUCi+g@mail.gmail.com","threadId":"49845","inReplyTo":"20181121142026.GA10324@sigill.intra.peff.net","subject":"Re: Git for Windows v2.20.0-rc0, was Re: [ANNOUNCE] Git v2.20.0-rc0","fromName":"Bryan Turner","fromEmail":"bturner@atlassian.com","sentAt":"2018-11-21T19:28:28Z","receivedAt":"2018-11-21T19:28:42Z","isPatch":false,"sender":{"key":"bturner@atlassian.com","avatar":"https://gravatar.com/avatar/16bcf3167981c1ef7c804e502642366d888a35b0d0b0a4ca01fdc442aa1acb1e?d=mp&s=160"},"body":"On Wed, Nov 21, 2018 at 6:20 AM Jeff King <peff@peff.net> wrote:\n>\n> On Tue, Nov 20, 2018 at 03:17:07PM -0800, Bryan Turner wrote:\n>\n> > I've run 2.20.0-rc0 through the test matrix for Bitbucket Server on\n> > both Linux and Windows, and the only failures were related to this\n> > change:\n> >\n> > * \"git branch -l <foo>\" used to be a way to ask a reflog to be\n> >    created while creating a new branch, but that is no longer the\n> >    case.  It is a short-hand for \"git branch --list <foo>\" now.\n> >\n> > Since this is an intentional change I suspect there's nothing to do\n> > for it but patch Bitbucket Server and move on, but I'll confess it's a\n> > little frustrating that the option was deprecated in 2.19 and then\n> > immediately removed in the next minor release. Such a\n> > backwards-incompatible change seems far more apt for a major release,\n> > a perspective that's reinforced by having the change follow such a\n> > brief deprecation period--2.19.0 was only tagged September 10th (in my\n> > timezone), so it's been less than 3 months. (Looking at the git branch\n> > documentation for 2.18.0 [1] shows nothing about this deprecation; the\n> > messaging first appears in 2.19.0 [2]. To be honest, I didn't even\n> > realize it was deprecated until now, when it's gone--our test suite is\n> > automated, so the deprecation warning was not visible.)\n>\n> We did go a bit faster than usual, under the assumption that nobody's\n> really using \"-l\". It has been the default since 2006.\n>\n> Can you tell us a little more about your invocation?\n\nOur invocation is... A little difficult to nail down, if I'm honest.\nBitbucket Server code does not use \"git branch -l\" anywhere in its\n_shipping_ code, only in its _test_ code.\n\nBut that test code exists because Bitbucket Server provides a Java API\n[1][2] which allows third-party developers to easily build arbitrary\nGit commands to invoke for their own functionality. Setting\n`GitBranchCreateBuilder.reflog(true)` will trigger adding \"-l\" to the\nassembled \"git branch\" command. I've changed the code now so that it\nwill use \"--create-reflog\" instead; however, because many of the\nBitbucket Server add-ons on Marketplace [3], whether free or paid, are\nnot open source, and because there are a significant number of\nin-house plugins that are not listed there, it's difficult to know how\nmany might be affected. If I were to hazard a guess it would be\n_none_, but I've been surprised before. The end result is that the net\nimpact is hard to predict--especially because Git on the server would\nneed to be upgraded to 2.20.\n\n(In case you're curious why we used shorthand options, it's because of\nour Windows support. While \"git branch\" commands rarely, if ever, get\nvery long, as a general rule we use shorthand options where they exist\nto keep our command lines shorter, to allow passing more options\nwithout hitting the hard limit (generally 32K) imposed by\nWindows--something we _have_ had issues with on other commands. For\ncommands like \"git diff\", where it's not possible to pass in paths via\nstdin, every character matters.)\n\nTo try and protect against the unexpected, we have a Supported\nPlatforms [4] page which lists Git versions that we've _explicitly\ntested_ with Bitbucket Server. 2.20 won't be marked tested until a\nfuture release, so the majority of installs will not use it with older\nversions of the system--but there's always that subset who ignore the\ndocumentation. (Since we do text parsing on Git output, subtle\nbreakages do happen from time to time.)\n\nI would say it's _unlikely_ that we'll hear of any installations where\nall the conditions are met for this to come up:\n- Git 2.20\n- Bitbucket Server (without fixes)\n- Third-party add-on using `reflog(true)`\n\nIt's really just that a) I was caught off guard by the change (my own\nfault for not reading the 2.19 announcement more carefully) and b)\nit's impossible for me to say with _certainty_ that it won't be an\nissue. I'd imagine that latter point is true of the change in general,\nthough (it's not really possible to know what scripts it might break,\nand that's going to be true regardless of when the change actually\ngets released), and I'd agree that that shouldn't hold Git back from\nmaking useful improvements.\n\nThanks for your time!\n\nBryan\n\n[1] https://docs.atlassian.com/bitbucket-server/javadoc/5.16.0/git-api/reference/com/atlassian/bitbucket/scm/git/command/GitScmCommandBuilder.html\n[2] https://docs.atlassian.com/bitbucket-server/javadoc/5.16.0/git-api/reference/com/atlassian/bitbucket/scm/git/command/branch/GitBranchCreateBuilder.html\n[3] https://marketplace.atlassian.com/addons/app/bitbucket\n[4] https://confluence.atlassian.com/bitbucketserver/supported-platforms-776640981.html#Supportedplatforms-dvcsDVCS\n\n>\n> We still have time to avoid the change for this release. And this early\n> testing of master and release candidates is wonderful exactly to get\n> this kind of feedback before it's too late.\n>\n> -Peff\n"},{"id":"363873","messageId":"08df3706-fe2c-519b-f27c-3f706739d1d4@atlas-elektronik.com","threadId":"49845","inReplyTo":"nycvar.QRO.7.76.6.1811202152290.41@tvgsbejvaqbjf.bet","subject":"Re: Git for Windows v2.20.0-rc0","fromName":"","fromEmail":"stefan.naewe@atlas-elektronik.com","sentAt":"2018-11-22T08:01:57Z","receivedAt":"2018-11-22T08:14:16Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"Just a quick note:\n\nI installed v2.20.0-rc0 with these options:\n\n$ cat /etc/install-options.txt\nEditor Option: VIM\nCustom Editor Path:\nPath Option: Cmd\nSSH Option: OpenSSH\nCURL Option: OpenSSL\nCRLF Option: CRLFCommitAsIs\nBash Terminal Option: MinTTY\nPerformance Tweaks FSCache: Enabled\nUse Credential Manager: Enabled\nEnable Symlinks: Disabled\nEnable Builtin Rebase: Enabled\nEnable Builtin Stash: Enabled\n\n\n\nWhen starting the git bash two windows pop up instead of one.\nOne that's \"empty\" and the other one containing the real git bash.\n\nThanks,\n  Stefan\n\nAm 20.11.2018 um 21:56 schrieb Johannes Schindelin:\n> Team,\n> \n> On Sun, 18 Nov 2018, Junio C Hamano wrote:\n> \n>> An early preview release Git v2.20.0-rc0 is now available for\n>> testing at the usual places.  It is comprised of 887 non-merge\n>> commits since v2.19.0, contributed by 71 people, 23 of which are\n>> new faces.\n> \n> The \"for Windows\" flavor of Git v2.20.0-rc0 is available here:\n> \n> https://github.com/git-for-windows/git/releases/tag/v2.20.0-rc0.windows.1\n> \n> The current change log for v2.20.0 reads like this:\n> \n> Changes since Git for Windows v2.19.1 (Oct 5th 2018)\n> \n> Please note: Git CMD is deprecated as of this Git for Windows version. The\n> default is to have git.exe in the PATH anyway, so there is no noticeable\n> difference between CMD and Git CMD. It is impossible to turn off CMD's\n> behavior where it picks up any git.exe in the current directory, so let's\n> discourage the use of Git CMD. Users who dislike Git Bash should switch to\n> Powershell instead.\n> \n> New Features\n> \n>   • Comes with OpenSSH v7.9p1.\n>   • The description of the editor option to choose Vim has been clarified\n>     to state that this unsets core.editor.\n>   • Comes with cURL v7.62.0.\n>   • The type of symlinks to create (directory or file) can now be\n>     specified via the .gitattributes.\n>   • The FSCache feature now uses a faster method to enumerate files,\n>     making e.g. git status faster in large repositories.\n>   • Comes with Git Credential Manager v1.18.3.\n>   • Comes with Git LFS v2.6.0.\n>   • Comes with MSYS2 runtime (Git for Windows flavor) based on Cygwin\n>     2.11.2.\n>   • The FSCache feature was optimized to become faster.\n> \n> Bug Fixes\n> \n>   • The 64-bit Portable Git no longer sets pack.packSizeLimit.\n> \n> Thanks,\n> Johannes\n> \n\n\n-- \n----------------------------------------------------------------\n/dev/random says: To save trouble later, Joe named his cat Roadkill Fred\npython -c \"print '73746566616e2e6e616577654061746c61732d656c656b74726f6e696b2e636f6d'.decode('hex')\" \nGPG Key fingerprint = 2DF5 E01B 09C3 7501 BCA9  9666 829B 49C5 9221 27AF"},{"id":"363913","messageId":"20181122163835.GF28192@sigill.intra.peff.net","threadId":"49845","inReplyTo":"CAGyf7-FDZxCTfXV_HwHRS3PiWnLR08F5B=whxAizOsjJFUCi+g@mail.gmail.com","subject":"Re: Git for Windows v2.20.0-rc0, was Re: [ANNOUNCE] Git v2.20.0-rc0","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2018-11-22T16:38:36Z","receivedAt":"2018-11-22T16:38:39Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Nov 21, 2018 at 11:28:28AM -0800, Bryan Turner wrote:\n\n> But that test code exists because Bitbucket Server provides a Java API\n> [1][2] which allows third-party developers to easily build arbitrary\n> Git commands to invoke for their own functionality. Setting\n> `GitBranchCreateBuilder.reflog(true)` will trigger adding \"-l\" to the\n> assembled \"git branch\" command. I've changed the code now so that it\n> will use \"--create-reflog\" instead; however, because many of the\n> Bitbucket Server add-ons on Marketplace [3], whether free or paid, are\n> not open source, and because there are a significant number of\n> in-house plugins that are not listed there, it's difficult to know how\n> many might be affected. If I were to hazard a guess it would be\n> _none_, but I've been surprised before. The end result is that the net\n> impact is hard to predict--especially because Git on the server would\n> need to be upgraded to 2.20.\n\nYeah, that is slightly worrisome. In some sense we can guess that\ncalling \".reflog(true)\" is in the same league as our assumption of\n\"probably nobody is using -l in the first place\", but it's one more\nplace that might have encouraged people into using it, even if it's a\nnoop.\n\n> (In case you're curious why we used shorthand options, it's because of\n> our Windows support. While \"git branch\" commands rarely, if ever, get\n> very long, as a general rule we use shorthand options where they exist\n> to keep our command lines shorter, to allow passing more options\n> without hitting the hard limit (generally 32K) imposed by\n> Windows--something we _have_ had issues with on other commands. For\n> commands like \"git diff\", where it's not possible to pass in paths via\n> stdin, every character matters.)\n\nI follow your reasoning, though that is not the engineering decision I\nwould have made. The long-names tend to be more robust, and while saving\na few bytes might make a case work that would not otherwise, it is\nreally only delaying the inevitable. But hey, it's not my product. ;)\n\nWe probably should support --stdin in more places to cover situations\nlike this. Patches, welcome.\n\nAlso, I have noticed that performance with a large number of pathspecs\ntends to be pretty poor, as we search them linearly. I wonder if you've\nrun into that, too (or maybe, coming from a Java world, you simply have\na small number of extremely long path names ;) ). A while ago I\nexperimented with putting non-wildcard pathspecs into a trie structure\nthat we could traverse while walking the actual trees to diff. I never\nreally polished it because having a huge number of pathspecs didn't seem\nlike a common use case.\n\n> To try and protect against the unexpected, we have a Supported\n> Platforms [4] page which lists Git versions that we've _explicitly\n> tested_ with Bitbucket Server. 2.20 won't be marked tested until a\n> future release, so the majority of installs will not use it with older\n> versions of the system--but there's always that subset who ignore the\n> documentation. (Since we do text parsing on Git output, subtle\n> breakages do happen from time to time.)\n> \n> I would say it's _unlikely_ that we'll hear of any installations where\n> all the conditions are met for this to come up:\n> - Git 2.20\n> - Bitbucket Server (without fixes)\n> - Third-party add-on using `reflog(true)`\n\nThanks for laying this out (and again, thanks for testing and reporting\nthis before the release!).\n\nI'm comfortable with continuing with the change in v2.20 at this point,\nbut I'm also totally fine with bumping it for another release. Your case\nis about Bitbucket, but there may well be other scripts in the wild.\n\n> It's really just that a) I was caught off guard by the change (my own\n> fault for not reading the 2.19 announcement more carefully) and b)\n> it's impossible for me to say with _certainty_ that it won't be an\n> issue. I'd imagine that latter point is true of the change in general,\n> though (it's not really possible to know what scripts it might break,\n> and that's going to be true regardless of when the change actually\n> gets released), and I'd agree that that shouldn't hold Git back from\n> making useful improvements.\n\nThe advantage of bumping is that if you switch Bitbucket to\n\"--create-reflog\" _now_, it's more likely to be deployed by the time the\nGit change comes.\n\nIn theory that also helps people who may not have upgraded to v2.19 yet,\nbut I suspect in many cases people don't notice the warning at all\n(because it's buried in some script output) and will only notice once\nthe breaking change ships. Then the deprecation period only gives us a\nlarger ability to say \"I told you so...\", but that is small satisfaction\nto the person whose script was broken.\n\n-Peff\n"},{"id":"363916","messageId":"nycvar.QRO.7.76.6.1811221825140.41@tvgsbejvaqbjf.bet","threadId":"49845","inReplyTo":"08df3706-fe2c-519b-f27c-3f706739d1d4@atlas-elektronik.com","subject":"Re: Git for Windows v2.20.0-rc0","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-11-22T17:25:54Z","receivedAt":"2018-11-22T17:26:18Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stefan,\n\nOn Thu, 22 Nov 2018, stefan.naewe@atlas-elektronik.com wrote:\n\n> Just a quick note:\n> \n> I installed v2.20.0-rc0 with these options:\n> \n> $ cat /etc/install-options.txt\n> Editor Option: VIM\n> Custom Editor Path:\n> Path Option: Cmd\n> SSH Option: OpenSSH\n> CURL Option: OpenSSL\n> CRLF Option: CRLFCommitAsIs\n> Bash Terminal Option: MinTTY\n> Performance Tweaks FSCache: Enabled\n> Use Credential Manager: Enabled\n> Enable Symlinks: Disabled\n> Enable Builtin Rebase: Enabled\n> Enable Builtin Stash: Enabled\n> \n> \n> \n> When starting the git bash two windows pop up instead of one.\n> One that's \"empty\" and the other one containing the real git bash.\n\nThank you for the report. This has been also reported at\nhttps://github.com/git-for-windows/git/issues/1942, and I fixed it in the\nmeantime.\n\nCiao,\nJohannes\n\n> \n> Thanks,\n>   Stefan\n> \n> Am 20.11.2018 um 21:56 schrieb Johannes Schindelin:\n> > Team,\n> > \n> > On Sun, 18 Nov 2018, Junio C Hamano wrote:\n> > \n> >> An early preview release Git v2.20.0-rc0 is now available for\n> >> testing at the usual places.  It is comprised of 887 non-merge\n> >> commits since v2.19.0, contributed by 71 people, 23 of which are\n> >> new faces.\n> > \n> > The \"for Windows\" flavor of Git v2.20.0-rc0 is available here:\n> > \n> > https://github.com/git-for-windows/git/releases/tag/v2.20.0-rc0.windows.1\n> > \n> > The current change log for v2.20.0 reads like this:\n> > \n> > Changes since Git for Windows v2.19.1 (Oct 5th 2018)\n> > \n> > Please note: Git CMD is deprecated as of this Git for Windows version. The\n> > default is to have git.exe in the PATH anyway, so there is no noticeable\n> > difference between CMD and Git CMD. It is impossible to turn off CMD's\n> > behavior where it picks up any git.exe in the current directory, so let's\n> > discourage the use of Git CMD. Users who dislike Git Bash should switch to\n> > Powershell instead.\n> > \n> > New Features\n> > \n> >   • Comes with OpenSSH v7.9p1.\n> >   • The description of the editor option to choose Vim has been clarified\n> >     to state that this unsets core.editor.\n> >   • Comes with cURL v7.62.0.\n> >   • The type of symlinks to create (directory or file) can now be\n> >     specified via the .gitattributes.\n> >   • The FSCache feature now uses a faster method to enumerate files,\n> >     making e.g. git status faster in large repositories.\n> >   • Comes with Git Credential Manager v1.18.3.\n> >   • Comes with Git LFS v2.6.0.\n> >   • Comes with MSYS2 runtime (Git for Windows flavor) based on Cygwin\n> >     2.11.2.\n> >   • The FSCache feature was optimized to become faster.\n> > \n> > Bug Fixes\n> > \n> >   • The 64-bit Portable Git no longer sets pack.packSizeLimit.\n> > \n> > Thanks,\n> > Johannes\n> > \n> \n> \n> -- \n> ----------------------------------------------------------------\n> /dev/random says: To save trouble later, Joe named his cat Roadkill Fred\n> python -c \"print '73746566616e2e6e616577654061746c61732d656c656b74726f6e696b2e636f6d'.decode('hex')\" \n> GPG Key fingerprint = 2DF5 E01B 09C3 7501 BCA9  9666 829B 49C5 9221 27AF"}]}