Git 2.27 Release Notes ====================== Updates since v2.26 ------------------- Backward compatibility notes * When "git describe C" finds that commit C is pointed by a signed or annotated tag, which records T as its tagname in the object, the command gives T as its answer. Even if the user renames or moves such a tag from its natural location in the "refs/tags/" hierarchy, "git describe C" would still give T as the answer, but in such a case "git show T^0" would no longer work as expected. There may be nothing at "refs/tags/T" or even worse there may be a different tag instead. Starting from this version, "git describe" will always use the "long" version, as if the "--long" option were given, when giving its output based on such a misplaced tag to work around the problem. * "git pull" issues a warning message until the pull.rebase configuration variable is explicitly given, which some existing users may find annoying---those who prefer not to rebase need to set the variable to false to squelch the warning. UI, Workflows & Features * A handful of options to configure SSL when talking to proxies have been added. * Smudge/clean conversion filters are now given more information (e.g. the object of the tree-ish in which the blob being converted appears, in addition to its path, which has already been given). * When "git describe C" finds an annotated tag with tagname A to be the best name to explain commit C, and the tag is stored in a "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the command gave a warning message but used A (not B) to describe C. If C is exactly at the tag, the describe output would be "A", but "git rev-parse A^0" would not be equal as "git rev-parse C^0". The behavior of the command has been changed to use the "long" form i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse. * "git pull" learned to warn when no pull.rebase configuration exists, and neither --[no-]rebase nor --ff-only is given (which would result a merge). Performance, Internal Implementation, Development Support etc. * The advise API has been revamped to allow more systematic enumeration of advice knobs in the future. * SHA-256 transition continues. * The code to interface with GnuPG has been refactored. * "git stash" has kept an escape hatch to use the scripted version for a few releases, which got stale. It has been removed. Fixes since v2.26 ----------------- * The real_path() convenience function can easily be misused; with a bit of code refactoring in the callers' side, its use has been eliminated. (merge 49d3c4b481 am/real-path-fix later to maint). * Update "git p4" to work with Python 3. (merge 6bb40ed20a yz/p4-py3 later to maint). * The mechanism to prevent "git commit" from making an empty commit or amending during an interrupted cherry-pick was broken during the rewrite of "git rebase" in C, which has been corrected. (merge 430b75f720 pw/advise-rebase-skip later to maint). * Fix "git checkout --recurse-submodules" of a nested submodule hierarchy. (merge 846f34d351 pb/recurse-submodules-fix later to maint). * The "--fork-point" mode of "git rebase" regressed when the command was rewritten in C back in 2.20 era, which has been corrected. (merge f08132f889 at/rebase-fork-point-regression-fix later to maint). * Other code cleanup, docfix, build fix, etc. (merge 564956f358 jc/maintain-doc later to maint). (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint). (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint). (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint). (merge 8312aa7d74 jc/config-tar later to maint). (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).