{"thread":{"id":"48645","subject":"[ANNOUNCE] Git v2.18.0-rc1","startedAt":"2018-06-04T13:54:12Z","lastAt":"2018-06-11T16:15:44Z","messageCount":5,"participants":["Junio C Hamano","Lars Schneider","Duy Nguyen"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"349243","messageId":"xmqqwove4pzo.fsf@gitster-ct.c.googlers.com","threadId":"48645","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.18.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-06-04T13:53:47Z","receivedAt":"2018-06-04T13:54:12Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"A release candidate Git v2.18.0-rc1 is now available for testing\nat the usual places.  It is comprised of 842 non-merge commits\nsince v2.17.0, contributed by 65 people, 20 of which are new faces.\n\nI plan to go offline for most of the remainder of the week, and then\ntag (hopefully) the last -rc early next week, with any urgent\nregression fix accumulated on the list during this week.  Happy bug\nhunting ;-)\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.18.0-rc1' 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.17.0 are as follows.\nWelcome to the Git development community!\n\n  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,\n  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,\n  Florian Gamböck, Harald Nordgren, Leif Middelschulte,\n  Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,\n  Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto\n  Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,\n  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian\n  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,\n  David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,\n  Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,\n  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,\n  Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,\n  Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,\n  Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,\n  Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,\n  Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas\n  Gummerer, Todd Zullinger, and Torsten Bögershausen.\n\n----------------------------------------------------------------\n\nGit 2.18 Release Notes (draft)\n==============================\n\nUpdates since v2.17\n-------------------\n\nUI, Workflows & Features\n\n * Rename detection logic in \"diff\" family that is used in \"merge\" has\n   learned to guess when all of x/a, x/b and x/c have moved to z/a,\n   z/b and z/c, it is likely that x/d added in the meantime would also\n   want to move to z/d by taking the hint that the entire directory\n   'x' moved to 'z'.  A bug causing dirty files involved in a rename\n   to be overwritten during merge has also been fixed as part of this\n   work.  Incidentally, this also avoids updating a file in the\n   working tree after a (non-trivial) merge whose result matches what\n   our side originally had.\n\n * \"git filter-branch\" learned to use a different exit code to allow\n   the callers to tell the case where there was no new commits to\n   rewrite from other error cases.\n\n * When built with more recent cURL, GIT_SSL_VERSION can now specify\n   \"tlsv1.3\" as its value.\n\n * \"git gui\" learned that \"~/.ssh/id_ecdsa.pub\" and\n   \"~/.ssh/id_ed25519.pub\" are also possible SSH key files.\n   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).\n\n * \"git gui\" performs commit upon CTRL/CMD+ENTER but the\n   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the\n   same key binding.  It now does.\n   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).\n\n * \"git gui\" has been taught to work with old versions of tk (like\n   8.5.7) that do not support \"ttk::style theme use\" as a way to query\n   the current theme.\n   (merge 4891961105 cb/git-gui-ttk-style later to maint).\n\n * \"git rebase\" has learned to honor \"--signoff\" option when using\n   backends other than \"am\" (but not \"--preserve-merges\").\n\n * \"git branch --list\" during an interrupted \"rebase -i\" now lets\n   users distinguish the case where a detached HEAD is being rebased\n   and a normal branch is being rebased.\n\n * \"git mergetools\" learned talking to guiffy.\n\n * The scripts in contrib/emacs/ have outlived their usefulness and\n   have been replaced with a stub that errors out and tells the user\n   there are replacements.\n\n * The new \"checkout-encoding\" attribute can ask Git to convert the\n   contents to the specified encoding when checking out to the working\n   tree (and the other way around when checking in).\n\n * The \"git config\" command uses separate options e.g. \"--int\",\n   \"--bool\", etc. to specify what type the caller wants the value to\n   be interpreted as.  A new \"--type=<typename>\" option has been\n   introduced, which would make it cleaner to define new types.\n\n * \"git config --get\" learned the \"--default\" option, to help the\n   calling script.  Building on top of the above changes, the\n   \"git config\" learns \"--type=color\" type.  Taken together, you can\n   do things like \"git config --get foo.color --default blue\" and get\n   the ANSI color sequence for the color given to foo.color variable,\n   or \"blue\" if the variable does not exist.\n\n * \"git ls-remote\" learned an option to allow sorting its output based\n   on the refnames being shown.\n\n * The command line completion (in contrib/) has been taught that \"git\n   stash save\" has been deprecated (\"git stash push\" is the preferred\n   spelling in the new world) and does not offer it as a possible\n   completion candidate when \"git stash push\" can be.\n\n * \"git gc --prune=nonsense\" spent long time repacking and then\n   silently failed when underlying \"git prune --expire=nonsense\"\n   failed to parse its command line.  This has been corrected.\n\n * Error messages from \"git push\" can be painted for more visibility.\n\n * \"git http-fetch\" (deprecated) had an optional and experimental\n   \"feature\" to fetch only commits and/or trees, which nobody used.\n   This has been removed.\n\n * The functionality of \"$GIT_DIR/info/grafts\" has been superseded by\n   the \"refs/replace/\" mechanism for some time now, but the internal\n   code had support for it in many places, which has been cleaned up\n   in order to drop support of the \"grafts\" mechanism.\n\n * \"git worktree add\" learned to check out an existing branch.\n\n * \"git --no-pager cmd\" did not have short-and-sweet single letter\n   option. Now it does as \"-P\".\n   (merge 7213c28818 js/no-pager-shorthand later to maint).\n\n * \"git rebase\" learned \"--rebase-merges\" to transplant the whole\n   topology of commit graph elsewhere.\n\n * \"git status\" learned to pay attention to UI related diff\n   configuration variables such as diff.renames.\n\n * The command line completion mechanism (in contrib/) learned to load\n   custom completion file for \"git $command\" where $command is a\n   custom \"git-$command\" that the end user has on the $PATH when using\n   newer version of bash.\n\n * \"git send-email\" can sometimes offer confirmation dialog \"Send this\n   email?\" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action\n   'Edit' has been added to this dialog's choice.\n\n * With merge.renames configuration set to false, the recursive merge\n   strategy can be told not to spend cycles trying to find renamed\n   paths and merge them accordingly.\n\n * \"git status\" learned to honor a new status.renames configuration to\n   skip rename detection, which could be useful for those who want to\n   do so without disabling the default rename detection done by the\n   \"git diff\" command.\n\n * Command line completion (in contrib/) learned to complete pathnames\n   for various commands better.\n\n * \"git blame\" learns to unhighlight uninteresting metadata from the\n   originating commit on lines that are the same as the previous one,\n   and also paint lines in different colors depending on the age of\n   the commit.\n\n * Transfer protocol v2 learned to support the partial clone.\n\n * When a short hexadecimal string is used to name an object but there\n   are multiple objects that share the string as the prefix of their\n   names, the code lists these ambiguous candidates in a help message.\n   These object names are now sorted according to their types for\n   easier eyeballing.\n\n * \"git fetch $there $refspec\" that talks over protocol v2 can take\n   advantage of server-side ref filtering; the code has been extended\n   so that this mechanism triggers also when fetching with configured\n   refspec.\n\n * Our HTTP client code used to advertise that we accept gzip encoding\n   from the other side; instead, just let cURL library to advertise\n   and negotiate the best one.\n\n * \"git p4\" learned to \"unshelve\" shelved commit from P4.\n   (merge 123f631761 ld/p4-unshelve later to maint).\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * A \"git fetch\" from a repository with insane number of refs into a\n   repository that is already up-to-date still wasted too many cycles\n   making many lstat(2) calls to see if these objects at the tips\n   exist as loose objects locally.  These lstat(2) calls are optimized\n   away by enumerating all loose objects beforehand.\n   It is unknown if the new strategy negatively affects existing use\n   cases, fetching into a repository with many loose objects from a\n   repository with small number of refs.\n\n * Git can be built to use either v1 or v2 of the PCRE library, and so\n   far, the build-time configuration USE_LIBPCRE=YesPlease instructed\n   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1\n   and USE_LIBPCRE2 can be used to explicitly choose which version to\n   use, as before.\n\n * The build procedure learned to optionally use symbolic links\n   (instead of hardlinks and copies) to install \"git-foo\" for built-in\n   commands, whose binaries are all identical.\n\n * Conversion from uchar[20] to struct object_id continues.\n\n * The way \"git worktree prune\" worked internally has been simplified,\n   by assuming how \"git worktree move\" moves an existing worktree to a\n   different place.\n\n * Code clean-up for the \"repository\" abstraction.\n   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).\n\n * Code to find the length to uniquely abbreviate object names based\n   on packfile content, which is a relatively recent addtion, has been\n   optimized to use the same fan-out table.\n\n * The mechanism to use parse-options API to automate the command line\n   completion continues to get extended and polished.\n\n * Copies of old scripted Porcelain commands in contrib/examples/ have\n   been removed.\n\n * Some tests that rely on the exact hardcoded values of object names\n   have been updated in preparation for hash function migration.\n\n * Perf-test update.\n\n * Test helper update.\n\n * The effort continues to refactor the internal global data structure\n   to make it possible to open multiple repositories, work with and\n   then close them,\n\n * Small test-helper programs have been consolidated into a single\n   binary.\n\n * API clean-up around ref-filter code.\n\n * Shell completion (in contrib) that gives list of paths have been\n   optimized somewhat.\n\n * The index file is updated to record the fsmonitor section after a\n   full scan was made, to avoid wasting the effort that has already\n   spent.\n\n * Performance measuring framework in t/perf learned to help bisecting\n   performance regressions.\n\n * Some multi-word source filenames are being renamed to separate\n   words with dashes instead of underscores.\n\n * An reusable \"memory pool\" implementation has been extracted from\n   fast-import.c, which in turn has become the first user of the\n   mem-pool API.\n\n * A build-time option has been added to allow Git to be told to refer\n   to its associated files relative to the main binary, in the same\n   way that has been possible on Windows for quite some time, for\n   Linux, BSDs and Darwin.\n\n * Precompute and store information necessary for ancestry traversal\n   in a separate file to optimize graph walking.\n\n * The effort to pass the repository in-core structure throughout the\n   API continues.  This round deals with the code that implements the\n   refs/replace/ mechanism.\n\n * The build procedure \"make DEVELOPER=YesPlease\" learned to enable a\n   bit more warning options depending on the compiler used to help\n   developers more.  There also is \"make DEVOPTS=tokens\" knob\n   available now, for those who want to help fixing warnings we\n   usually ignore, for example.\n\n * A new version of the transport protocol is being worked on.\n\n * The code to interface to GPG has been restructured somewhat to make\n   it cleaner to integrate with other types of signature systems later.\n\n * The code has been taught to use the duplicated information stored\n   in the commit-graph file to learn the tree object name for a commit\n   to avoid opening and parsing the commit object when it makes sense\n   to do so.\n\n * \"git gc\" in a large repository takes a lot of time as it considers\n   to repack all objects into one pack by default.  The command has\n   been taught to pretend as if the largest existing packfile is\n   marked with \".keep\" so that it is left untouched while objects in\n   other packs and loose ones are repacked.\n\n * The transport protocol v2 is getting updated further.\n\n * The codepath around object-info API has been taught to take the\n   repository object (which in turn tells the API which object store\n   the objects are to be located).\n\n * \"git pack-objects\" needs to allocate tons of \"struct object_entry\"\n   while doing its work, and shrinking its size helps the performance\n   quite a bit.\n\n * The implementation of \"git rebase -i --root\" has been updated to use\n   the sequencer machinery more.\n\n * Developer support update, by using BUG() macro instead of die() to\n   mark codepaths that should not happen more clearly.\n\n * Developer support.  Use newer GCC on one of the builds done at\n   TravisCI.org to get more warnings and errors diagnosed.\n\n * Conversion from uchar[20] to struct object_id continues.\n\n * By code restructuring of submodule merge in merge-recursive,\n   informational messages from the codepath are now given using the\n   same mechanism as other output, and honor the merge.verbosity\n   configuration.  The code also learned to give a few new messages\n   when a submodule three-way merge resolves cleanly when one side\n   records a descendant of the commit chosen by the other side.\n\n * Avoid unchecked snprintf() to make future code auditing easier.\n   (merge ac4896f007 jk/snprintf-truncation later to maint).\n\n * Many tests hardcode the raw object names, which would change once\n   we migrate away from SHA-1.  While some of them must test against\n   exact object names, most of them do not have to use hardcoded\n   constants in the test.  The latter kind of tests have been updated\n   to test the moral equivalent of the original without hardcoding the\n   actual object names.\n\n * The list of commands with their various attributes were spread\n   across a few places in the build procedure, but it now is getting a\n   bit more consolidated to allow more automation.\n\n * Quite a many tests assumed that newly created refs are made as\n   loose refs using the files backend, which have been updated to use\n   proper plumbing like rev-parse and update-ref, to avoid breakage\n   once we start using different ref backends.\n\n\nAlso contains various documentation updates and code clean-ups.\n\n\nFixes since v2.17\n-----------------\n\n * \"git shortlog cruft\" aborted with a BUG message when run outside a\n   Git repository.  The command has been taught to complain about\n   extra and unwanted arguments on its command line instead in such a\n   case.\n   (merge 4aa0161e83 ma/shortlog-revparse later to maint).\n\n * \"git stash push -u -- <pathspec>\" gave an unnecessary and confusing\n   error message when there was no tracked files that match the\n   <pathspec>, which has been fixed.\n   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).\n\n * \"git tag --contains no-such-commit\" gave a full list of options\n   after giving an error message.\n   (merge 3bb0923f06 ps/contains-id-error-message later to maint).\n\n * \"diff-highlight\" filter (in contrib/) learned to undertand \"git log\n   --graph\" output better.\n   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).\n\n * when refs that do not point at committish are given, \"git\n   filter-branch\" gave a misleading error messages.  This has been\n   corrected.\n   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).\n\n * \"git submodule status\" misbehaved on a submodule that has been\n   removed from the working tree.\n   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).\n\n * When credential helper exits very quickly without reading its\n   input, it used to cause Git to die with SIGPIPE, which has been\n   fixed.\n   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).\n\n * \"git rebase --keep-empty\" still removed an empty commit if the\n   other side contained an empty commit (due to the \"does an\n   equivalent patch exist already?\" check), which has been corrected.\n   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).\n\n * Some codepaths, including the refs API, get and keep relative\n   paths, that go out of sync when the process does chdir(2).  The\n   chdir-notify API is introduced to let these codepaths adjust these\n   cached paths to the new current directory.\n   (merge fb9c2d2703 jk/relative-directory-fix later to maint).\n\n * \"cd sub/dir && git commit ../path\" ought to record the changes to\n   the file \"sub/path\", but this regressed long time ago.\n   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).\n\n * Recent introduction of \"--log-destination\" option to \"git daemon\"\n   did not work well when the daemon was run under \"--inetd\" mode.\n   (merge e67d906d73 lw/daemon-log-destination later to maint).\n\n * Small fix to the autoconf build procedure.\n   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).\n\n * Fix an unexploitable (because the oversized contents are not under\n   attacker's control) buffer overflow.\n   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).\n\n * Recent simplification of build procedure forgot a bit of tweak to\n   the build procedure of contrib/mw-to-git/\n   (merge d8698987f3 ab/simplify-perl-makefile later to maint).\n\n * Moving a submodule that itself has submodule in it with \"git mv\"\n   forgot to make necessary adjustment to the nested sub-submodules;\n   now the codepath learned to recurse into the submodules.\n\n * \"git config --unset a.b\", when \"a.b\" is the last variable in an\n   otherwise empty section \"a\", left an empty section \"a\" behind, and\n   worse yet, a subsequent \"git config a.c value\" did not reuse that\n   empty shell and instead created a new one.  These have been\n   (partially) corrected.\n   (merge c71d8bb38a js/empty-config-section-fix later to maint).\n\n * \"git worktree remove\" learned that \"-f\" is a shorthand for\n   \"--force\" option, just like for \"git worktree add\".\n   (merge d228eea514 sb/worktree-remove-opt-force later to maint).\n\n * The completion script (in contrib/) learned to clear cached list of\n   command line options upon dot-sourcing it again in a more efficient\n   way.\n   (merge 94408dc71c sg/completion-clear-cached later to maint).\n\n * \"git svn\" had a minor thinko/typo which has been fixed.\n   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).\n\n * During a \"rebase -i\" session, the code could give older timestamp\n   to commits created by later \"pick\" than an earlier \"reword\", which\n   has been corrected.\n   (merge 12f7babd6b js/ident-date-fix later to maint).\n\n * \"git submodule status\" did not check the symbolic revision name it\n   computed for the submodule HEAD is not the NULL, and threw it at\n   printf routines, which has been corrected.\n   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).\n\n * When fed input that already has In-Reply-To: and/or References:\n   headers and told to add the same information, \"git send-email\"\n   added these headers separately, instead of appending to an existing\n   one, which is a violation of the RFC.  This has been corrected.\n   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).\n\n * \"git fast-export\" had a regression in v2.15.0 era where it skipped\n   some merge commits in certain cases, which has been corrected.\n   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).\n\n * The code did not propagate the terminal width to subprocesses via\n   COLUMNS environment variable, which it now does.  This caused\n   trouble to \"git column\" helper subprocess when \"git tag --column=row\"\n   tried to list the existing tags on a display with non-default width.\n   (merge b5d5a567fb nd/term-columns later to maint).\n\n * We learned that our source files with \".pl\" and \".py\" extensions\n   are Perl and Python files respectively and changes to them are\n   better viewed as such with appropriate diff drivers.\n   (merge 7818b619e2 ab/perl-python-attrs later to maint).\n\n * \"git rebase -i\" sometimes left intermediate \"# This is a\n   combination of N commits\" message meant for the human consumption\n   inside an editor in the final result in certain corner cases, which\n   has been fixed.\n   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).\n\n * A test to see if the filesystem normalizes UTF-8 filename has been\n   updated to check what we need to know in a more direct way, i.e. a\n   path created in NFC form can be accessed with NFD form (or vice\n   versa) to cope with APFS as well as HFS.\n   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).\n\n * \"git format-patch --cover --attach\" created a broken MIME multipart\n   message for the cover letter, which has been fixed by keeping the\n   cover letter as plain text file.\n   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).\n\n * The split-index feature had a long-standing and dormant bug in\n   certain use of the in-core merge machinery, which has been fixed.\n   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).\n\n * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not\n   render illustration in a literal block correctly when indented with\n   HT by default. The problem is fixed by forcing 8-space tabs.\n   (merge 379805051d bc/asciidoctor-tab-width later to maint).\n\n * Code clean-up to adjust to a more recent lockfile API convention that\n   allows lockfile instances kept on the stack.\n   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).\n\n * the_repository->index is not a allocated piece of memory but\n   repo_clear() indiscriminately attempted to free(3) it, which has\n   been corrected.\n   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).\n\n * Code clean-up to avoid non-standard-conformant pointer arithmetic.\n   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).\n\n * Code clean-up to turn history traversal more robust in a\n   semi-corrupt repository.\n   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).\n\n * \"git update-ref A B\" is supposed to ensure that ref A does not yet\n   exist when B is a NULL OID, but this check was not done correctly\n   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.\n\n * \"git submodule update\" and \"git submodule add\" supported the\n   \"--reference\" option to borrow objects from a neighbouring local\n   repository like \"git clone\" does, but lacked the more recent\n   invention \"--dissociate\".  Also \"git submodule add\" has been taught\n   to take the \"--progress\" option.\n   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).\n\n * Update credential-netrc helper (in contrib/) to allow customizing\n   the GPG used to decrypt the encrypted .netrc file.\n   (merge 786ef50a23 lm/credential-netrc later to maint).\n\n * \"git submodule update\" attempts two different kinds of \"git fetch\"\n   against the upstream repository to grab a commit bound at the\n   submodule's path, but it incorrectly gave up if the first kind\n   (i.e. a normal fetch) failed, making the second \"last resort\" one\n   (i.e. fetching an exact commit object by object name) ineffective.\n   This has been corrected.\n   (merge e30d833671 sb/submodule-update-try-harder later to maint).\n\n * Error behaviour of \"git grep\" when it cannot read the index was\n   inconsistent with other commands that uses the index, which has\n   been corrected to error out early.\n   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).\n\n * We used to call regfree() after regcomp() failed in some codepaths,\n   which have been corrected.\n   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).\n\n * The import-tars script (in contrib/) has been taught to handle\n   tarballs with overly long paths that use PAX extended headers.\n   (merge 12ecea46e3 pa/import-tars-long-names later to maint).\n\n * \"git rev-parse Y...\" etc. misbehaved when given endpoints were\n   not committishes.\n   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).\n\n * \"git pull -recurse-submodules --rebase\", when the submodule\n   repository's history did not have anything common between ours and\n   the upstream's, failed to execute.  We need to fetch from them to\n   continue even in such a case.\n   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).\n\n * \"git remote update\" can take both a single remote nickname and a\n   nickname for remote groups, but only one of them was documented.\n   (merge a97447a42a nd/remote-update-doc later to maint).\n\n * Other minor doc, test and build updates and code cleanups.\n   (merge 248f66ed8e nd/trace-with-env later to maint).\n   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).\n   (merge 5988eb631a ab/doc-hash-brokenness later to maint).\n   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).\n   (merge 05e293c1ac jk/flockfile-stdio later to maint).\n   (merge e9184b0789 jk/t5561-missing-curl later to maint).\n   (merge b1801b85a3 nd/worktree-move later to maint).\n   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).\n   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).\n   (merge 8523b1e355 en/doc-typoes later to maint).\n   (merge 43b44ccfe7 js/t5404-path-fix later to maint).\n   (merge decf711fc1 ps/test-chmtime-get later to maint).\n   (merge 22d11a6e8e es/worktree-docs later to maint).\n   (merge 92a5dbbc22 tg/use-git-contacts later to maint).\n   (merge adc887221f tq/t1510 later to maint).\n   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).\n   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).\n   (merge cd1e606bad bc/mailmap-self later to maint).\n   (merge f7997e3682 ao/config-api-doc later to maint).\n   (merge ee930754d8 jk/apply-p-doc later to maint).\n   (merge 011b648646 nd/pack-format-doc later to maint).\n   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).\n   (merge f6b82970aa sg/t5516-fixes later to maint).\n   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).\n   (merge 7d0ee47c11 js/test-unset-prereq later to maint).\n   (merge 5356a3c354 ah/misc-doc-updates later to maint).\n   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).\n   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).\n   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).\n   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).\n   (merge 590551ca2c rd/tag-doc-lightweight later to maint).\n   (merge 44f560fc16 rd/init-typo later to maint).\n   (merge f156a0934a rd/p4-doc-markup-env later to maint).\n   (merge 2a00502b14 tg/doc-sec-list later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.17.0 are as follows:\n\nAnders Kaseorg (1):\n      Documentation/git-bisect.txt: git bisect term → git bisect terms\n\nAndreas Heiduk (9):\n      git-svn: search --authors-prog in PATH too\n      git-svn: allow empty email-address using authors-prog and authors-file\n      doc: improve formatting in githooks.txt\n      doc: align 'diff --no-index' in text and synopsis\n      doc: clarify ignore rules for git ls-files\n      doc: add '-d' and '-o' for 'git push'\n      git-svn: remove ''--add-author-from' for 'commit-diff'\n      doc: add note about shell quoting to revision.txt\n      doc: normalize [--options] to [options] in git-diff\n\nAntonio Ospite (1):\n      doc: fix config API documentation about config_with_options\n\nBeat Bolli (1):\n      git-gui: search for all current SSH key types\n\nBen Peart (7):\n      fsmonitor: fix incorrect buffer size when printing version number\n      fsmonitor: force index write after full scan\n      test-drop-caches: simplify delay loading of NtSetSystemInformation\n      merge: update documentation for {merge,diff}.renameLimit\n      merge: add merge.renames config setting\n      merge: pass aggressive when rename detection is turned off\n      add status config and command line options for rename detection\n\nBill Ritcher (1):\n      mergetools: add support for guiffy\n\nBirger Skogeng Pedersen (1):\n      git-gui: bind CTRL/CMD+numpad ENTER to do_commit\n\nBrandon Williams (79):\n      pkt-line: introduce packet_read_with_status\n      pkt-line: allow peeking a packet line without consuming it\n      pkt-line: add delim packet support\n      upload-pack: convert to a builtin\n      upload-pack: factor out processing lines\n      transport: use get_refs_via_connect to get refs\n      connect: convert get_remote_heads to use struct packet_reader\n      connect: discover protocol version outside of get_remote_heads\n      transport: store protocol version\n      protocol: introduce enum protocol_version value protocol_v2\n      test-pkt-line: introduce a packet-line test helper\n      serve: introduce git-serve\n      ls-refs: introduce ls-refs server command\n      connect: request remote refs using v2\n      transport: convert get_refs_list to take a list of ref prefixes\n      transport: convert transport_get_remote_refs to take a list of ref prefixes\n      ls-remote: pass ref prefixes when requesting a remote's refs\n      fetch: pass ref prefixes when fetching\n      push: pass ref prefixes when pushing\n      upload-pack: introduce fetch server command\n      fetch-pack: perform a fetch using v2\n      fetch-pack: support shallow requests\n      connect: refactor git_connect to only get the protocol version once\n      connect: don't request v2 when pushing\n      transport-helper: remove name parameter\n      transport-helper: refactor process_connect_service\n      transport-helper: introduce stateless-connect\n      pkt-line: add packet_buf_write_len function\n      remote-curl: create copy of the service name\n      remote-curl: store the protocol version the server responded with\n      http: allow providing extra headers for http requests\n      http: don't always add Git-Protocol header\n      http: eliminate \"# service\" line when using protocol v2\n      remote-curl: implement stateless-connect command\n      remote-curl: don't request v2 when pushing\n      commit: allow partial commits with relative paths\n      serve: introduce the server-option capability\n      ls-remote: send server options when using protocol v2\n      fetch: send server options when using protocol v2\n      refspec: move refspec parsing logic into its own file\n      refspec: rename struct refspec to struct refspec_item\n      refspec: factor out parsing a single refspec\n      refspec: introduce struct refspec\n      refspec: convert valid_fetch_refspec to use parse_refspec\n      submodule--helper: convert push_check to use struct refspec\n      pull: convert get_tracking_branch to use refspec_item_init\n      transport: convert transport_push to use struct refspec\n      remote: convert check_push_refs to use struct refspec\n      remote: convert match_push_refs to use struct refspec\n      clone: convert cmd_clone to use refspec_item_init\n      fast-export: convert to use struct refspec\n      remote: convert push refspecs to struct refspec\n      remote: convert fetch refspecs to struct refspec\n      remote: remove add_prune_tags_to_fetch_refspec\n      transport-helper: convert to use struct refspec\n      fetch: convert fetch_one to use struct refspec\n      fetch: convert refmap to use struct refspec\n      refspec: remove the deprecated functions\n      fetch: convert do_fetch to take a struct refspec\n      fetch: convert get_ref_map to take a struct refspec\n      fetch: convert prune_refs to take a struct refspec\n      remote: convert get_stale_heads to take a struct refspec\n      remote: convert apply_refspecs to take a struct refspec\n      remote: convert query_refspecs to take a struct refspec\n      remote: convert get_ref_match to take a struct refspec\n      remote: convert match_explicit_refs to take a struct refspec\n      push: check for errors earlier\n      push: convert to use struct refspec\n      transport: convert transport_push to take a struct refspec\n      send-pack: store refspecs in a struct refspec\n      transport: remove transport_verify_remote_names\n      http-push: store refspecs in a struct refspec\n      remote: convert match_push_refs to take a struct refspec\n      remote: convert check_push_refs to take a struct refspec\n      submodule: convert push_unpushed_submodules to take a struct refspec\n      refspec: consolidate ref-prefix generation logic\n      fetch: generate ref-prefixes when using a configured refspec\n      remote-curl: accept all encodings supported by curl\n      remote-curl: accept compressed responses with protocol v2\n\nCasey Fitzpatrick (3):\n      submodule: clean up substitutions in script\n      submodule: add --progress option to add command\n      submodule: add --dissociate option to add/update commands\n\nChristian Couder (7):\n      perf/aggregate: add display_dir()\n      perf/aggregate: add --sort-by=regression option\n      perf/run: add --subsection option\n      t/perf: add scripts to bisect performance regressions\n      perf/aggregate: use Getopt::Long for option parsing\n      perf/bisect_run_script: disable codespeed\n      t990X: use '.git/objects' as 'deep inside .git' path\n\nChristian Hesse (2):\n      perl: fix installing modules from contrib\n      Makefile: mark perllibdir as a .PHONY target\n\nClemens Buchacher (2):\n      git-gui: workaround ttk:style theme use\n      completion: improve ls-files filter performance\n\nDan Jacques (3):\n      Makefile: generate Perl header from template file\n      Makefile: add Perl runtime prefix support\n      exec_cmd: RUNTIME_PREFIX on some POSIX systems\n\nDavid Turner (1):\n      t: make many tests depend less on the refs being files\n\nDerrick Stolee (20):\n      packfile: define and use bsearch_pack()\n      sha1_name: use bsearch_pack() for abbreviations\n      csum-file: rename hashclose() to finalize_hashfile()\n      csum-file: refactor finalize_hashfile() method\n      commit-graph: add format document\n      graph: add commit graph design document\n      commit-graph: create git-commit-graph builtin\n      commit-graph: implement write_commit_graph()\n      commit-graph: implement git-commit-graph write\n      commit-graph: implement git commit-graph read\n      commit-graph: add core.commitGraph setting\n      commit-graph: close under reachability\n      commit: integrate commit graph with commit parsing\n      commit-graph: read only from specific pack-indexes\n      commit-graph: build graph from starting commits\n      commit-graph: implement \"--append\" option\n      treewide: rename tree to maybe_tree\n      commit: create get_commit_tree() method\n      treewide: replace maybe_tree with accessor methods\n      commit-graph: lazy-load trees for commits\n\nDrew DeVault (1):\n      git-send-email: allow re-editing of message\n\nEckhard S. Maaß (1):\n      wt-status: use settings from git_diff_ui_config\n\nElijah Newren (72):\n      directory rename detection: basic testcases\n      directory rename detection: directory splitting testcases\n      directory rename detection: testcases to avoid taking detection too far\n      directory rename detection: partially renamed directory testcase/discussion\n      directory rename detection: files/directories in the way of some renames\n      directory rename detection: testcases checking which side did the rename\n      directory rename detection: more involved edge/corner testcases\n      directory rename detection: testcases exploring possibly suboptimal merges\n      directory rename detection: miscellaneous testcases to complete coverage\n      directory rename detection: tests for handling overwriting untracked files\n      directory rename detection: tests for handling overwriting dirty files\n      merge-recursive: move the get_renames() function\n      merge-recursive: introduce new functions to handle rename logic\n      merge-recursive: fix leaks of allocated renames and diff_filepairs\n      merge-recursive: make !o->detect_rename codepath more obvious\n      merge-recursive: split out code for determining diff_filepairs\n      merge-recursive: make a helper function for cleanup for handle_renames\n      merge-recursive: add get_directory_renames()\n      merge-recursive: check for directory level conflicts\n      merge-recursive: add computation of collisions due to dir rename & merging\n      merge-recursive: check for file level conflicts then get new name\n      merge-recursive: when comparing files, don't include trees\n      merge-recursive: apply necessary modifications for directory renames\n      merge-recursive: avoid clobbering untracked files with directory renames\n      merge-recursive: fix overwriting dirty files involved in renames\n      merge-recursive: fix remaining directory rename + dirty overwrite cases\n      directory rename detection: new testcases showcasing a pair of bugs\n      merge-recursive: avoid spurious rename/rename conflict from dir renames\n      merge-recursive: ensure we write updates for directory-renamed file\n      Documentation: fix several one-character-off spelling errors\n      Documentation: normalize spelling of 'normalised'\n      directory rename detection: basic testcases\n      directory rename detection: directory splitting testcases\n      directory rename detection: testcases to avoid taking detection too far\n      directory rename detection: partially renamed directory testcase/discussion\n      directory rename detection: files/directories in the way of some renames\n      directory rename detection: testcases checking which side did the rename\n      directory rename detection: more involved edge/corner testcases\n      directory rename detection: testcases exploring possibly suboptimal merges\n      directory rename detection: miscellaneous testcases to complete coverage\n      directory rename detection: tests for handling overwriting untracked files\n      directory rename detection: tests for handling overwriting dirty files\n      merge-recursive: move the get_renames() function\n      merge-recursive: introduce new functions to handle rename logic\n      merge-recursive: fix leaks of allocated renames and diff_filepairs\n      merge-recursive: make !o->detect_rename codepath more obvious\n      merge-recursive: split out code for determining diff_filepairs\n      merge-recursive: make a helper function for cleanup for handle_renames\n      Make running git under other debugger-like programs easy\n      unpack_trees: fix breakage when o->src_index != o->dst_index\n      merge-recursive: add get_directory_renames()\n      merge-recursive: check for directory level conflicts\n      merge-recursive: add computation of collisions due to dir rename & merging\n      merge-recursive: check for file level conflicts then get new name\n      merge-recursive: when comparing files, don't include trees\n      merge-recursive: apply necessary modifications for directory renames\n      merge-recursive: avoid clobbering untracked files with directory renames\n      merge-recursive: fix overwriting dirty files involved in renames\n      merge-recursive: fix remaining directory rename + dirty overwrite cases\n      directory rename detection: new testcases showcasing a pair of bugs\n      merge-recursive: avoid spurious rename/rename conflict from dir renames\n      merge-recursive: improve add_cacheinfo error handling\n      merge-recursive: move more is_dirty handling to merge_content\n      merge-recursive: avoid triggering add_cacheinfo error with dirty mod\n      t6046: testcases checking whether updates can be skipped in a merge\n      merge-recursive: fix was_tracked() to quit lying with some renamed paths\n      merge-recursive: fix remainder of was_dirty() to use original index\n      merge-recursive: make \"Auto-merging\" comment show for other merges\n      merge-recursive: fix check for skipability of working tree updates\n      merge-recursive: provide pair of `unpack_trees_{start,finish}()`\n      rev-parse: check lookup'ed commit references for NULL\n      RelNotes: remove duplicate release note\n\nEric Sunshine (5):\n      t3200: verify \"branch --list\" sanity when rebasing from detached HEAD\n      t2028: tighten grep expression to make \"move worktree\" test more robust\n      git-worktree.txt: recommend 'git worktree remove' over manual deletion\n      git-worktree.txt: unify command-line prompt in example blocks\n      configure.ac: fix botched FREAD_READS_DIRECTORIES check\n\nErik E Brady (1):\n      credential: ignore SIGPIPE when writing to credential helpers\n\nFlorian Gamböck (1):\n      completion: load completion file for external subcommand\n\nHarald Nordgren (1):\n      ls-remote: create '--sort' option\n\nJameson Miller (3):\n      fast-import: rename mem_pool type to mp_block\n      fast-import: introduce mem_pool type\n      mem-pool: move reusable parts of memory pool into its own file\n\nJeff King (54):\n      diff-highlight: correct test graph diagram\n      diff-highlight: use test_tick in graph test\n      diff-highlight: prefer \"echo\" to \"cat\" in tests\n      diff-highlight: test interleaved parallel lines of history\n      diff-highlight: test graphs with --color\n      diff-highlight: use flush() helper consistently\n      diff-highlight: detect --graph by indent\n      set_git_dir: die when setenv() fails\n      add chdir-notify API\n      set_work_tree: use chdir_notify\n      refs: use chdir_notify to update cached relative paths\n      config: move flockfile() closer to unlocked functions\n      t5561: drop curl stderr redirects\n      t5561: skip tests if curl is not available\n      ref-filter: use \"struct object_id\" consistently\n      ref-filter: make ref_array_item allocation more consistent\n      ref-filter: factor ref_array pushing into its own function\n      t7004: fix mistaken tag name\n      gpg-interface: handle bool user.signingkey\n      gpg-interface: modernize function declarations\n      gpg-interface: use size_t for signature buffer size\n      gpg-interface: fix const-correctness of \"eol\" pointer\n      gpg-interface: extract gpg line matching helper\n      gpg-interface: find the last gpg signature line\n      apply: clarify \"-p\" documentation\n      pager: set COLUMNS to term_columns()\n      mark_tree_contents_uninteresting(): drop missing object check\n      mark_parents_uninteresting(): drop missing object check\n      mark_parents_uninteresting(): replace list with stack\n      mark_parents_uninteresting(): avoid most allocation\n      get_main_ref_store: BUG() when outside a repository\n      config: die when --blob is used outside a repository\n      http: use strbufs instead of fixed buffers\n      log_write_email_headers: use strbufs\n      shorten_unambiguous_ref: use xsnprintf\n      fmt_with_err: add a comment that truncation is OK\n      submodule-config: verify submodule names as paths\n      is_ntfs_dotgit: use a size_t for traversing string\n      is_hfs_dotgit: match other .git files\n      skip_prefix: add case-insensitive variant\n      verify_path: drop clever fallthrough\n      verify_dotfile: mention case-insensitivity in comment\n      update-index: stat updated files earlier\n      verify_path: disallow symlinks in .gitmodules\n      index-pack: make fsck error message more specific\n      fsck: simplify \".git\" check\n      fsck: actually fsck blob data\n      fsck: detect gitmodules files\n      fsck: handle promisor objects in .gitmodules check\n      fsck: check .gitmodules content\n      fsck: call fsck_finish() after fscking objects\n      unpack-objects: call fsck_finish() after fscking objects\n      index-pack: check .gitmodules files with --strict\n      fsck: complain when .gitmodules is a symlink\n\nJohannes Schindelin (68):\n      git_config_set: fix off-by-two\n      t1300: rename it to reflect that `repo-config` was deprecated\n      t1300: demonstrate that --replace-all can \"invent\" newlines\n      config --replace-all: avoid extra line breaks\n      t1300: avoid relying on a bug\n      t1300: remove unreasonable expectation from TODO\n      t5404: relax overzealous test\n      t1300: add a few more hairy examples of sections becoming empty\n      t1300: `--unset-all` can leave an empty section behind (bug)\n      config: introduce an optional event stream while parsing\n      config: avoid using the global variable `store`\n      config_set_store: rename some fields for consistency\n      git_config_set: do not use a state machine\n      git_config_set: make use of the config parser's event stream\n      git config --unset: remove empty sections (in the common case)\n      git_config_set: reuse empty sections\n      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows\n      mingw/msvc: use the new-style RUNTIME_PREFIX helper\n      color: introduce support for colorizing stderr\n      push: test to verify that push errors are colored\n      config: document the settings to colorize push errors/hints\n      gettext: avoid initialization if the locale dir is not present\n      git_setup_gettext: plug memory leak\n      sequencer: avoid using errno clobbered by rollback_lock_file()\n      sequencer: make rearrange_squash() a bit more obvious\n      sequencer: refactor how original todo list lines are accessed\n      sequencer: offer helpful advice when a command was rescheduled\n      sequencer: introduce new commands to reset the revision\n      sequencer: introduce the `merge` command\n      sequencer: fast-forward `merge` commands, if possible\n      rebase-helper --make-script: introduce a flag to rebase merges\n      rebase: introduce the --rebase-merges option\n      sequencer: make refs generated by the `label` command worktree-local\n      sequencer: handle post-rewrite for merge commands\n      rebase --rebase-merges: avoid \"empty merges\"\n      pull: accept --rebase=merges to recreate the branch topology\n      rebase -i: introduce --rebase-merges=[no-]rebase-cousins\n      rebase -i --rebase-merges: add a section to the man page\n      argv_array: offer to split a string by whitespace\n      commit: Let the callback of for_each_mergetag return on error\n      replace: avoid using die() to indicate a bug\n      tests: introduce test_unset_prereq, for debugging\n      replace: \"libify\" create_graft() and callees\n      replace: prepare create_graft() for converting graft files wholesale\n      replace: introduce --convert-graft-file\n      Add a test for `git replace --convert-graft-file`\n      Deprecate support for .git/info/grafts\n      filter-branch: stop suggesting to use grafts\n      technical/shallow: stop referring to grafts\n      technical/shallow: describe why shallow cannot use replace refs\n      Remove obsolete script to convert grafts to replace refs\n      rebase -i: demonstrate bugs with fixup!/squash! commit messages\n      rebase -i: Handle \"combination of <n> commits\" with GETTEXT_POISON\n      sequencer: always commit without editing when asked for\n      rebase --skip: clean up commit message after a failed fixup/squash\n      sequencer: extract helper to update active_cache_tree\n      sequencer: learn about the special \"fake root commit\" handling\n      rebase -i --root: let the sequencer handle even the initial part\n      sequencer: allow introducing new root commits\n      rebase --rebase-merges: a \"merge\" into a new root is a fast-forward\n      rebase --rebase-merges: root commits can be cousins, too\n      test-tool: help verifying BUG() code paths\n      run-command: use BUG() to report bugs, not die()\n      Replace all die(\"BUG: ...\") calls by BUG() ones\n      Convert remaining die*(BUG) messages\n      config: a user-provided invalid section is not a BUG\n      is_ntfs_dotgit: match other .git files\n      is_{hfs,ntfs}_dotgitmodules: add tests\n\nJohannes Sixt (2):\n      sequencer: reset the committer date before commits\n      git: add -P as a short option for --no-pager\n\nJonathan Nieder (6):\n      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories\n      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories\n      Makefile: remove unused @@PERLLIBDIR@@ substitution variable\n      Makefile: quote $INSTLIBDIR when passing it to sed\n      packfile: add repository argument to packed_object_info\n      fetch: do not pass ref-prefixes for fetch by exact SHA1\n\nJonathan Tan (5):\n      grep: remove \"repo\" arg from non-supporting funcs\n      upload-pack: fix error message typo\n      upload-pack: read config when serving protocol v2\n      {fetch,upload}-pack: support filter in protocol v2\n      submodule: do not pass null OID to setup_revisions\n\nJunio C Hamano (21):\n      stash: fix nonsense pipeline\n      The first batch for 2.18 cycle\n      The second batch for 2.18\n      The third batch for 2.18\n      Revert \"Merge branch 'en/rename-directory-detection'\"\n      gc: do not upcase error message shown with die()\n      parseopt: handle malformed --expire arguments more nicely\n      The fourth batch for 2.18\n      The fifth batch for 2.18\n      argv-array: return the pushed string from argv_push*()\n      Git 2.13.7\n      Git 2.14.4\n      Git 2.15.2\n      Git 2.16.4\n      Git 2.17.1\n      The sixth batch for 2.18\n      The seventh batch for 2.18\n      Git 2.18-rc0\n      refspec-api: avoid uninitialized field in refspec item\n      A bit more topics before -rc1\n      Git 2.18-rc1\n\nKaartic Sivaraam (1):\n      branch --list: print useful info whilst interactive rebasing a detached HEAD\n\nLars Schneider (10):\n      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()\n      strbuf: add xstrdup_toupper()\n      strbuf: add a case insensitive starts_with()\n      utf8: teach same_encoding() alternative UTF encoding names\n      utf8: add function to detect prohibited UTF-16/32 BOM\n      utf8: add function to detect a missing UTF-16/32 BOM\n      convert: add 'working-tree-encoding' attribute\n      convert: check for detectable errors in UTF encodings\n      convert: add tracing for 'working-tree-encoding' attribute\n      convert: add round trip check based on 'core.checkRoundtripEncoding'\n\nLeif Middelschulte (1):\n      merge-recursive: give notice when submodule commit gets fast-forwarded\n\nLoganaden Velvindron (1):\n      http: allow use of TLS 1.3\n\nLucas Werkmeister (1):\n      daemon.c: fix condition for redirecting stderr\n\nLuis Marsano (2):\n      git-credential-netrc: adapt to test framework for git\n      git-credential-netrc: accept gpg option\n\nLuke Diamand (1):\n      git-p4: add unshelve command\n\nMartin Ågren (24):\n      git-shortlog.txt: reorder usages\n      shortlog: add usage-string for stdin-reading\n      shortlog: disallow left-over arguments outside repo\n      doc: convert \\--option to --option\n      doc: convert [\\--] to [--]\n      git-[short]log.txt: unify quoted standalone --\n      git-submodule.txt: quote usage in monospace, drop backslash\n      fast-export: fix regression skipping some merge-commits\n      http-fetch: make `-a` standard behaviour\n      walker: drop fields of `struct walker` which are always 1\n      t/helper/test-write-cache: clean up lock-handling\n      refs.c: do not die if locking fails in `write_pseudoref()`\n      refs.c: do not die if locking fails in `delete_pseudoref()`\n      lock_file: make function-local locks non-static\n      lock_file: move static locks into functions\n      refs.c: refer to \"object ID\", not \"sha1\", in error messages\n      t1400: add tests around adding/deleting pseudorefs\n      refs: handle zero oid for pseudorefs\n      merge: setup `opts` later in `checkout_fast_forward()`\n      config: free resources of `struct config_store_data`\n      config: let `config_store_data_clear()` handle `value_regex`\n      config: let `config_store_data_clear()` handle `key`\n      regex: do not call `regfree()` if compilation fails\n      unpack_trees_options: free messages when done\n\nMichal Nazarewicz (1):\n      send-email: simplify Gmail example in the documentation\n\nMichele Locati (1):\n      filter-branch: return 2 when nothing to rewrite\n\nNguyễn Thái Ngọc Duy (108):\n      repository: initialize the_repository in main()\n      repository.c: move env-related setup code back to environment.c\n      repository.c: delete dead functions\n      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()\n      repository: delete ignore_env member\n      gc.txt: more details about what gc does\n      worktree: delete dead code\n      worktree prune: improve prune logic when worktree is moved\n      repository.h: add comment and clarify repo_set_gitdir\n      git.c: move cmd_struct declaration up\n      git.c: add hidden option --list-parseopt-builtins\n      completion: mention the oldest version we need to support\n      completion: factor out _git_xxx calling code\n      completion: add --option completion for most builtin commands\n      completion: delete option-only completion commands\n      completion: use __gitcomp_builtin in _git_ls_tree\n      completion: use __gitcomp_builtin in _git_cherry\n      packfile: keep prepare_packed_git() private\n      t/helper: add an empty test-tool program\n      t/helper: merge test-chmtime into test-tool\n      t/helper: merge test-sha1 into test-tool\n      t/helper: merge test-lazy-init-name-hash into test-tool\n      t/helper: merge test-config into test-tool\n      t/helper: merge test-ctype into test-tool\n      t/helper: merge test-date into test-tool\n      t/helper: merge (unused) test-delta into test-tool\n      t/helper: merge test-drop-caches into test-tool\n      t/helper: merge test-dump-cache-tree into test-tool\n      t/helper: merge test-dump-split-index into test-tool\n      t/helper: merge test-example-decorate into test-tool\n      t/helper: merge test-genrandom into test-tool\n      t/helper: merge test-hashmap into test-tool\n      t/helper: merge test-index-version into test-tool\n      t/helper: merge (unused) test-match-trees into test-tool\n      t/helper: merge (unused) test-mergesort into test-tool\n      t/helper: merge test-mktemp into test-tool\n      t/helper: merge test-online-cpus into test-tool\n      t/helper: merge test-path-utils into test-tool\n      t/helper: merge test-prio-queue into test-tool\n      t/helper: merge test-read-cache into test-tool\n      t/helper: merge test-ref-store into test-tool\n      t/helper: merge test-regex into test-tool\n      t/helper: merge test-revision-walking into test-tool\n      t/helper: merge test-run-command into test-tool\n      t/helper: merge test-scrap-cache-tree into test-tool\n      t/helper: merge test-sha1-array into test-tool\n      t/helper: merge test-sigchain into test-tool\n      t/helper: merge test-strcmp-offset into test-tool\n      t/helper: merge test-string-list into test-tool\n      t/helper: merge test-submodule-config into test-tool\n      t/helper: merge test-subprocess into test-tool\n      t/helper: merge test-urlmatch-normalization into test-tool\n      t/helper: merge test-wildmatch into test-tool\n      t/helper: merge test-write-cache into test-tool\n      trace.c: export trace_setup_key\n      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean\n      pack-objects: a bit of document about struct object_entry\n      pack-objects: turn type and in_pack_type to bitfields\n      pack-objects: use bitfield for object_entry::dfs_state\n      pack-objects: use bitfield for object_entry::depth\n      pack-objects: move in_pack_pos out of struct object_entry\n      pack-objects: move in_pack out of struct object_entry\n      pack-objects: refer to delta objects by index instead of pointer\n      pack-objects: shrink z_delta_size field in struct object_entry\n      pack-objects: don't check size when the object is bad\n      pack-objects: clarify the use of object_entry::size\n      pack-objects: shrink size field in struct object_entry\n      pack-objects: shrink delta_size field in struct object_entry\n      pack-objects: reorder members to shrink struct object_entry\n      ci: exercise the whole test suite with uncommon code in pack-objects\n      t7700: have closing quote of a test at the beginning of line\n      repack: add --keep-pack option\n      gc: add --keep-largest-pack option\n      gc: add gc.bigPackThreshold config\n      gc: handle a corner case in gc.bigPackThreshold\n      gc --auto: exclude base pack if not enough mem to \"repack -ad\"\n      pack-objects: show some progress when counting kept objects\n      connect.c: mark die_initial_contact() NORETURN\n      Makefile: detect compiler and enable more warnings in DEVELOPER=1\n      submodule--helper: don't print null in 'submodule status'\n      doc: keep first level section header in upper case\n      pack-objects: validation and documentation about unreachable options\n      completion: fix misspelled config key aliasesfiletype\n      repository: fix free problem with repo_clear(the_repository)\n      generate-cmds.sh: factor out synopsis extract code\n      generate-cmds.sh: export all commands to command-list.h\n      help: use command-list.h for common command list\n      Remove common-cmds.h\n      pack-format.txt: more details on pack file format\n      column: fix off-by-one default width\n      commit.h: rearrange 'index' to shrink struct commit\n      git.c: convert --list-* to --list-cmds=*\n      git --list-cmds: collect command list in a string_list\n      completion: implement and use --list-cmds=main,others\n      git: support --list-cmds=list-<category>\n      help: add \"-a --verbose\" to list all commands with synopsis\n      help: use command-list.txt for the source of guides\n      command-list.txt: documentation and guide line\n      completion: let git provide the completable command list\n      completion: reduce completable command list\n      Move declaration for alias.c to alias.h\n      completion: add and use --list-cmds=nohelpers\n      completion: add and use --list-cmds=alias\n      completion: allow to customize the completable command list\n      travis-ci: run gcc-8 on linux-gcc jobs\n      Use OPT_SET_INT_F() for cmdline option specification\n      remote.txt: update documentation for 'update' command\n      remote: doc typofix\n\nOlga Telezhnaya (6):\n      ref-filter: add shortcut to work with strbufs\n      ref-filter: start adding strbufs with errors\n      ref-filter: add return value && strbuf to handlers\n      ref-filter: change parsing function error handling\n      ref-filter: add return value to parsers\n      ref-filter: libify get_ref_atom_value()\n\nOrgad Shaneh (1):\n      git-rebase--interactive: fix copy-paste mistake\n\nPaul-Sebastian Ungureanu (2):\n      parse-options: do not show usage upon invalid option value\n      t/helper: 'test-chmtime (--get|-g)' to print only the mtime\n\nPedro Alvarez Piedehierro (1):\n      import-tars: read overlong names from pax extended header\n\nPhilip Oakley (1):\n      Avoid multiple PREFIX definitions\n\nPhillip Wood (7):\n      rebase --root: stop assuming squash_onto is unset\n      rebase -i --keep-empty: don't prune empty commits\n      rebase: respect --no-keep-empty\n      rebase: extend --signoff support\n      rebase -p: error out if --signoff is given\n      rebase --keep-empty: always use interactive rebase\n      rebase --rebase-merges: add test for --keep-empty\n\nPratik Karki (1):\n      test: avoid pipes in git related commands for test\n\nRamsay Jones (1):\n      BUG_exit_code: fix sparse \"symbol not declared\" warning\n\nRené Scharfe (8):\n      sha1_name: use bsearch_pack() in unique_in_pack()\n      bisect: use oid_to_hex() for converting object_id hashes to hex strings\n      run-command: use strbuf_addstr() for adding a string to a strbuf\n      submodule: check for NULL return of get_submodule_ref_store()\n      replace_object: use oidmap\n      fast-export: avoid NULL pointer arithmetic\n      t5512: run git fetch inside test\n      fsmonitor: use internal argv_array of struct child_process\n\nRobert P. J. Day (4):\n      Use proper syntax for replaceables in command docs\n      tag: clarify in the doc that a tag can refer to a non-commit object\n      init: fix grammar in \"templates not found\" msg\n      p4.txt: Use backquotes for variable names\n\nRyan Dammrose (1):\n      push: colorize errors\n\nSZEDER Gábor (22):\n      test_must_be_empty: simplify file existence check\n      t9902-completion: add tests demonstrating issues with quoted pathnames\n      completion: move __git_complete_index_file() next to its helpers\n      completion: simplify prefix path component handling during path completion\n      completion: support completing non-ASCII pathnames\n      completion: improve handling quoted paths on the command line\n      completion: let 'ls-files' and 'diff-index' filter matching paths\n      completion: use 'awk' to strip trailing path components\n      t9902-completion: ignore COMPREPLY element order in some tests\n      completion: remove repeated dirnames with 'awk' during path completion\n      completion: improve handling quoted paths in 'git ls-files's output\n      completion: fill COMPREPLY directly when completing paths\n      completion: reduce overhead of clearing cached --options\n      docs/git-gc: fix minor rendering issue\n      coccinelle: avoid wrong transformation suggestions from commit.cocci\n      t6050-replace: don't disable stdin for the whole test script\n      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX\n      t5516-fetch-push: fix 'push with dry-run' test\n      t5516-fetch-push: fix broken &&-chain\n      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq\n      completion: don't return with error from __gitcomp_file_direct()\n      t9902-completion: exercise __git_complete_index_file() directly\n\nSergey Organov (1):\n      glossary: substitute \"ancestor\" for \"direct ancestor\" in 'push' description.\n\nStefan Agner (1):\n      send-email: avoid duplicate In-Reply-To/References\n\nStefan Beller (81):\n      repository: introduce raw object store field\n      object-store: migrate alternates struct and functions from cache.h\n      object-store: move alt_odb_list and alt_odb_tail to object store\n      object-store: free alt_odb_list\n      object-store: move packed_git and packed_git_mru to object store\n      object-store: close all packs upon clearing the object store\n      pack: move prepare_packed_git_run_once to object store\n      pack: move approximate object count to object store\n      sha1_file: add raw_object_store argument to alt_odb_usable\n      sha1_file: add repository argument to link_alt_odb_entry\n      sha1_file: add repository argument to read_info_alternates\n      sha1_file: add repository argument to link_alt_odb_entries\n      sha1_file: add repository argument to prepare_alt_odb\n      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories\n      sha1_file: allow prepare_alt_odb to handle arbitrary repositories\n      sha1_file: add repository argument to sha1_file_name\n      sha1_file: add repository argument to stat_sha1_file\n      sha1_file: add repository argument to open_sha1_file\n      sha1_file: add repository argument to map_sha1_file_1\n      sha1_file: add repository argument to map_sha1_file\n      sha1_file: add repository argument to sha1_loose_object_info\n      sha1_file: allow sha1_file_name to handle arbitrary repositories\n      sha1_file: allow stat_sha1_file to handle arbitrary repositories\n      sha1_file: allow open_sha1_file to handle arbitrary repositories\n      sha1_file: allow map_sha1_file to handle arbitrary repositories\n      packfile: allow prepare_packed_git_mru to handle arbitrary repositories\n      packfile: allow rearrange_packed_git to handle arbitrary repositories\n      packfile: allow install_packed_git to handle arbitrary repositories\n      packfile: add repository argument to prepare_packed_git_one\n      packfile: add repository argument to prepare_packed_git\n      packfile: add repository argument to reprepare_packed_git\n      packfile: allow prepare_packed_git_one to handle arbitrary repositories\n      packfile: allow prepare_packed_git to handle arbitrary repositories\n      packfile: allow reprepare_packed_git to handle arbitrary repositories\n      packfile: add repository argument to find_pack_entry\n      packfile: allow find_pack_entry to handle arbitrary repositories\n      submodule.h: drop declaration of connect_work_tree_and_git_dir\n      submodule-config: allow submodule_free to handle arbitrary repositories\n      submodule-config: add repository argument to submodule_from_{name, path}\n      submodule-config: remove submodule_from_cache\n      submodule: fixup nested submodules after moving the submodule\n      write_or_die.c: rename to use dashes in file name\n      unicode_width.h: rename to use dash in file name\n      exec_cmd: rename to use dash in file name\n      sha1_name.c: rename to use dash in file name\n      sha1_file.c: rename to use dash in file name\n      replace_object.c: rename to use dash in file name\n      replace-object: move replace_map to object store\n      object-store: move lookup_replace_object to replace-object.h\n      replace-object: eliminate replace objects prepared flag\n      replace-object: check_replace_refs is safe in multi repo environment\n      refs: add repository argument to get_main_ref_store\n      refs: add repository argument to for_each_replace_ref\n      replace-object: add repository argument to prepare_replace_object\n      replace-object: add repository argument to do_lookup_replace_object\n      replace-object: add repository argument to lookup_replace_object\n      refs: store the main ref store inside the repository struct\n      refs: allow for_each_replace_ref to handle arbitrary repositories\n      replace-object: allow prepare_replace_object to handle arbitrary repositories\n      replace-object: allow do_lookup_replace_object to handle arbitrary repositories\n      replace-object: allow lookup_replace_object to handle arbitrary repositories\n      worktree: accept -f as short for --force for removal\n      builtin/blame: dim uninteresting metadata lines\n      builtin/blame: highlight recently changed lines\n      builtin/blame: add new coloring scheme config\n      cache.h: add repository argument to oid_object_info_extended\n      cache.h: add repository argument to oid_object_info\n      packfile: add repository argument to retry_bad_packed_offset\n      packfile: add repository argument to packed_to_object_type\n      packfile: add repository argument to read_object\n      packfile: add repository argument to unpack_entry\n      packfile: add repository argument to cache_or_unpack_entry\n      cache.h: allow oid_object_info to handle arbitrary repositories\n      git-rebase--interactive: clarify arguments\n      object.c: free replace map in raw_object_store_clear\n      replace-object.c: remove the_repository from prepare_replace_object\n      grep: handle corrupt index files early\n      git-submodule.sh: try harder to fetch a submodule\n      submodule.c: move submodule merging to merge-recursive.c\n      merge-recursive: i18n submodule merge output and respect verbosity\n      object.c: clear replace map before freeing it\n\nTakuto Ikuta (1):\n      fetch-pack.c: use oidset to check existence of loose object\n\nTao Qingyun (1):\n      t1510-repo-setup.sh: remove useless mkdir\n\nTaylor Blau (5):\n      builtin/config.c: treat type specifiers singularly\n      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`\n      builtin/config: introduce `--default`\n      config.c: introduce 'git_config_color' to parse ANSI colors\n      builtin/config: introduce `color` type specifier\n\nThomas Gummerer (12):\n      stash push: avoid printing errors\n      stash push -u: don't create empty stash\n      stash: drop superfluos pathspec parameter\n      SubmittingPatches: mention the git contacts command\n      completion: stop showing 'save' for stash by default\n      completion: make stash -p and alias for stash push -p\n      worktree: remove extra members from struct add_opts\n      worktree: improve message when creating a new worktree\n      worktree: factor out dwim_branch function\n      worktree: teach \"add\" to check out existing branches\n      SubmittingPatches: replace numbered attributes with names\n      note git-security@googlegroups.com in more places\n\nTodd Zullinger (1):\n      doc/clone: update caption for GIT URLS cross-reference\n\nTorsten Bögershausen (1):\n      test: correct detection of UTF8_NFD_TO_NFC for APFS\n\nWink Saville (8):\n      rebase-interactive: simplify pick_on_preserving_merges\n      rebase: update invocation of rebase dot-sourced scripts\n      rebase: reindent function git_rebase__interactive\n      rebase: extract functions out of git_rebase__interactive\n      rebase: add and use git_rebase__interactive__preserve_merges\n      rebase: remove unused code paths from git_rebase__interactive\n      rebase: remove unused code paths from git_rebase__interactive__preserve_merges\n      rebase: remove merges_option and a blank line\n\nYuki Kokubun (1):\n      filter-branch: fix errors caused by refs that point at non-committish\n\nbrian m. carlson (123):\n      bulk-checkin: convert index_bulk_checkin to struct object_id\n      builtin/write-tree: convert to struct object_id\n      cache-tree: convert write_*_as_tree to object_id\n      cache-tree: convert remnants to struct object_id\n      resolve-undo: convert struct resolve_undo_info to object_id\n      tree: convert read_tree_recursive to struct object_id\n      ref-filter: convert grab_objectname to struct object_id\n      strbuf: convert strbuf_add_unique_abbrev to use struct object_id\n      wt-status: convert struct wt_status_state to object_id\n      Convert find_unique_abbrev* to struct object_id\n      http-walker: convert struct object_request to use struct object_id\n      send-pack: convert remaining functions to struct object_id\n      replace_object: convert struct replace_object to object_id\n      builtin/mktag: convert to struct object_id\n      archive: convert write_archive_entry_fn_t to object_id\n      archive: convert sha1_file_to_archive to struct object_id\n      builtin/index-pack: convert struct ref_delta_entry to object_id\n      sha1_file: convert read_loose_object to use struct object_id\n      sha1_file: convert check_sha1_signature to struct object_id\n      streaming: convert open_istream to use struct object_id\n      builtin/mktree: convert to struct object_id\n      sha1_file: convert assert_sha1_type to object_id\n      sha1_file: convert retry_bad_packed_offset to struct object_id\n      packfile: convert unpack_entry to struct object_id\n      Convert remaining callers of sha1_object_info_extended to object_id\n      sha1_file: convert sha1_object_info* to object_id\n      builtin/fmt-merge-msg: convert remaining code to object_id\n      builtin/notes: convert static functions to object_id\n      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id\n      streaming: convert istream internals to struct object_id\n      tree-walk: convert tree entry functions to object_id\n      sha1_file: convert read_object_with_reference to object_id\n      sha1_file: convert read_sha1_file to struct object_id\n      Convert lookup_replace_object to struct object_id\n      sha1_file: introduce a constant for max header length\n      convert: convert to struct object_id\n      sha1_name: convert struct min_abbrev_data to object_id\n      t1011: abstract away SHA-1-specific constants\n      t1304: abstract away SHA-1-specific constants\n      t1300: abstract away SHA-1-specific constants\n      t1405: sort reflog entries in a hash-independent way\n      t1411: abstract away SHA-1-specific constants\n      t1507: abstract away SHA-1-specific constants\n      t2020: abstract away SHA-1 specific constants\n      t2101: modernize test style\n      t2101: abstract away SHA-1-specific constants\n      t2107: abstract away SHA-1-specific constants\n      format-patch: make cover letters always text/plain\n      cache: add a function to read an object ID from a buffer\n      server-info: remove unused members from struct pack_info\n      Remove unused member in struct object_context\n      packfile: remove unused member from struct pack_entry\n      packfile: convert has_sha1_pack to object_id\n      sha1-file: convert freshen functions to object_id\n      packfile: convert find_pack_entry to object_id\n      packfile: abstract away hash constant values\n      pack-objects: abstract away hash algorithm\n      pack-redundant: abstract away hash algorithm\n      tree-walk: avoid hard-coded 20 constant\n      tree-walk: convert get_tree_entry_follow_symlinks to object_id\n      fsck: convert static functions to struct object_id\n      submodule-config: convert structures to object_id\n      split-index: convert struct split_index to object_id\n      Update struct index_state to use struct object_id\n      pack-redundant: convert linked lists to use struct object_id\n      index-pack: abstract away hash function constant\n      commit: convert uses of get_sha1_hex to get_oid_hex\n      dir: convert struct untracked_cache_dir to object_id\n      http: eliminate hard-coded constants\n      revision: replace use of hard-coded constants\n      upload-pack: replace use of several hard-coded constants\n      diff: specify abbreviation size in terms of the_hash_algo\n      builtin/receive-pack: avoid hard-coded constants for push certs\n      sha1-file: add functions for hex empty tree and blob OIDs\n      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo\n      builtin/merge: switch tree functions to use object_id\n      merge: convert empty tree constant to the_hash_algo\n      sequencer: convert one use of EMPTY_TREE_SHA1_HEX\n      submodule: convert several uses of EMPTY_TREE_SHA1_HEX\n      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX\n      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX\n      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN\n      sha1_file: convert cached object code to struct object_id\n      cache-tree: use is_empty_tree_oid\n      sequencer: use the_hash_algo for empty tree object ID\n      dir: use the_hash_algo for empty blob object ID\n      sha1_file: only expose empty object constants through git_hash_algo\n      Update shell scripts to compute empty tree object ID\n      add--interactive: compute the empty tree value\n      merge-one-file: compute empty blob object ID\n      Documentation: use 8-space tabs with Asciidoctor\n      Documentation: render revisions correctly under Asciidoctor\n      mailmap: update brian m. carlson's email address\n      t/test-lib: add an SHA1 prerequisite\n      t/test-lib: introduce ZERO_OID\n      t: switch $_z40 to $ZERO_OID\n      t/test-lib: introduce OID_REGEX\n      t: switch $_x40 to $OID_REGEX\n      t0000: annotate with SHA1 prerequisite\n      t1007: annotate with SHA1 prerequisite\n      t1512: skip test if not using SHA-1\n      t4044: skip test if not using SHA-1\n      t: skip pack tests if not using SHA-1\n      t2203: abstract away SHA-1-specific constants\n      t3103: abstract away SHA-1-specific constants\n      t3702: abstract away SHA-1-specific constants\n      t3905: abstract away SHA-1-specific constants\n      t4007: abstract away SHA-1-specific constants\n      t4008: abstract away SHA-1-specific constants\n      t4014: abstract away SHA-1-specific constants\n      t4020: abstract away SHA-1-specific constants\n      t4022: abstract away SHA-1-specific constants\n      t4029: fix test indentation\n      t4029: abstract away SHA-1-specific constants\n      t4030: abstract away SHA-1-specific constants\n      t/lib-diff-alternative: abstract away SHA-1-specific constants\n      t4205: sort log output in a hash-independent way\n      t4042: abstract away SHA-1-specific constants\n      t4045: abstract away SHA-1-specific constants\n      t4208: abstract away SHA-1-specific constants\n      t5300: abstract away SHA-1-specific constants\n      sequencer: ensure labels that are object IDs are rewritten\n      t3430: test clean-up\n\nÆvar Arnfjörð Bjarmason (21):\n      configure: fix a regression in PCRE v1 detection\n      configure: detect redundant --with-libpcre & --with-libpcre1\n      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1\n      Makefile: fix broken bindir_relative variable\n      Makefile: add a gitexecdir_relative variable\n      Makefile: optionally symlink libexec/git-core binaries to bin/git\n      Remove contrib/examples/*\n      doc hash-function-transition: clarify how older gits die on NewHash\n      doc hash-function-transition: clarify what SHAttered means\n      git-svn: avoid warning on undef readline()\n      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER\n      Makefile: add a DEVOPTS to get all of -Wextra\n      git{,-blame}.el: remove old bitrotting Emacs code\n      .gitattributes: add *.pl extension for Perl\n      .gitattributes: use the \"perl\" differ for Perl\n      .gitattributes: add a diff driver for Python\n      sha1-name.c: remove stray newline\n      sha1-array.h: align function arguments\n      git-p4: change \"commitish\" typo to \"committish\"\n      sha1-name.c: move around the collect_ambiguous() function\n      get_short_oid: sort ambiguous objects by type, then SHA-1\n\n"},{"id":"349314","messageId":"781A6400-477F-4A7B-8C17-65BFD280B331@gmail.com","threadId":"48645","inReplyTo":"xmqqwove4pzo.fsf@gitster-ct.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.18.0-rc1","fromName":"Lars Schneider","fromEmail":"larsxschneider@gmail.com","sentAt":"2018-06-05T01:27:52Z","receivedAt":"2018-06-05T01:27:58Z","isPatch":false,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"\n> On 04 Jun 2018, at 06:53, Junio C Hamano <gitster@pobox.com> wrote:\n> \n> A release candidate Git v2.18.0-rc1 is now available for testing\n> at the usual places.  It is comprised of 842 non-merge commits\n> since v2.17.0, contributed by 65 people, 20 of which are new faces.\n> \n> ...\n> \n> * The new \"checkout-encoding\" attribute can ask Git to convert the\n>   contents to the specified encoding when checking out to the working\n>   tree (and the other way around when checking in).\n\nDid you call the feature \"checkout-encoding\" here intentionally?\nThe attribute is called \"working-tree-encoding\" in the final and\nmerged round. Shouldn't we call it that way here too?\n\nThanks,\nLars\n"},{"id":"349542","messageId":"CACsJy8ApqX16VNJ1nJktYVssXHTg+OSi_aZNt=es9BuUw9=1Cg@mail.gmail.com","threadId":"48645","inReplyTo":"xmqqwove4pzo.fsf@gitster-ct.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.18.0-rc1","fromName":"Duy Nguyen","fromEmail":"pclouds@gmail.com","sentAt":"2018-06-06T18:50:03Z","receivedAt":"2018-06-06T18:50:47Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Jun 4, 2018 at 3:53 PM, Junio C Hamano <gitster@pobox.com> wrote:\n>  * \"git pull -recurse-submodules --rebase\", when the submodule\n\nOne dash is missing in --recurse-submodules\n\n>    repository's history did not have anything common between ours and\n>    the upstream's, failed to execute.  We need to fetch from them to\n>    continue even in such a case.\n>    (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).\n-- \nDuy\n"},{"id":"349909","messageId":"xmqqmuw147xq.fsf@gitster-ct.c.googlers.com","threadId":"48645","inReplyTo":"781A6400-477F-4A7B-8C17-65BFD280B331@gmail.com","subject":"Re: [ANNOUNCE] Git v2.18.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-06-11T16:14:09Z","receivedAt":"2018-06-11T16:14:14Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Lars Schneider <larsxschneider@gmail.com> writes:\n\n>> On 04 Jun 2018, at 06:53, Junio C Hamano <gitster@pobox.com> wrote:\n>> \n>> A release candidate Git v2.18.0-rc1 is now available for testing\n>> at the usual places.  It is comprised of 842 non-merge commits\n>> since v2.17.0, contributed by 65 people, 20 of which are new faces.\n>> \n>> ...\n>> \n>> * The new \"checkout-encoding\" attribute can ask Git to convert the\n>>   contents to the specified encoding when checking out to the working\n>>   tree (and the other way around when checking in).\n>\n> Did you call the feature \"checkout-encoding\" here intentionally?\n> The attribute is called \"working-tree-encoding\" in the final and\n> merged round. Shouldn't we call it that way here too?\n\nNo.  Yes, absolutely.  Thanks.\n\n Documentation/RelNotes/2.18.0.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Documentation/RelNotes/2.18.0.txt b/Documentation/RelNotes/2.18.0.txt\nindex 8d0ee5c426..ecd9f8849e 100644\n--- a/Documentation/RelNotes/2.18.0.txt\n+++ b/Documentation/RelNotes/2.18.0.txt\n@@ -50,7 +50,7 @@ UI, Workflows & Features\n    have been replaced with a stub that errors out and tells the user\n    there are replacements.\n \n- * The new \"checkout-encoding\" attribute can ask Git to convert the\n+ * The new \"working-tree-encoding\" attribute can ask Git to convert the\n    contents to the specified encoding when checking out to the working\n    tree (and the other way around when checking in).\n \n"},{"id":"349911","messageId":"xmqqin6p47x0.fsf@gitster-ct.c.googlers.com","threadId":"48645","inReplyTo":"CACsJy8ApqX16VNJ1nJktYVssXHTg+OSi_aZNt=es9BuUw9=1Cg@mail.gmail.com","subject":"Re: [ANNOUNCE] Git v2.18.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-06-11T16:14:35Z","receivedAt":"2018-06-11T16:15:44Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Duy Nguyen <pclouds@gmail.com> writes:\n\n> On Mon, Jun 4, 2018 at 3:53 PM, Junio C Hamano <gitster@pobox.com> wrote:\n>>  * \"git pull -recurse-submodules --rebase\", when the submodule\n>\n> One dash is missing in --recurse-submodules\n\nThanks, will fix.\n"}]}