Git 2.12 Release Notes ====================== Backward compatibility notes. * Use of an empty string that is used for 'everything matches' is still warned and Git asks users to use a more explicit '.' for that instead. The hope is that existing users will not mind this change, and eventually the warning can be turned into a hard error, upgrading the deprecation into removal of this (mis)feature. That is not scheduled to happen in the upcoming release (yet). * The historical argument order "git merge HEAD ..." has been deprecated for quite some time, and will be removed in the upcoming release. Updates since v2.11 ------------------- UI, Workflows & Features * Various updates to "git p4". Performance, Internal Implementation, Development Support etc. * Also contains various documentation updates and code clean-ups. * Fixes since v2.10 ----------------- Unless otherwise noted, all the fixes since v2.9 in the maintenance track are contained in this release (see the maintenance releases' notes for details). * We often decide if a session is interactive by checking if the standard I/O streams are connected to a TTY, but isatty() that comes with Windows incorrectly returned true if it is used on NUL (i.e. an equivalent to /dev/null). This has been fixed. (merge cbb3f3c9b1 js/mingw-isatty later to maint). * "git svn" did not work well with path components that are "0", and some configuration variable it uses were not documented. (merge ea9a93dcc2 ew/svn-fixes later to maint). * "git rev-parse --symbolic" failed with a more recent notation like "HEAD^-1" and "HEAD^!". (merge a2e7b04c44 jk/rev-parse-symbolic-parents-fix later to maint). * An empty directory in a working tree that can simply be nuked used to interfere while merging or cherry-picking a change to create a submodule directory there, which has been fixed.. (merge 5423d2e700 dt/empty-submodule-in-merge later to maint). * The code in "git push" to compute if any commit being pushed in the superproject binds a commit in a submodule that hasn't been pushed out was overly inefficient, making it unusable even for a small project that does not have any submodule but have a reasonable number of refs. (merge 250ab24ab3 hv/submodule-not-yet-pushed-fix later to maint). * "git push --dry-run --recurse-submodule=on-demand" wasn't "--dry-run" in the submodules. (merge 0301c821c5 bw/push-dry-run later to maint). * The output from "git worktree list" was made in readdir() order, and was unstable. (merge 4df1d4d466 nd/worktree-list-fixup later to maint). * mergetool..trustExitCode configuration variable did not apply to built-in tools, but now it does. (merge 2967284456 da/mergetool-trust-exit-code later to maint). * "git p4" LFS support was broken when LFS stores an empty blob. (merge d5eb3cf5e7 ls/p4-empty-file-on-lfs later to maint). * Other minor doc, test and build updates and code cleanups. (merge fa6ca11105 nd/qsort-in-merge-recursive later to maint). (merge fa3142c919 ak/lazy-prereq-mktemp later to maint).