Git 2.9 Release Notes ===================== Backward compatibility note --------------------------- The end-user facing Porcelain level commands in the "git diff" and "git log" by default enables the rename detection; you can still use "diff.renames" configuration variable to disable this. Updates since v2.8 ------------------ UI, Workflows & Features * The end-user facing Porcelain level commands like "diff" and "log" now enables the rename detection by default. * The credential.helper configuration variable is cumulative and there is no good way to override it from the command line. As a special case, giving an empty string as its value now serves as the signal to clear the values specified in various files. * A new "interactive.diffFilter" configuration can be used to customize the diff shown in "git add -i" session. * "git p4" now allows P4 author names to be mapped to Git author names. * "git rebase -x" can be used without passing "-i" option. * "git -c credential.= submodule" can now be used to propagate configuration variables related to credential helper down to the submodules. * "git tag" can create an annotated tag without explicitly given an "-a" (or "-s") option (i.e. when a tag message is given). A new configuration variable, tag.forceSignAnnotated, can be used to tell the command to create signed tag in such a situation. Performance, Internal Implementation, Development Support etc. * The embedded args argv-array in the child process is used to build the command line to run pack-objects instead of using a separate array of strings. (merge 65a3629 mp/upload-pack-use-embedded-args later to maint). * A test for tags has been restructured so that more parts of it can easily be run on a platform without a working GnuPG. * The startup_info data, which records if we are working inside a repository (among other things), are now uniformly available to Git subcommand implementations, and Git avoids attempting to touch references when we are not in a repository. (merge 11e6b3f jk/startup-info later to maint). * The command line argument parser for "receive-pack" has been rewritten to use parse-options. * A major part of "git submodule update" has been ported to C to take advantage of the recently added framework to run download tasks in parallel. * Rename bunch of tests on "git clone" for better organization. (merge 8fbb03a sb/clone-t57-t56 later to maint). * The tests that involve running httpd leaked the system-wide configuration in /etc/gitconfig to the tested environment. (merge 1fad503 jk/test-httpd-config-nosystem later to maint). Also contains various documentation updates and code clean-ups. Fixes since v2.8 ---------------- Unless otherwise noted, all the fixes since v2.8 in the maintenance track are contained in this release (see the maintenance releases' notes for details). * "git config --get-urlmatch", unlike other variants of the "git config --get" family, did not signal error with its exit status when there was no matching configuration. (merge 24990b2 jk/config-get-urlmatch later to maint). * The "--local-env-vars" and "--resolve-git-dir" options of "git rev-parse" failed to work outside a repository when the command's option parsing was rewritten in 1.8.5 era. (merge fc7d47f jk/rev-parse-local-env-vars later to maint). * "git index-pack --keep[=] pack-$name.pack" simply did not work. (merge 0e94242 jc/maint-index-pack-keep later to maint). * Fetching of history by naming a commit object name directly didn't work across remote-curl transport. (merge 754ecb1 gf/fetch-pack-direct-object-fetch later to maint). * A small memory leak in an error codepath has been plugged in xdiff code. (merge 87f1625 rj/xdiff-prepare-plug-leak-on-error-codepath later to maint). * strbuf_getwholeline() did not NUL-terminate the buffer on certain corner cases in its error codepath. (merge b709043 jk/getwholeline-getdelim-empty later to maint). * "git mergetool" did not work well with conflicts that both sides deleted. (merge a298604 da/mergetool-delete-delete-conflict later to maint). * "git send-email" had trouble parsing alias file in mailrc format when lines in it had trailing whitespaces on them. (merge a277d1e jk/send-email-rtrim-mailrc-alias later to maint). * When "git merge --squash" stopped due to conflict, the concluding "git commit" failed to read in the SQUASH_MSG that shows the log messages from all the squashed commits. (merge b64c1e0 ss/commit-squash-msg later to maint). * "git merge FETCH_HEAD" dereferenced NULL pointer when merging nothing into an unborn history (which is arguably unusual usage, which perhaps was the reason why nobody noticed it). (merge b84e65d jv/merge-nothing-into-void later to maint). * Other minor clean-ups and documentation updates (merge aed7480 mm/lockfile-error-message later to maint). (merge bfee614 jc/index-pack later to maint). (merge f870899 ss/exc-flag-is-a-collection-of-bits later to maint). (merge dde7891 pb/t7502-drop-dup later to maint). (merge 3bd1b51 cc/doc-recommend-performance-trace-to-file later to maint). (merge 7d5e9c9 jk/credential-cache-comment-exit later to maint).