|
| 1 | +Git 2.13 Release Notes |
| 2 | +====================== |
| 3 | + |
| 4 | +Backward compatibility notes. |
| 5 | + |
| 6 | + * Use of an empty string as a pathspec element that is used for |
| 7 | + 'everything matches' is still warned and Git asks users to use a |
| 8 | + more explicit '.' for that instead. The hope is that existing |
| 9 | + users will not mind this change, and eventually the warning can be |
| 10 | + turned into a hard error, upgrading the deprecation into removal of |
| 11 | + this (mis)feature. That is not scheduled to happen in the upcoming |
| 12 | + release (yet). |
| 13 | + |
| 14 | + * The historical argument order "git merge <msg> HEAD <commit>..." |
| 15 | + has been deprecated for quite some time, and will be removed in a |
| 16 | + future release. |
| 17 | + |
| 18 | + |
| 19 | +Updates since v2.12 |
| 20 | +------------------- |
| 21 | + |
| 22 | +UI, Workflows & Features |
| 23 | + |
| 24 | + * "git describe" and "git name-rev" have been taught to take more |
| 25 | + than one refname patterns to restrict the set of refs to base their |
| 26 | + naming output on, and also learned to take negative patterns to |
| 27 | + name refs not to be used for naming via their "--exclude" option. |
| 28 | + |
| 29 | + * Deletion of a branch "foo/bar" could remove .git/refs/heads/foo |
| 30 | + once there no longer is any other branch whose name begins with |
| 31 | + "foo/", but we didn't do so so far. Now we do. |
| 32 | + |
| 33 | + * When "git merge" detects a path that is renamed in one history |
| 34 | + while the other history deleted (or modified) it, it now reports |
| 35 | + both paths to help the user understand what is going on in the two |
| 36 | + histories being merged. |
| 37 | + |
| 38 | + * The <url> part in "http.<url>.<variable>" configuration variable |
| 39 | + can now be spelled with '*' that serves as wildcard. |
| 40 | + E.g. "http.https://*.example.com.proxy" can be used to specify the |
| 41 | + proxy used for https://a.example.com, https://b.example.com, etc., |
| 42 | + i.e. any host in the example.com domain. |
| 43 | + |
| 44 | + * "git tag" did not leave useful message when adding a new entry to |
| 45 | + reflog; this was left unnoticed for a long time because refs/tags/* |
| 46 | + doesn't keep reflog by default. |
| 47 | + |
| 48 | + * The "negative" pathspec feature was somewhat more cumbersome to use |
| 49 | + than necessary in that its short-hand used "!" which needed to be |
| 50 | + escaped from shells, and it required "exclude from what?" specified. |
| 51 | + |
| 52 | + * The command line options for ssh invocation needs to be tweaked for |
| 53 | + some implementations of SSH (e.g. PuTTY plink wants "-P <port>" |
| 54 | + while OpenSSH wants "-p <port>" to specify port to connect to), and |
| 55 | + the variant was guessed when GIT_SSH environment variable is used |
| 56 | + to specify it. The logic to guess now applies to the command |
| 57 | + specified by the newer GIT_SSH_COMMAND and also core.sshcommand |
| 58 | + configuration variable, and comes with an escape hatch for users to |
| 59 | + deal with misdetected cases. |
| 60 | + |
| 61 | + * The "--git-path", "--git-common-dir", and "--shared-index-path" |
| 62 | + options of "git rev-parse" did not produce usable output. They are |
| 63 | + now updated to show the path to the correct file, relative to where |
| 64 | + the caller is. |
| 65 | + |
| 66 | + * "git diff -W" has been taught to handle the case where a new |
| 67 | + function is added at the end of the file better. |
| 68 | + |
| 69 | + * "git update-ref -d" and other operations to delete references did |
| 70 | + not leave any entry in HEAD's reflog when the reference being |
| 71 | + deleted was the current branch. This is not a problem in practice |
| 72 | + because you do not want to delete the branch you are currently on, |
| 73 | + but caused renaming of the current branch to something else not to |
| 74 | + be logged in a useful way. |
| 75 | + |
| 76 | + |
| 77 | +Performance, Internal Implementation, Development Support etc. |
| 78 | + |
| 79 | + * The code to list branches in "git branch" has been consolidated |
| 80 | + with the more generic ref-filter API. |
| 81 | + |
| 82 | + * Resource usage while enumerating refs from alternate object store |
| 83 | + has been optimized to help receiving end of "push" that hosts a |
| 84 | + repository with many "forks". |
| 85 | + |
| 86 | + * The gitattributes machinery is being taught to work better in a |
| 87 | + multi-threaded environment. |
| 88 | + |
| 89 | + * "git rebase -i" starts using the recently updated "sequencer" code. |
| 90 | + |
| 91 | + * Code and design clean-up for the refs API. |
| 92 | + |
| 93 | + * The preload-index code has been taught not to bother with the index |
| 94 | + entries that are paths that are not checked out by "sparse checkout". |
| 95 | + |
| 96 | + * Some warning() messages from "git clean" were updated to show the |
| 97 | + errno from failed system calls. |
| 98 | + |
| 99 | + |
| 100 | +Also contains various documentation updates and code clean-ups. |
| 101 | + |
| 102 | + |
| 103 | +Fixes since v2.12 |
| 104 | +----------------- |
| 105 | + |
| 106 | +Unless otherwise noted, all the fixes since v2.9 in the maintenance |
| 107 | +track are contained in this release (see the maintenance releases' |
| 108 | +notes for details). |
| 109 | + |
| 110 | + * "git repack --depth=<n>" for a long time busted the specified depth |
| 111 | + when reusing delta from existing packs. This has been corrected. |
| 112 | + (merge 42b766d765 jk/delta-chain-limit later to maint). |
| 113 | + |
| 114 | + * The code to parse the command line "git grep <patterns>... <rev> |
| 115 | + [[--] <pathspec>...]" has been cleaned up, and a handful of bugs |
| 116 | + have been fixed (e.g. we used to check "--" if it is a rev). |
| 117 | + (merge 131f3c96d2 jk/grep-no-index-fix later to maint). |
| 118 | + |
| 119 | + * "git ls-remote" and "git archive --remote" are designed to work |
| 120 | + without being in a directory under Git's control. However, recent |
| 121 | + updates revealed that we randomly look into a directory called |
| 122 | + .git/ without actually doing necessary set-up when working in a |
| 123 | + repository. Stop doing so. |
| 124 | + (merge 4b0c3c7735 jn/remote-helpers-with-git-dir later to maint). |
| 125 | + |
| 126 | + * "git show-branch" expected there were only very short branch names |
| 127 | + in the repository and used a fixed-length buffer to hold them |
| 128 | + without checking for overflow. |
| 129 | + (merge d3cc5f4c44 jk/show-branch-lift-name-len-limit later to maint). |
| 130 | + |
| 131 | + * A caller of tempfile API that uses stdio interface to write to |
| 132 | + files may ignore errors while writing, which is detected when |
| 133 | + tempfile is closed (with a call to ferror()). By that time, the |
| 134 | + original errno that may have told us what went wrong is likely to |
| 135 | + be long gone and was overwritten by an irrelevant value. |
| 136 | + close_tempfile() now resets errno to EIO to make errno at least |
| 137 | + predictable. |
| 138 | + (merge 7e8c9355b7 jk/tempfile-ferror-fclose-confusion later to maint). |
| 139 | + |
| 140 | + * "git remote rm X", when a branch has remote X configured as the |
| 141 | + value of its branch.*.remote, tried to remove branch.*.remote and |
| 142 | + branch.*.merge and failed if either is unset. |
| 143 | + (merge 20690b2139 rl/remote-allow-missing-branch-name-merge later to maint). |
| 144 | + |
| 145 | + * A "gc.log" file left by a backgrounded "gc --auto" disables further |
| 146 | + automatic gc; it has been taught to run at least once a day (by |
| 147 | + default) by ignoring a stale "gc.log" file that is too old. |
| 148 | + (merge a831c06a2b dt/gc-ignore-old-gc-logs later to maint). |
| 149 | + |
| 150 | + * Other minor doc, test and build updates and code cleanups. |
| 151 | + (merge 2cfa83574c mm/two-more-xstrfmt later to maint). |
0 commit comments