{"thread":{"id":"48054","subject":"[ANNOUNCE] Git v2.17.0-rc0","startedAt":"2018-03-16T00:57:45Z","lastAt":"2018-03-16T22:19:43Z","messageCount":7,"participants":["Junio C Hamano","Ævar Arnfjörð Bjarmason","Todd Zullinger"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"341858","messageId":"xmqqwoyc3kir.fsf@gitster-ct.c.googlers.com","threadId":"48054","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.17.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-03-16T00:57:00Z","receivedAt":"2018-03-16T00:57:45Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"An early preview release Git v2.17.0-rc0 is now available for\ntesting at the usual places.  It is comprised of 474 non-merge\ncommits since v2.16.0, contributed by 60 people, 18 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.17.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.16.0 are as follows.\nWelcome to the Git development community!\n\n  Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard\n  M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,\n  Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,\n  Lucas Werkmeister, Mathias Rav, Motoki Seki, Stefan Moch,\n  Stephen R Guglielmo, Tatyana Krasnukha, and Thomas Levesque.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée,\n  Ben Peart, Brandon Williams, brian m. carlson, Christian\n  Couder, Daniel Knittl-Frank, Derrick Stolee, Elijah Newren,\n  Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler, Jeff\n  King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Junio\n  C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin Ågren,\n  Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn Thái\n  Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya, Patryk\n  Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones, Randall\n  S. Becker, Rasmus Villemoes, René Scharfe, Robert P. J. Day,\n  Stefan Beller, SZEDER Gábor, Thomas Gummerer, Todd Zullinger,\n  Torsten Bögershausen, and Yasushi SHOJI.\n\n----------------------------------------------------------------\n\nGit 2.17 Release Notes (draft)\n==============================\n\nUpdates since v2.16\n-------------------\n\nUI, Workflows & Features\n\n * \"diff\" family of commands learned \"--find-object=<object-id>\" option\n   to limit the findings to changes that involve the named object.\n\n * \"git format-patch\" learned to give 72-cols to diffstat, which is\n   consistent with other line length limits the subcommand uses for\n   its output meant for e-mails.\n\n * The log from \"git daemon\" can be redirected with a new option; one\n   relevant use case is to send the log to standard error (instead of\n   syslog) when running it from inetd.\n\n * \"git rebase\" learned to take \"--allow-empty-message\" option.\n\n * \"git am\" has learned the \"--quit\" option, in addition to the\n   existing \"--abort\" option; having the pair mirrors a few other\n   commands like \"rebase\" and \"cherry-pick\".\n\n * \"git worktree add\" learned to run the post-checkout hook, just like\n   \"git clone\" runs it upon the initial checkout.\n\n * \"git tag\" learned an explicit \"--edit\" option that allows the\n   message given via \"-m\" and \"-F\" to be further edited.\n\n * \"git fetch --prune-tags\" may be used as a handy short-hand for\n   getting rid of stale tags that are locally held.\n\n * The new \"--show-current-patch\" option gives an end-user facing way\n   to get the diff being applied when \"git rebase\" (and \"git am\")\n   stops with a conflict.\n\n * \"git add -p\" used to offer \"/\" (look for a matching hunk) as a\n   choice, even there was only one hunk, which has been corrected.\n   Also the single-key help is now given only for keys that are\n   enabled (e.g. help for '/' won't be shown when there is only one\n   hunk).\n\n * Since Git 1.7.9, \"git merge\" defaulted to --no-ff (i.e. even when\n   the side branch being merged is a descendant of the current commit,\n   create a merge commit instead of fast-forwarding) when merging a\n   tag object.  This was appropriate default for integrators who pull\n   signed tags from their downstream contributors, but caused an\n   unnecessary merges when used by downstream contributors who\n   habitually \"catch up\" their topic branches with tagged releases\n   from the upstream.  Update \"git merge\" to default to --no-ff only\n   when merging a tag object that does *not* sit at its usual place in\n   refs/tags/ hierarchy, and allow fast-forwarding otherwise, to\n   mitigate the problem.\n\n * \"git status\" can spend a lot of cycles to compute the relation\n   between the current branch and its upstream, which can now be\n   disabled with \"--no-ahead-behind\" option.\n\n * \"git diff\" and friends learned funcname patterns for Go language\n   source files.\n\n * \"git send-email\" learned \"--reply-to=<address>\" option.\n\n * Funcname pattern used for C# now recognizes \"async\" keyword.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * More perf tests for threaded grep\n\n * \"perf\" test output can be sent to codespeed server.\n\n * The build procedure for perl/ part has been greatly simplified by\n   weaning ourselves off of MakeMaker.\n\n * In preparation for implementing narrow/partial clone, the machinery\n   for checking object connectivity used by gc and fsck has been\n   taught that a missing object is OK when it is referenced by a\n   packfile specially marked as coming from trusted repository that\n   promises to make them available on-demand and lazily.\n\n * The machinery to clone & fetch, which in turn involves packing and\n   unpacking objects, has been told how to omit certain objects using\n   the filtering mechanism introduced by another topic.  It now knows\n   to mark the resulting pack as a promisor pack to tolerate missing\n   objects, laying foundation for \"narrow\" clones.\n\n * The first step to getting rid of mru API and using the\n   doubly-linked list API directly instead.\n\n * Retire mru API as it does not give enough abstraction over\n   underlying list API to be worth it.\n\n * Rewrite two more \"git submodule\" subcommands in C.\n\n * The tracing machinery learned to report tweaking of environment\n   variables as well.\n\n * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, \"%s\", str)\n\n * Prevent \"clang-format\" from breaking line after function return type.\n\n * The sequencer infrastructure is shared across \"git cherry-pick\",\n   \"git rebase -i\", etc., and has always spawned \"git commit\" when it\n   needs to create a commit.  It has been taught to do so internally,\n   when able, by reusing the codepath \"git commit\" itself uses, which\n   gives performance boost for a few tens of percents in some sample\n   scenarios.\n\n * Push the submodule version of collision-detecting SHA-1 hash\n   implementation a bit harder on builders.\n\n * Avoid mmapping small files while using packed refs (especially ones\n   with zero size, which would cause later munmap() to fail).\n\n * Conversion from uchar[20] to struct object_id continues.\n\n * More tests for wildmatch functions.\n\n * The code to binary search starting from a fan-out table (which is\n   how the packfile is indexed with object names) has been refactored\n   into a reusable helper.\n\n * We now avoid using identifiers that clash with C++ keywords.  Even\n   though it is not a goal to compile Git with C++ compilers, changes\n   like this help use of code analysis tools that targets C++ on our\n   codebase.\n\n * The executable is now built in 'script' phase in Travis CI integration,\n   to follow the established practice, rather than during 'before_script'\n   phase.  This allows the CI categorize the failures better ('failed'\n   is project's fault, 'errored' is build environment's).\n   (merge 3c93b82920 sg/travis-build-during-script-phase later to maint).\n\n * Writing out the index file when the only thing that changed in it\n   is the untracked cache information is often wasteful, and this has\n   been optimized out.\n\n * Various pieces of Perl code we have have been cleaned up.\n\n\nAlso contains various documentation updates and code clean-ups.\n\n\nFixes since v2.16\n-----------------\n\n * An old regression in \"git describe --all $annotated_tag^0\" has been\n   fixed.\n\n * \"git status\" after moving a path in the working tree (hence making\n   it appear \"removed\") and then adding with the -N option (hence\n   making that appear \"added\") detected it as a rename, but did not\n   report the  old and new pathnames correctly.\n\n * \"git svn dcommit\" did not take into account the fact that a\n   svn+ssh:// URL with a username@ (typically used for pushing) refers\n   to the same SVN repository without the username@ and failed when\n   svn.pushmergeinfo option is set.\n\n * API clean-up around revision traversal.\n\n * \"git merge -Xours/-Xtheirs\" learned to use our/their version when\n   resolving a conflicting updates to a symbolic link.\n\n * \"git clone $there $here\" is allowed even when here directory exists\n   as long as it is an empty directory, but the command incorrectly\n   removed it upon a failure of the operation.\n\n * \"git commit --fixup\" did not allow \"-m<message>\" option to be used\n   at the same time; allow it to annotate resulting commit with more\n   text.\n\n * When resetting the working tree files recursively, the working tree\n   of submodules are now also reset to match.\n\n * \"git stash -- <pathspec>\" incorrectly blew away untracked files in\n   the directory that matched the pathspec, which has been corrected.\n\n * Instead of maintaining home-grown email address parsing code, ship\n   a copy of reasonably recent Mail::Address to be used as a fallback\n   in 'git send-email' when the platform lacks it.\n   (merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).\n\n * \"git add -p\" was taught to ignore local changes to submodules as\n   they do not interfere with the partial addition of regular changes\n   anyway.\n\n * Avoid showing a warning message in the middle of a line of \"git\n   diff\" output.\n   (merge 4e056c989f nd/diff-flush-before-warning later to maint).\n\n * The http tracing code, often used to debug connection issues,\n   learned to redact potentially sensitive information from its output\n   so that it can be more safely sharable.\n   (merge 8ba18e6fa4 jt/http-redact-cookies later to maint).\n\n * Crash fix for a corner case where an error codepath tried to unlock\n   what it did not acquire lock on.\n   (merge 81fcb698e0 mr/packed-ref-store-fix later to maint).\n\n * The split-index mode had a few corner case bugs fixed.\n   (merge ae59a4e44f tg/split-index-fixes later to maint).\n\n * Assorted fixes to \"git daemon\".\n   (merge ed15e58efe jk/daemon-fixes later to maint).\n\n * Completion of \"git merge -s<strategy>\" (in contrib/) did not work\n   well in non-C locale.\n   (merge 7cc763aaa3 nd/list-merge-strategy later to maint).\n\n * Workaround for segfault with more recent versions of SVN.\n   (merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).\n\n * Plug recently introduced leaks in fsck.\n   (merge ba3a08ca0e jt/fsck-code-cleanup later to maint).\n\n * \"git pull --rebase\" did not pass verbosity setting down when\n   recursing into a submodule.\n   (merge a56771a668 sb/pull-rebase-submodule later to maint).\n\n * The way \"git reset --hard\" reports the commit the updated HEAD\n   points at is made consistent with the way how the commit title is\n   generated by the other parts of the system.  This matters when the\n   title is spread across physically multiple lines.\n   (merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).\n\n * Test fixes.\n   (merge 63b1a175ee sg/test-i18ngrep later to maint).\n\n * Some bugs around \"untracked cache\" feature have been fixed.  This\n   will notice corrupt data in the untracked cache left by old and\n   buggy code and issue a warning---the index can be fixed by clearing\n   the untracked cache from it.\n   (merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).\n   (merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).\n\n * \"git blame HEAD COPYING\" in a bare repository failed to run, while\n   \"git blame HEAD -- COPYING\" run just fine.  This has been corrected.\n\n * \"git add\" files in the same directory, but spelling the directory\n   path in different cases on case insensitive filesystem, corrupted\n   the name hash data structure and led to unexpected results.  This\n   has been corrected.\n   (merge c95525e90d bp/name-hash-dirname-fix later to maint).\n\n * \"git rebase -p\" mangled log messages of a merge commit, which is\n   now fixed.\n   (merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).\n\n * Some low level protocol codepath could crash when they get an\n   unexpected flush packet, which is now fixed.\n   (merge bb1356dc64 js/packet-read-line-check-null later to maint).\n\n * \"git check-ignore\" with multiple paths got confused when one is a\n   file and the other is a directory, which has been fixed.\n   (merge d60771e930 rs/check-ignore-multi later to maint).\n\n * \"git describe $garbage\" stopped giving any errors when the garbage\n   happens to be a string with 40 hexadecimal letters.\n   (merge a8e7a2bf0f sb/describe-blob later to maint).\n\n * Code to unquote single-quoted string (used in the parser for\n   configuration files, etc.) did not diagnose bogus input correctly\n   and produced bogus results instead.\n   (merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).\n\n * Many places in \"git apply\" knew that \"/dev/null\" that signals\n   \"there is no such file on this side of the diff\" can be followed by\n   whitespace and garbage when parsing a patch, except for one, which\n   made an otherwise valid patch (e.g. ones from subversion) rejected.\n   (merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).\n\n * We no longer create any *.spec file, so \"make clean\" should not\n   remove it.\n   (merge 4321bdcabb tz/do-not-clean-spec-file later to maint).\n\n * \"git push\" over http transport did not unquote the push-options\n   correctly.\n   (merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).\n\n * \"git send-email\" learned to complain when the batch-size option is\n   not defined when the relogin-delay option is, since these two are\n   mutually required.\n   (merge 9caa70697b xz/send-email-batch-size later to maint).\n\n * Y2k20 fix ;-) for our perl scripts.\n   (merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).\n\n * Threaded \"git grep\" has been optimized to avoid allocation in code\n   section that is covered under a mutex.\n   (merge 38ef24dccf rv/grep-cleanup later to maint).\n\n * \"git subtree\" script (in contrib/) scripted around \"git log\", whose\n   output got affected by end-user configuration like log.showsignature\n   (merge 8841b5222c sg/subtree-signed-commits later to maint).\n\n * While finding unique object name abbreviation, the code may\n   accidentally have read beyond the end of the array of object names\n   in a pack.\n   (merge 21abed500c ds/find-unique-abbrev-optim later to maint).\n\n * Micro optimization in revision traversal code.\n   (merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).\n\n * \"git commit\" used to run \"gc --auto\" near the end, which was lost\n   when the command was reimplemented in C by mistake.\n   (merge 095c741edd ab/gc-auto-in-commit later to maint).\n\n * Allow running a couple of tests with \"sh -x\".\n   (merge c20bf94abc sg/cvs-tests-with-x later to maint).\n\n * Other minor doc, test and build updates and code cleanups.\n   (merge e2a5a028c7 bw/oidmap-autoinit later to maint).\n   (merge ec3b4b06f8 cl/t9001-cleanup later to maint).\n   (merge e1b3f3dd38 ks/submodule-doc-updates later to maint).\n   (merge fbac558a9b rs/describe-unique-abbrev later to maint).\n   (merge 8462ff43e4 tb/crlf-conv-flags later to maint).\n   (merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).\n   (merge 3449847168 cc/sha1-file-name later to maint).\n   (merge ad622a256f ds/use-get-be64 later to maint).\n   (merge f919ffebed sg/cocci-move-array later to maint).\n   (merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).\n   (merge ef5b3a6c5e nd/shared-index-fix later to maint).\n   (merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).\n   (merge b780e4407d jc/worktree-add-short-help later to maint).\n   (merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).\n   (merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).\n   (merge 3738031581 jk/gettext-poison later to maint).\n   (merge 54360a1956 rj/sparse-updates later to maint).\n   (merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).\n   (merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).\n   (merge 4ccf461f56 bp/fsmonitor later to maint).\n   (merge a6119f82b1 jk/test-hashmap-updates later to maint).\n   (merge 5aea9fe6cc rd/typofix later to maint).\n   (merge e4e5da2796 sb/status-doc-fix later to maint).\n   (merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).\n   (merge d023df1ee6 tg/worktree-create-tracking later to maint).\n   (merge 4cbe92fd41 sm/mv-dry-run-update later to maint).\n   (merge 75e5e9c3f7 sb/color-h-cleanup later to maint).\n   (merge 2708ef4af6 sg/t6300-modernize later to maint).\n   (merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).\n   (merge f74bbc8dd2 jk/cached-commit-buffer later to maint).\n   (merge 1316416903 ms/non-ascii-ticks later to maint).\n   (merge 878056005e rs/strbuf-read-file-or-whine later to maint).\n   (merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).\n   (merge edfb8ba068 ot/ref-filter-cleanup later to maint).\n   (merge 11395a3b4b jc/test-must-be-empty later to maint).\n   (merge 768b9d6db7 mk/doc-pretty-fill later to maint).\n   (merge 2caa7b8d27 ab/man-sec-list later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.16.0 are as follows:\n\nAdam Borowski (1):\n      hooks/pre-auto-gc-battery: allow gc to run on non-laptops\n\nAlban Gruin (1):\n      userdiff: add built-in pattern for golang\n\nAlex Bennée (1):\n      send-email: add test for Linux's get_maintainer.pl\n\nAlexander Shopov (1):\n      Mark messages for translations\n\nAndreas G. Schacker (1):\n      doc/read-tree: remove obsolete remark\n\nBen Peart (3):\n      dir.c: don't flag the index as dirty for changes to the untracked cache\n      name-hash: properly fold directory names in adjust_dirname_case()\n      fsmonitor: update documentation to remove reference to invalid config settings\n\nBernhard M. Wiedemann (1):\n      perl: call timegm and timelocal with 4-digit year\n\nBrandon Williams (39):\n      oidmap: ensure map is initialized\n      object_info: change member name from 'typename' to 'type_name'\n      object: rename function 'typename' to 'type_name'\n      blame: rename 'this' variables\n      pack-objects: rename 'this' variables\n      rev-parse: rename 'this' variable\n      submodule: indicate that 'submodule.recurse' doesn't apply to clone\n      diff: rename 'this' variables\n      apply: rename 'try' variables\n      apply: rename 'new' variables\n      checkout: rename 'new' variables\n      help: rename 'new' variables\n      pack-redundant: rename 'new' variables\n      reflog: rename 'new' variables\n      remote: rename 'new' variables\n      combine-diff: rename 'new' variables\n      commit: rename 'new' variables\n      diff-lib: rename 'new' variable\n      diff: rename 'new' variables\n      diffcore-delta: rename 'new' variables\n      entry: rename 'new' variables\n      http: rename 'new' variables\n      imap-send: rename 'new' variables\n      line-log: rename 'new' variables\n      read-cache: rename 'new' variables\n      ref-filter: rename 'new' variables\n      remote: rename 'new' variables\n      split-index: rename 'new' variables\n      submodule: rename 'new' variables\n      trailer: rename 'new' variables\n      unpack-trees: rename 'new' variables\n      init-db: rename 'template' variables\n      environment: rename 'template' variables\n      diff: rename 'template' variables\n      environment: rename 'namespace' variables\n      wrapper: rename 'template' variables\n      tempfile: rename 'template' variables\n      trailer: rename 'template' variables\n      replace: rename 'new' variables\n\nChristian Couder (12):\n      perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}\n      perf/aggregate: refactor printing results\n      perf/aggregate: implement codespeed JSON output\n      perf/run: add conf_opts argument to get_var_from_env_or_config()\n      perf/run: learn about perf.codespeedOutput\n      perf/run: learn to send output to codespeed server\n      perf/run: read GIT_PERF_REPO_NAME from perf.repoName\n      sha1_file: remove static strbuf from sha1_file_name()\n      sha1_file: improve sha1_file_name() perfs\n      perf/aggregate: add --subsection option\n      perf/aggregate: add --reponame option\n      perf/aggregate: sort JSON fields in output\n\nChristian Ludwig (3):\n      t9001: use existing helper in send-email test\n      send-email: rename variable for clarity\n      send-email: support separate Reply-To address\n\nDaniel Knittl-Frank (1):\n      describe: prepend \"tags/\" when describing tags with embedded name\n\nDerrick Stolee (3):\n      packfile: use get_be64() for large offsets\n      sha1_name: fix uninitialized memory errors\n      revision.c: reduce object database queries\n\nElijah Newren (3):\n      Tighten and correct a few testcases for merging and cherry-picking\n      merge-recursive: fix logic ordering issue\n      merge-recursive: add explanation for src_entry and dst_entry\n\nEric Sunshine (5):\n      t5601-clone: test case-conflicting files on case-insensitive filesystem\n      worktree: add: fix 'post-checkout' not knowing new worktree location\n      git-worktree.txt: fix missing \")\" typo\n      git-worktree.txt: fix indentation of example and text of 'add' command\n      t2028: fix minor error and issues in newly-added \"worktree move\" tests\n\nEric Wong (2):\n      fsck: fix leak when traversing trees\n      git-svn: control destruction order to avoid segfault\n\nGargi Sharma (1):\n      mru: Replace mru.[ch] with list.h implementation\n\nGenki Sky (2):\n      rebase: add --allow-empty-message option\n      test-lib.sh: unset XDG_CACHE_HOME\n\nGregory Herrero (1):\n      rebase -p: fix incorrect commit message when calling `git merge`.\n\nJason Merrill (1):\n      git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.\n\nJeff Hostetler (12):\n      upload-pack: add object filtering for partial clone\n      fetch-pack, index-pack, transport: partial clone\n      fetch-pack: add --no-filter\n      fetch: support filters\n      partial-clone: define partial clone settings in config\n      t5616: end-to-end tests for partial clone\n      fetch: inherit filter-spec from partial clone\n      t5616: test bulk prefetch after partial fetch\n      stat_tracking_info: return +1 when branches not equal\n      status: add --[no-]ahead-behind to status and commit for V2 format.\n      status: update short status to respect --no-ahead-behind\n      status: support --no-ahead-behind in long format\n\nJeff King (34):\n      t5600: fix outdated comment about unborn HEAD\n      t5600: modernize style\n      clone: factor out dir_exists() helper\n      clone: do not clean up directories we didn't create\n      sq_quote_argv: drop maxlen parameter\n      trace: avoid unnecessary quoting\n      t5570: use ls-remote instead of clone for interp tests\n      t/lib-git-daemon: record daemon log\n      daemon: fix off-by-one in logging extended attributes\n      daemon: handle NULs in extended attribute string\n      t/lib-git-daemon: add network-protocol helpers\n      daemon: fix length computation in newline stripping\n      t0205: drop redundant test\n      git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME\n      correct error messages for NULL packet_read_line()\n      CodingGuidelines: mention \"static\" and \"extern\"\n      t0002: simplify error checking\n      describe: confirm that blobs actually exist\n      test-hashmap: use ALLOC_ARRAY rather than bare malloc\n      test-hashmap: check allocation computation for overflow\n      test-hashmap: use xsnprintf rather than snprintf\n      test-hashmap: use strbuf_getline rather than fgets\n      test-hashmap: simplify alloc_test_entry\n      test-hashmap: use \"unsigned int\" for hash storage\n      sq_dequote: fix extra consumption of source string\n      t5545: factor out http repository setup\n      remote-curl: unquote incoming push-options\n      commit: drop uses of get_cached_commit_buffer()\n      revision: drop --show-all option\n      t: send verbose test-helper output to fd 4\n      strbuf_read_file(): preserve errno across close() call\n      smart-http: document flush after \"# service\" line\n      t3701: add a test for interactive.diffFilter\n      add--interactive: detect bogus diffFilter output\n\nJohannes Schindelin (2):\n      sequencer: assign only free()able strings to gpg_sign\n      apply: demonstrate a problem applying svn diffs\n\nJon Simons (1):\n      always check for NULL return from packet_read_line()\n\nJonathan Nieder (1):\n      perl: treat PERLLIB_EXTRA as an extra path again\n\nJonathan Tan (20):\n      extension.partialclone: introduce partial clone extension\n      fsck: introduce partialclone extension\n      fsck: support refs pointing to promisor objects\n      fsck: support referenced promisor objects\n      fsck: support promisor objects as CLI argument\n      index-pack: refactor writing of .keep files\n      introduce fetch-object: fetch one promisor object\n      sha1_file: support lazily fetching missing objects\n      rev-list: support termination at promisor objects\n      gc: do not repack promisor packfiles\n      fetch-pack: test support excluding large blobs\n      fetch: refactor calculation of remote list\n      clone: partial clone\n      unpack-trees: batch fetching of missing blobs\n      fetch-pack: restore save_commit_buffer after use\n      http: support cookie redaction when tracing\n      http: support omitting data from traces\n      Docs: split out long-running subprocess handshake\n      packfile: remove GIT_DEBUG_LOOKUP log statements\n      packfile: refactor hash search with fanout table\n\nJuan F. Codagnone (1):\n      mailinfo: avoid segfault when can't open files\n\nJunio C Hamano (18):\n      merge: teach -Xours/-Xtheirs to symbolic link merge\n      worktree: say that \"add\" takes an arbitrary commit in short-help\n      Start 2.17 cycle\n      Git 2.16.1\n      First batch after 2.16\n      blame: tighten command line parser\n      Second batch for 2.17\n      Third batch for 2.17\n      Git 2.16.2\n      merge: allow fast-forward when merging a tracked tag\n      Fourth batch for 2.17\n      Fifth batch for 2.17\n      test_must_be_empty: make sure the file exists, not just empty\n      untracked cache: use git_env_bool() not getenv() for customization\n      Sixth batch for 2.17\n      Seventh batch for 2.17\n      Eighth batch for 2.17\n      Git 2.17-rc0\n\nKaartic Sivaraam (2):\n      Doc/gitsubmodules: make some changes to improve readability and syntax\n      Doc/git-submodule: improve readability and grammar of a sentence\n\nKim Gybels (1):\n      packed_ref_cache: don't use mmap() for small files\n\nLucas Werkmeister (1):\n      daemon: add --log-destination=(stderr|syslog|none)\n\nMartin Ågren (5):\n      sequencer: make lockfiles non-static\n      sequencer: always roll back lock in `do_recursive_merge()`\n      merge-recursive: always roll back lock in `merge_recursive_generic()`\n      merge: always roll back lock in `checkout_fast_forward()`\n      sequencer: do not roll back lockfile unnecessarily\n\nMathias Rav (1):\n      files_initial_transaction_commit(): only unlock if locked\n\nMatthieu Moy (2):\n      send-email: add and use a local copy of Mail::Address\n      perl/Git: remove now useless email-address parsing code\n\nMichael Haggerty (5):\n      struct snapshot: store `start` rather than `header_len`\n      create_snapshot(): use `xmemdupz()` rather than a strbuf\n      find_reference_location(): make function safe for empty snapshots\n      packed_ref_iterator_begin(): make optimization more general\n      load_contents(): don't try to mmap an empty file\n\nMotoki Seki (1):\n      Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes\n\nMårten Kongstad (1):\n      docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'\n\nNathan Payre (1):\n      send-email: extract email-parsing code into a subroutine\n\nNguyễn Thái Ngọc Duy (85):\n      t2203: test status output with porcelain v2 format\n      Use DIFF_DETECT_RENAME for detect_rename assignments\n      wt-status.c: coding style fix\n      wt-status.c: catch unhandled diff status codes\n      wt-status.c: rename rename-related fields in wt_status_change_data\n      wt-status.c: handle worktree renames\n      trace.c: move strbuf_release() out of print_trace_line()\n      add--interactive: ignore submodule changes except HEAD\n      read-cache.c: change type of \"temp\" in write_shared_index()\n      read-cache.c: move tempfile creation/cleanup out of write_shared_index\n      diff.c: flush stdout before printing rename warnings\n      run-command.c: introduce trace_run_command()\n      run-command.c: print program 'git' when tracing git_cmd mode\n      run-command.c: print env vars in trace_run_command()\n      run-command.c: print new cwd in trace_run_command()\n      read-cache: don't write index twice if we can't write shared index\n      worktree.c: add validate_worktree()\n      dir.c: avoid stat() in valid_cached_dir()\n      dir.c: fix missing dir invalidation in untracked code\n      format-patch: keep cover-letter diffstat wrapped in 72 columns\n      completion: fix completing merge strategies on non-C locales\n      dir.c: stop ignoring opendir() error in open_cached_dir()\n      format-patch: reduce patch diffstat width to 72\n      gitignore.txt: elaborate shell glob syntax\n      trace: measure where the time is spent in the index-heavy operations\n      diff.c: refactor pprint_rename() to use strbuf\n      dir.c: ignore paths containing .git when invalidating untracked cache\n      parse-options: support --git-completion-helper\n      parse-options: add OPT_xxx_F() variants\n      parse-options: let OPT__FORCE take optional flags argument\n      git-completion.bash: introduce __gitcomp_builtin\n      completion: use __gitcomp_builtin in _git_add\n      completion: use __gitcomp_builtin in _git_am\n      completion: use __gitcomp_builtin in _git_apply\n      completion: use __gitcomp_builtin in _git_branch\n      completion: use __gitcomp_builtin in _git_checkout\n      completion: use __gitcomp_builtin in _git_cherry_pick\n      completion: use __gitcomp_builtin in _git_clean\n      completion: use __gitcomp_builtin in _git_clone\n      completion: use __gitcomp_builtin in _git_commit\n      completion: use __gitcomp_builtin in _git_config\n      completion: use __gitcomp_builtin in _git_describe\n      completion: use __gitcomp_builtin in _git_difftool\n      completion: use __gitcomp_builtin in _git_fetch\n      completion: use __gitcomp_builtin in _git_fsck\n      completion: use __gitcomp_builtin in _git_gc\n      completion: use __gitcomp_builtin in _git_grep\n      completion: use __gitcomp_builtin in _git_help\n      completion: use __gitcomp_builtin in _git_init\n      completion: use __gitcomp_builtin in _git_ls_files\n      completion: use __gitcomp_builtin in _git_ls_remote\n      completion: use __gitcomp_builtin in _git_merge\n      completion: use __gitcomp_builtin in _git_merge_base\n      completion: use __gitcomp_builtin in _git_mv\n      completion: use __gitcomp_builtin in _git_name_rev\n      completion: use __gitcomp_builtin in _git_notes\n      completion: use __gitcomp_builtin in _git_pull\n      completion: use __gitcomp_builtin in _git_push\n      completion: use __gitcomp_builtin in _git_remote\n      remote: force completing --mirror= instead of --mirror\n      completion: use __gitcomp_builtin in _git_replace\n      completion: use __gitcomp_builtin in _git_reset\n      completion: use __gitcomp_builtin in _git_revert\n      completion: use __gitcomp_builtin in _git_rm\n      completion: use __gitcomp_builtin in _git_show_branch\n      completion: use __gitcomp_builtin in _git_status\n      completion: use __gitcomp_builtin in _git_tag\n      completion: use __gitcomp_builtin in _git_worktree\n      worktree.c: add update_worktree_location()\n      worktree move: new command\n      worktree move: accept destination as directory\n      worktree move: refuse to move worktrees with submodules\n      worktree remove: new command\n      worktree remove: allow it when $GIT_WORK_TREE is already gone\n      am: add --show-current-patch\n      rebase: add --show-current-patch\n      rebase: introduce and use pseudo-ref REBASE_HEAD\n      am: support --quit\n      diff: add --compact-summary\n      object.h: update flag allocation comment\n      object.h: realign object flag allocation comment\n      completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate\n      completion: simplify _git_notes\n      completion: complete --{reuse,reedit}-message= for all notes subcmds\n      completion: more subcommands in _git_notes()\n\nNicolas Morey-Chaisemartin (1):\n      tag: add --edit option\n\nOlga Telezhnaya (3):\n      mru: use double-linked list from list.h\n      ref-filter: get rid of duplicate code\n      ref-filter: get rid of goto\n\nPatryk Obara (14):\n      clang-format: adjust penalty for return type line break\n      http-push: improve error log\n      sha1_file: convert pretend_sha1_file to object_id\n      dir: convert struct sha1_stat to use object_id\n      sha1_file: convert hash_sha1_file to object_id\n      cache: clear whole hash buffer with oidclr\n      match-trees: convert splice_tree to object_id\n      commit: convert commit_tree* to object_id\n      notes: convert combine_notes_* to object_id\n      notes: convert write_notes_tree to object_id\n      sha1_file: convert write_sha1_file to object_id\n      sha1_file: convert force_object_loose to object_id\n      sha1_file: convert write_loose_object to object_id\n      sha1_file: rename hash_sha1_file_literally\n\nPhillip Wood (25):\n      t3404: check intermediate squash messages\n      commit: move empty message checks to libgit\n      Add a function to update HEAD after creating a commit\n      commit: move post-rewrite code to libgit\n      commit: move print_commit_summary() to libgit\n      sequencer: simplify adding Signed-off-by: trailer\n      sequencer: load commit related config\n      sequencer: try to commit without forking 'git commit'\n      t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1\n      sequencer: improve config handling\n      t7505: style fixes\n      t7505: add tests for cherry-pick and rebase -i/-p\n      sequencer: run 'prepare-commit-msg' hook\n      add -p: only display help for active keys\n      add -p: only bind search key if there's more than one hunk\n      add -p: improve error messages\n      add -i: add function to format hunk header\n      t3701: indent here documents\n      t3701: use test_write_lines and write_script\n      t3701: don't hard code sha1 hash values\n      t3701: add failing test for pathological context lines\n      add -p: adjust offsets of subsequent hunks when one is skipped\n      add -p: calculate offset delta for edited patches\n      add -p: fix counting when splitting and coalescing\n      add -p: don't rely on apply's '--recount' option\n\nPrathamesh Chavan (2):\n      submodule: port submodule subcommand 'sync' from shell to C\n      submodule: port submodule subcommand 'deinit' from shell to C\n\nRamsay Jones (3):\n      t4151: consolidate multiple calls to test_i18ngrep\n      config.mak.uname: remove SPARSE_FLAGS setting for cygwin\n      Makefile: suppress a sparse warning for pack-revindex.c\n\nRandall S. Becker (1):\n      hashmap.h: remove unused variable\n\nRasmus Villemoes (2):\n      grep: move grep_source_init outside critical section\n      grep: simplify grep_oid and grep_file\n\nRené Scharfe (15):\n      commit: avoid allocation in clear_commit_marks_many()\n      commit: use clear_commit_marks_many() in remove_redundant()\n      ref-filter: use clear_commit_marks_many() in do_merge_filter()\n      object: add clear_commit_marks_all()\n      bisect: avoid using the rev_info flag leak_pending\n      bundle: avoid using the rev_info flag leak_pending\n      checkout: avoid using the rev_info flag leak_pending\n      revision: remove the unused flag leak_pending\n      commit: remove unused function clear_commit_marks_for_object_array()\n      describe: use strbuf_add_unique_abbrev() for adding short hashes\n      cocci: use format keyword instead of a literal string\n      cocci: simplify check for trivial format strings\n      check-ignore: fix mix of directories and other file types\n      sequencer: factor out strbuf_read_file_or_whine()\n      perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file\n\nRobert P. J. Day (2):\n      t/: correct obvious typo \"detahced\"\n      Correct mispellings of \".gitmodule\" to \".gitmodules\"\n\nSZEDER Gábor (33):\n      travis-ci: build Git during the 'script' phase\n      Use MOVE_ARRAY\n      travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build\n      travis-ci: use 'set -e' in the 32 bit Linux build job\n      travis-ci: don't repeat the path of the cache directory\n      travis-ci: don't run the test suite as root in the 32 bit Linux build\n      travis-ci: don't fail if user already exists on 32 bit Linux build job\n      t5541: add 'test_i18ngrep's missing filename parameter\n      t5812: add 'test_i18ngrep's missing filename parameter\n      t6022: don't run 'git merge' upstream of a pipe\n      t4001: don't run 'git status' upstream of a pipe\n      t5510: consolidate 'grep' and 'test_i18ngrep' patterns\n      t5536: let 'test_i18ngrep' read the file without redirection\n      t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'\n      t: validate 'test_i18ngrep's parameters\n      t: make 'test_i18ngrep' more informative on failure\n      t: document 'test_must_fail ok=<signal-name>'\n      t6300-for-each-ref: fix \"more than one quoting style\" tests\n      Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets\n      t: prevent '-x' tracing from interfering with test helpers' stderr\n      t: add means to disable '-x' tracing for individual test scripts\n      t1507-rev-parse-upstream: don't check the stderr of a shell function\n      t5536: simplify checking of messages output to stderr\n      t3030-merge-recursive: don't check the stderr of a subshell\n      t5500-fetch-pack: don't check the stderr of a subshell\n      t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file\n      t5570-git-daemon: don't check the stderr of a subshell\n      t9903-bash-prompt: don't check the stderr of __git_ps1()\n      t1510-repo-setup: mark as untraceable with '-x'\n      t/README: add a note about don't saving stderr of compound commands\n      travis-ci: run tests with '-x' tracing\n      t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'\n      t9402-git-cvsserver-refs: don't check the stderr of a subshell\n\nStefan Beller (14):\n      diff.h: make pickaxe_opts an unsigned bit field\n      diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit\n      diff: introduce DIFF_PICKAXE_KINDS_MASK\n      diffcore: add a pickaxe option to find a specific blob\n      diff: properly error out when combining multiple pickaxe options\n      diff: use HAS_MULTI_BITS instead of counting bits manually\n      t/lib-submodule-update.sh: clarify test\n      t/lib-submodule-update.sh: fix test ignoring ignored files in submodules\n      unpack-trees: oneway_merge to update submodules\n      submodule: submodule_move_head omits old argument in forced case\n      builtin/pull: respect verbosity settings in submodules\n      send-email: error out when relogin delay is missing\n      color.h: document and modernize header\n      Documentation/git-status: clarify status table for porcelain mode\n\nStefan Moch (2):\n      t7001: add test case for --dry-run\n      mv: remove unneeded 'if (!show_only)'\n\nStephen R Guglielmo (1):\n      subtree: fix add and pull for GPG-signed commits\n\nTatyana Krasnukha (1):\n      apply: handle Subversion diffs with /dev/null gracefully\n\nThomas Gummerer (5):\n      stash: don't delete untracked files that match pathspec\n      read-cache: fix reading the shared index for other repos\n      split-index: don't write cache tree with null oid entries\n      travis: run tests with GIT_TEST_SPLIT_INDEX\n      reset --hard: make use of the pretty machinery\n\nThomas Levesque (1):\n      userdiff.c: add C# async keyword in diff pattern\n\nTodd Zullinger (3):\n      doc: mention 'git show' defaults to HEAD\n      Makefile: remove *.spec from clean target\n      Makefile: add NO_PERL_CPAN_FALLBACKS knob\n\nTorsten Bögershausen (1):\n      convert_to_git(): safe_crlf/checksafe becomes int conv_flags\n\nYasushi SHOJI (1):\n      bisect: debug: convert struct object to object_id\n\nbrian m. carlson (15):\n      repository: pre-initialize hash algo pointer\n      hash: move SHA-1 macros to hash.h\n      hash: create union for hash context allocation\n      builtin/index-pack: improve hash function abstraction\n      builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo\n      sha1_file: switch uses of SHA-1 to the_hash_algo\n      fast-import: switch various uses of SHA-1 to the_hash_algo\n      pack-check: convert various uses of SHA-1 to abstract forms\n      pack-write: switch various SHA-1 values to abstract forms\n      read-cache: abstract away uses of SHA-1\n      csum-file: rename sha1file to hashfile\n      csum-file: abstract uses of SHA-1\n      bulk-checkin: abstract SHA-1 usage\n      hash: update obsolete reference to SHA1_HEADER\n      docs/interpret-trailers: fix agreement error\n\nÆvar Arnfjörð Bjarmason (53):\n      Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto\n      Makefile: under \"make dist\", include the sha1collisiondetection submodule\n      sha1dc_git.h: re-arrange an ifdef chain for a subsequent change\n      Makefile: replace perl/Makefile.PL with simple make rules\n      commit doc: document that -c, -C, -F and --fixup with -m error\n      commit: add support for --fixup <commit> -m\"<extra message>\"\n      perl: avoid *.pmc and fix Error.pm further\n      perf: amend the grep tests to test grep.threads\n      cat-file doc: document that -e will return some output\n      status: add a failing test showing a core.untrackedCache bug\n      wildmatch test: indent with tabs, not spaces\n      wildmatch test: use more standard shell style\n      wildmatch test: don't try to vertically align our output\n      wildmatch test: use a paranoia pattern from nul_match()\n      wildmatch test: remove dead fnmatch() test code\n      wildmatch test: use test_must_fail, not ! for test-wildmatch\n      wildmatch test: perform all tests under all wildmatch() modes\n      wildmatch test: create & test files on disk in addition to in-memory\n      test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite\n      wildmatch test: mark test as EXPENSIVE_ON_WINDOWS\n      fetch: don't redundantly NULL something calloc() gave us\n      fetch: trivially refactor assignment to ref_nr\n      fetch: stop accessing \"remote\" variable indirectly\n      remote: add a macro for \"refs/tags/*:refs/tags/*\"\n      fetch tests: refactor in preparation for testing tag pruning\n      fetch tests: re-arrange arguments for future readability\n      fetch tests: add a tag to be deleted to the pruning tests\n      fetch tests: test --prune and refspec interaction\n      fetch tests: double quote a variable for interpolation\n      fetch tests: expand case/esac for later change\n      fetch tests: fetch <url> <spec> as well as fetch [<remote>]\n      git fetch doc: add a new section to explain the ins & outs of pruning\n      git remote doc: correct dangerous lies about what prune does\n      git-fetch & config doc: link to the new PRUNING section\n      fetch tests: add scaffolding for the new fetch.pruneTags\n      fetch: add a --prune-tags option and fetch.pruneTags config\n      fetch: make the --prune-tags work with <url>\n      update-index doc: note a fixed bug in the untracked cache\n      update-index doc: note the caveat with \"could not open...\"\n      perl: *.pm files should not have the executable bit\n      Git.pm: remove redundant \"use strict\" from sub-package\n      Git.pm: add the \"use warnings\" pragma\n      commit: run git gc --auto just before the post-commit hook\n      gitweb: hard-depend on the Digest::MD5 5.8 module\n      Git.pm: hard-depend on the File::{Temp,Spec} modules\n      git-send-email: unconditionally use Net::{SMTP,Domain}\n      perl: update our ancient copy of Error.pm\n      perl: update our copy of Mail::Address\n      perl: move CPAN loader wrappers to another namespace\n      perl: generalize the Git::LoadCPAN facility\n      perl: move the perl/Git/FromCPAN tree to perl/FromCPAN\n      perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS\n      git manpage: note git-security@googlegroups.com\n\n"},{"id":"341868","messageId":"87fu50e0ht.fsf@evledraar.gmail.com","threadId":"48054","inReplyTo":"xmqqwoyc3kir.fsf@gitster-ct.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.17.0-rc0","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2018-03-16T11:14:06Z","receivedAt":"2018-03-16T11:14:27Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Fri, Mar 16 2018, Junio C. Hamano jotted:\n\n>       gitweb: hard-depend on the Digest::MD5 5.8 module\n\nI've just noticed this now, but while this module is in 5.8 RedHat's\nbutchered perl doesn't have it in the base system, thus this introduces\nthe do-we-even-care regression that git's full test suite won't pass on\na RedHat (or CentOS) base system, because the gitweb tests will fail to\n\"use\" Digest::MD5.\n\nI'm slightly leaning towards not caring about it, since there's no other\nperl distributor that does this sort of split-out of the core, and if\nyou're on a RedHat system they're solving your package problems, so this\nreally only impacts the edge case of git developers and redhat\npackagers, both of whom can just do \"yum install -y perl-Digest-MD5\" to\nfix it.\n"},{"id":"341885","messageId":"xmqqbmfn3ngm.fsf@gitster-ct.c.googlers.com","threadId":"48054","inReplyTo":"87fu50e0ht.fsf@evledraar.gmail.com","subject":"Re: [ANNOUNCE] Git v2.17.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-03-16T18:05:45Z","receivedAt":"2018-03-16T18:06:07Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> On Fri, Mar 16 2018, Junio C. Hamano jotted:\n>\n>>       gitweb: hard-depend on the Digest::MD5 5.8 module\n>\n> I've just noticed this now, but while this module is in 5.8 RedHat's\n> butchered perl doesn't have it in the base system, thus this introduces\n> the do-we-even-care regression that git's full test suite won't pass on\n> a RedHat (or CentOS) base system, because the gitweb tests will fail to\n> \"use\" Digest::MD5.\n>\n> I'm slightly leaning towards not caring about it, since there's no other\n> perl distributor that does this sort of split-out of the core, and if\n> you're on a RedHat system they're solving your package problems, so this\n> really only impacts the edge case of git developers and redhat\n> packagers, both of whom can just do \"yum install -y perl-Digest-MD5\" to\n> fix it.\n\nThanks for noting.  I agree that this is not something that requires\nmore than a mention near the beginning of release notes.\n\nI haven't wordsmithed it fully, but it should say something along\nthe lines of ...\n\n Documentation/RelNotes/2.16.0.txt | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/Documentation/RelNotes/2.16.0.txt b/Documentation/RelNotes/2.16.0.txt\nindex 8f0461eefd..8b4c24200b 100644\n--- a/Documentation/RelNotes/2.16.0.txt\n+++ b/Documentation/RelNotes/2.16.0.txt\n@@ -6,6 +6,16 @@ Backward compatibility notes and other notable changes.\n  * Use of an empty string as a pathspec element that is used for\n    'everything matches' is now an error.\n \n+ * Part of Git that depends on Perl have required at least Perl 5.8\n+   since Git v1.7.4 released in 2010, but we used to assume some core\n+   modules from Perl distribution may not exist on the system and did\n+   a conditional \"eval { require <<module>> }\"; we no longer do this.\n+   On a platform that ships a stripped-down Perl by default, the user\n+   may have to install modules the platform chooses not to ship as\n+   part of its core (e.g. Digest::MD5, File::Temp, File::Spec,\n+   Net::SMTP, NET::Domain).  RedHat/CentOS excludes Digest::MD5 from\n+   its base installation, for example.\n+\n \n Updates since v2.15\n -------------------\n\n"},{"id":"341886","messageId":"xmqq7eqb3nct.fsf@gitster-ct.c.googlers.com","threadId":"48054","inReplyTo":"xmqqbmfn3ngm.fsf@gitster-ct.c.googlers.com","subject":"Re: [ANNOUNCE] Git v2.17.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-03-16T18:08:02Z","receivedAt":"2018-03-16T18:08:20Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> I haven't wordsmithed it fully, but it should say something along\n> the lines of ...\n>\n>  Documentation/RelNotes/2.16.0.txt | 10 ++++++++++\n>  1 file changed, 10 insertions(+)\n\nEh, of course the addition should go to 2.17 release notes ;-)  I\njust happened to be reviewing a topic forked earlier.\n"},{"id":"341955","messageId":"20180316220748.4279-1-tmz@pobox.com","threadId":"48054","inReplyTo":"xmqq7eqb3nct.fsf@gitster-ct.c.googlers.com","subject":"[PATCH] RelNotes: add details on Perl module changes","fromName":"Todd Zullinger","fromEmail":"tmz@pobox.com","sentAt":"2018-03-16T22:07:48Z","receivedAt":"2018-03-16T22:08:07Z","isPatch":true,"sender":{"key":"tmz@pobox.com","avatar":"https://avatars.githubusercontent.com/u/806319?v=4"},"body":"Document changes to core and non-core Perl module handling in 2.17.\n---\nJunio C Hamano <gitster@pobox.com> writes:\n\n>> I haven't wordsmithed it fully, but it should say something along\n>> the lines of ...\n>>\n>>  Documentation/RelNotes/2.16.0.txt | 10 ++++++++++\n>>  1 file changed, 10 insertions(+)\n>\n> Eh, of course the addition should go to 2.17 release notes ;-)  I\n> just happened to be reviewing a topic forked earlier.\n\nMaybe something like this?  I had intended to suggest a note about\nNO_PERL_CPAN_FALLBACKS as well, so that's included too.  I don't know if that\nshould be expanded to provide more of a hint to users/packagers on platforms\nwhere these modules are harder to install, letting them know that we now have\nfallbacks to Error and Mail::Address.  That might allow scripts which were\npreviously excluded to be included on their platforms.\n\n Documentation/RelNotes/2.17.0.txt | 14 ++++++++++++++\n INSTALL                           |  3 ++-\n 2 files changed, 16 insertions(+), 1 deletion(-)\n\ndiff --git a/Documentation/RelNotes/2.17.0.txt b/Documentation/RelNotes/2.17.0.txt\nindex c828d37345..085bf1dba1 100644\n--- a/Documentation/RelNotes/2.17.0.txt\n+++ b/Documentation/RelNotes/2.17.0.txt\n@@ -75,6 +75,20 @@ Performance, Internal Implementation, Development Support etc.\n  * The build procedure for perl/ part has been greatly simplified by\n    weaning ourselves off of MakeMaker.\n \n+ * Perl 5.8 or greater has been required since Git 1.7.4 released in\n+   2010, but we continued to assume some core modules may not exist and\n+   used a conditional \"eval { require <<module>> }\"; we no longer do\n+   this.  Some platforms (Fedora/RedHat/CentOS, for example) ship Perl\n+   without all core modules by default (e.g. Digest::MD5, File::Temp,\n+   File::Spec, Net::Domain, Net::SMTP).  Users on such platforms may\n+   need to install these additional modules.\n+\n+ * As a convenience, we install copies of Perl modules we require which\n+   are not part of the core Perl distribution (e.g. Error and\n+   Mail::Address).  Users and packagers whose operating system provides\n+   these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the\n+   bundled modules.\n+\n  * In preparation for implementing narrow/partial clone, the machinery\n    for checking object connectivity used by gc and fsck has been\n    taught that a missing object is OK when it is referenced by a\ndiff --git a/INSTALL b/INSTALL\nindex 60e515eaf7..c39006e8e7 100644\n--- a/INSTALL\n+++ b/INSTALL\n@@ -126,7 +126,8 @@ Issues of note:\n \t  Redhat/Fedora are reported to ship Perl binary package with some\n \t  core modules stripped away (see http://lwn.net/Articles/477234/),\n \t  so you might need to install additional packages other than Perl\n-\t  itself, e.g. Time::HiRes.\n+\t  itself, e.g. Digest::MD5, File::Spec, File::Temp, Net::Domain,\n+\t  Net::SMTP, and Time::HiRes.\n \n \t- git-imap-send needs the OpenSSL library to talk IMAP over SSL if\n \t  you are using libcurl older than 7.34.0.  Otherwise you can use\n-- \n2.17.0.rc0\n\n"},{"id":"341957","messageId":"20180316221209.GT6611@zaya.teonanacatl.net","threadId":"48054","inReplyTo":"20180316220748.4279-1-tmz@pobox.com","subject":"Re: [PATCH] RelNotes: add details on Perl module changes","fromName":"Todd Zullinger","fromEmail":"tmz@pobox.com","sentAt":"2018-03-16T22:12:09Z","receivedAt":"2018-03-16T22:12:27Z","isPatch":true,"sender":{"key":"tmz@pobox.com","avatar":"https://avatars.githubusercontent.com/u/806319?v=4"},"body":"I wrote:\n> Document changes to core and non-core Perl module handling in 2.17.\n\nThis should have:\n\nSigned-off-by: Todd Zullinger <tmz@pobox.com>\n\nAnd perhaps also:\n\nHelped-by: Junio C Hamano <gitster@pobox.com>\n\nsince I borrowed liberally from your initial text. :)\n\n> ---\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n>>> I haven't wordsmithed it fully, but it should say something along\n>>> the lines of ...\n>>>\n>>>  Documentation/RelNotes/2.16.0.txt | 10 ++++++++++\n>>>  1 file changed, 10 insertions(+)\n>>\n>> Eh, of course the addition should go to 2.17 release notes ;-)  I\n>> just happened to be reviewing a topic forked earlier.\n> \n> Maybe something like this?  I had intended to suggest a note about\n> NO_PERL_CPAN_FALLBACKS as well, so that's included too.  I don't know if that\n> should be expanded to provide more of a hint to users/packagers on platforms\n> where these modules are harder to install, letting them know that we now have\n> fallbacks to Error and Mail::Address.  That might allow scripts which were\n> previously excluded to be included on their platforms.\n> \n>  Documentation/RelNotes/2.17.0.txt | 14 ++++++++++++++\n>  INSTALL                           |  3 ++-\n>  2 files changed, 16 insertions(+), 1 deletion(-)\n> \n> diff --git a/Documentation/RelNotes/2.17.0.txt b/Documentation/RelNotes/2.17.0.txt\n> index c828d37345..085bf1dba1 100644\n> --- a/Documentation/RelNotes/2.17.0.txt\n> +++ b/Documentation/RelNotes/2.17.0.txt\n> @@ -75,6 +75,20 @@ Performance, Internal Implementation, Development Support etc.\n>   * The build procedure for perl/ part has been greatly simplified by\n>     weaning ourselves off of MakeMaker.\n>  \n> + * Perl 5.8 or greater has been required since Git 1.7.4 released in\n> +   2010, but we continued to assume some core modules may not exist and\n> +   used a conditional \"eval { require <<module>> }\"; we no longer do\n> +   this.  Some platforms (Fedora/RedHat/CentOS, for example) ship Perl\n> +   without all core modules by default (e.g. Digest::MD5, File::Temp,\n> +   File::Spec, Net::Domain, Net::SMTP).  Users on such platforms may\n> +   need to install these additional modules.\n> +\n> + * As a convenience, we install copies of Perl modules we require which\n> +   are not part of the core Perl distribution (e.g. Error and\n> +   Mail::Address).  Users and packagers whose operating system provides\n> +   these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the\n> +   bundled modules.\n> +\n>   * In preparation for implementing narrow/partial clone, the machinery\n>     for checking object connectivity used by gc and fsck has been\n>     taught that a missing object is OK when it is referenced by a\n> diff --git a/INSTALL b/INSTALL\n> index 60e515eaf7..c39006e8e7 100644\n> --- a/INSTALL\n> +++ b/INSTALL\n> @@ -126,7 +126,8 @@ Issues of note:\n>  \t  Redhat/Fedora are reported to ship Perl binary package with some\n>  \t  core modules stripped away (see http://lwn.net/Articles/477234/),\n>  \t  so you might need to install additional packages other than Perl\n> -\t  itself, e.g. Time::HiRes.\n> +\t  itself, e.g. Digest::MD5, File::Spec, File::Temp, Net::Domain,\n> +\t  Net::SMTP, and Time::HiRes.\n>  \n>  \t- git-imap-send needs the OpenSSL library to talk IMAP over SSL if\n>  \t  you are using libcurl older than 7.34.0.  Otherwise you can use\n\n-- \nTodd\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nThe secret of life is honesty and fair dealing. If you can fake that,\nyou've got it made.\n    -- Groucho Marx\n\n"},{"id":"341958","messageId":"xmqqd103zms6.fsf@gitster-ct.c.googlers.com","threadId":"48054","inReplyTo":"20180316220748.4279-1-tmz@pobox.com","subject":"Re: [PATCH] RelNotes: add details on Perl module changes","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-03-16T22:19:21Z","receivedAt":"2018-03-16T22:19:43Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Todd Zullinger <tmz@pobox.com> writes:\n\n> Document changes to core and non-core Perl module handling in 2.17.\n> ...\n> Maybe something like this?  I had intended to suggest a note about\n> NO_PERL_CPAN_FALLBACKS as well, so that's included too.\n\nThanks.  A help like this in individual areas from people more\nfamiliar than I am is greatly appreciated.\n\n"}]}