Git 2.20 Release Notes ====================== Backward Compatibility Notes ---------------------------- * "git branch -l " used to be a way to ask a reflog to be created while creating a new branch, but that is no longer the case. It is a short-hand for "git branch --list " now. * "git push" into refs/tags/* hierarchy is rejected without getting forced, but "git fetch" (misguidedly) used the "fast forwarding" rule used for the refs/heads/* hierarchy; this has been corrected, which means some fetches of tags that did not fail with older version of Git will fail without "--force" with this version. * "git help -a" now gives verbose output (same as "git help -av"). Those who want the old output may say "git help --no-verbose -a".. * "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n", reported only the alias expansion of "cpn" in earlier versions of Git. It now runs "git cherry-pick --help" to show the manual page of the command, while sending the alias expansion to the standard error stream. * "git send-email" learned to grab address-looking string on any trailer whose name ends with "-by". This is a backward-incompatible change. Adding "--suppress-cc=misc-by" on the command line, or setting sendemail.suppresscc configuration variable to "misc-by", can be used to disable this behaviour. Updates since v2.19 ------------------- UI, Workflows & Features * Running "git clone" against a project that contain two files with pathnames that differ only in cases on a case insensitive filesystem would result in one of the files lost because the underlying filesystem is incapable of holding both at the same time. An attempt is made to detect such a case and warn. * "git checkout -b newbranch [HEAD]" should not have to do as much as checking out a commit different from HEAD. An attempt is made to optimize this special case. * "git rev-list --stdin --branches=" etc. did not quite work, which has been corrected. (merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint). * When editing a patch in a "git add -i" session, a hunk could be made to no-op. The "git apply" program used to reject a patch with such a no-op hunk to catch user mistakes, but it is now updated to explicitly allow a no-op hunk in an edited patch. (merge 22cb3835b9 js/apply-recount-allow-noop later to maint). * The URL to an MSDN page in a comment has been updated. (merge 2ef2ae2917 js/mingw-msdn-url later to maint). * "git ls-remote --sort=" can feed an object that is not yet available into the comparison machinery and segfault, which has been corrected to check such a request upfront and reject it. * When "git bundle" aborts due to an empty commit ranges (i.e. resulting in an empty pack), it left a file descriptor to an lockfile open, which resulted in leftover lockfile on Windows where you cannot remove a file with an open file descriptor. This has been corrected. (merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint). * "git format-patch --stat=" can be used to specify the width used by the diffstat (shown in the cover letter). (merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint). * The way .git/index and .git/sharedindex* files were initially created gave these files different perm bits until they were adjusted for shared repository settings. This was made consistent. (merge c9d6c78870 cc/shared-index-permbits later to maint). * "git rebase --stat" to transplant a piece of history onto a totally unrelated history were not working before and silently showed wrong result. With the recent reimplementation in C, it started to instead die with an error message, as the original logic was not prepared to cope with this case. This has now been fixed. * The advice message to tell the user to migrate an existing graft file to the replace system when a graft file was read was shown even when "git replace --convert-graft-file" command, which is the way the message suggests to use, was running, which made little sense. (merge 8821e90a09 ab/replace-graft-with-replace-advice later to maint). * "git diff --raw" lost ellipses to adjust the output columns for some time now, but the documentation still showed them. * Code cleanup, docfix, build fix, etc. (merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint). (merge b9b07efdb2 tg/conflict-marker-size later to maint). (merge fa0aeea770 sg/doc-trace-appends later to maint). (merge d64324cb60 tb/void-check-attr later to maint). (merge c3b9bc94b9 en/double-semicolon-fix later to maint). (merge 79336116f5 sg/t3701-tighten-trace later to maint). (merge 801fa63a90 jk/dev-build-format-security later to maint). (merge 0597dd62ba sb/string-list-remove-unused later to maint). (merge db2d36fad8 bw/protocol-v2 later to maint). (merge 456d7cd3a9 sg/split-index-test later to maint). (merge 7b6057c852 tq/refs-internal-comment-fix later to maint). (merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint). (merge 55f6bce2c9 fe/doc-updates later to maint). (merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint). (merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint). (merge 4c399442f7 ma/commit-graph-docs later to maint). (merge fc0503b04e ma/t1400-undebug-test later to maint). (merge e56b53553a nd/packobjectshook-doc-fix later to maint). (merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint). (merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint). (merge ad0b8f9575 mw/doc-typofixes later to maint). (merge d9f079ad1a jc/how-to-document-api later to maint). (merge b1492bf315 ma/t7005-bash-workaround later to maint). (merge ac1f98a0df du/rev-parse-is-plumbing later to maint). (merge ca8ed443a5 mm/doc-no-dashed-git later to maint). (merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint). (merge 61018fe9e0 du/cherry-is-plumbing later to maint). (merge c7e5fe79b9 sb/strbuf-h-update later to maint). (merge 8d2008196b tq/branch-create-wo-branch-get later to maint). (merge 2e3c894f4b tq/branch-style-fix later to maint). (merge c5d844af9c sg/doc-show-branch-typofix later to maint). (merge 081d91618b ah/doc-updates later to maint). (merge b84c783882 jc/cocci-preincr later to maint). (merge 5e495f8122 uk/merge-subtree-doc-update later to maint). (merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint). (merge 3063477445 tb/char-may-be-unsigned later to maint). (merge 8c64bc9420 sg/test-rebase-editor-fix later to maint). (merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint). (merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint). (merge 3006f5ee16 ma/reset-doc-rendering-fix later to maint). (merge 4c2eb06419 sg/daemon-test-signal-fix later to maint). (merge d27525e519 ss/msvc-strcasecmp later to maint).