diff options
Diffstat (limited to 'Documentation/RelNotes/2.13.0.txt')
-rw-r--r-- | Documentation/RelNotes/2.13.0.txt | 182 |
1 files changed, 143 insertions, 39 deletions
diff --git a/Documentation/RelNotes/2.13.0.txt b/Documentation/RelNotes/2.13.0.txt index 0d4a3ef931..f13eb759f5 100644 --- a/Documentation/RelNotes/2.13.0.txt +++ b/Documentation/RelNotes/2.13.0.txt @@ -12,8 +12,18 @@ Backward compatibility notes. release (yet). * The historical argument order "git merge <msg> HEAD <commit>..." - has been deprecated for quite some time, and will be removed in a - future release. + has been deprecated for quite some time, and is now removed. + + * The default location "~/.git-credential-cache/socket" for the + socket used to communicate with the credential-cache daemon has + been moved to "~/.cache/git/credential/socket". + + * Git now avoids blindly falling back to ".git" when the setup + sequence said we are _not_ in Git repository. A corner case that + happens to work right now may be broken by a call to die("BUG"). + We've tried hard to locate such cases and fixed them, but there + might still be cases that need to be addressed--bug reports are + greatly appreciated. Updates since v2.12 @@ -77,16 +87,13 @@ UI, Workflows & Features unlike in the e-mail header. "git send-email" has been updated to ignore anything after '>' when picking addresses, to allow non-address cruft like " # stable 4.4" after the address. - (merge 9d3343961b jh/send-email-one-cc later to maint). * When "git submodule init" decides that the submodule in the working tree is its upstream, it now gives a warning as it is not a very common setup. - (merge d1b3b81aab sb/submodule-init-url-selection later to maint). - * "git stash save" takes a pathspec so that the local changes can be + * "git stash push" takes a pathspec so that the local changes can be stashed away only partially. - (merge 9e140909f6 tg/stash-push later to maint). * Documentation for "git ls-files" did not refer to core.quotePath. @@ -113,6 +120,51 @@ UI, Workflows & Features repository and was quite messy due to its "chicken-and-egg" nature. The code has been restructured. + * The command line prompt (in contrib/) learned a new 'tag' style + that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a + detached HEAD with "git describe --tags". + + * The configuration file learned a new "includeIf.<condition>.path" + that includes the contents of the given path only when the + condition holds. This allows you to say "include this work-related + bit only in the repositories under my ~/work/ directory". + + * Recent update to "rebase -i" started showing a message that is not + a warning with "warning:" prefix by mistake. This has been fixed. + + * Recently we started passing the "--push-options" through the + external remote helper interface; now the "smart HTTP" remote + helper understands what to do with the passed information. + + * "git describe --dirty" dies when it cannot be determined if the + state in the working tree matches that of HEAD (e.g. broken + repository or broken submodule). The command learned a new option + "git describe --broken" to give "$name-broken" (where $name is the + description of HEAD) in such a case. + + * "git checkout" is taught the "--recurse-submodules" option. + + * Recent enhancement to "git stash push" command to support pathspec + to allow only a subset of working tree changes to be stashed away + was found to be too chatty and exposed the internal implementation + detail (e.g. when it uses reset to match the index to HEAD before + doing other things, output from reset seeped out). These, and + other chattyness has been fixed. + + * "git merge <message> HEAD <commit>" syntax that has been deprecated + since October 2007 has been removed. + + * The refs completion for large number of refs has been sped up, + partly by giving up disambiguating ambiguous refs and partly by + eliminating most of the shell processing between 'git for-each-ref' + and 'ls-remote' and Bash's completion facility. + + * On many keyboards, typing "@{" involves holding down SHIFT key and + one can easily end up with "@{Up..." when typing "@{upstream}". As + the upstream/push keywords do not appear anywhere else in the syntax, + we can safely accept them case insensitively without introducing + ambiguity or confusion to solve this. + Performance, Internal Implementation, Development Support etc. @@ -137,19 +189,15 @@ Performance, Internal Implementation, Development Support etc. errno from failed system calls. * The "parse_config_key()" API function has been cleaned up. - (merge ad8c7cdadd jk/parse-config-key-cleanup later to maint). * A test that creates a confusing branch whose name is HEAD has been corrected not to do so. - (merge f0252ca23c jk/t6300-cleanup later to maint). * The code that parses header fields in the commit object has been updated for (micro)performance and code hygiene. - (merge b072504ce1 rs/commit-parsing-optim later to maint). * An helper function to make it easier to append the result from real_path() to a strbuf has been added. - (merge 33ad9ddd0b rs/strbuf-add-real-path later to maint). * Reduce authentication round-trip over HTTP when the server supports just a single authentication method. This also improves the @@ -164,7 +212,6 @@ Performance, Internal Implementation, Development Support etc. * The t/perf performance test suite was not prepared to test not so old versions of Git, but now it covers versions of Git that are not so ancient. - (merge 28e1fb5466 jt/perf-updates later to maint). * Add 32-bit Linux variant to the set of platforms to be tested with Travis CI. @@ -177,7 +224,6 @@ Performance, Internal Implementation, Development Support etc. * Picking two versions of Git and running tests to make sure the older one and the newer one interoperate happily has now become possible. - (merge bd4d9d993c jk/interop-test later to maint). * "uchar [40]" to "struct object_id" conversion continues. @@ -186,6 +232,32 @@ Performance, Internal Implementation, Development Support etc. use; this has been cleaned up and made to use the newer commit-slab facility. + * The "debug" helper used in the test framework learned to run + a command under "gdb" interactively. + + * The "detect attempt to create collisions" variant of SHA-1 + implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft) + has been integrated and made the default. + + * The test framework learned to detect unterminated here documents. + + * The name-hash used for detecting paths that are different only in + cases (which matter on case insensitive filesystems) has been + optimized to take advantage of multi-threading when it makes sense. + + * An earlier version of sha1dc/sha1.c that was merged to 'master' + compiled incorrectly on Windows, which has been fixed. + + * "what URL do we want to update this submodule?" and "are we + interested in this submodule?" are split into two distinct + concepts, and then the way used to express the latter got extended, + paving a way to make it easier to manage a project with many + submodules and make it possible to later extend use of multiple + worktrees for a project with submodules. + + * Some debugging output from "git describe" were marked for l10n, + but some weren't. Mark missing ones for l10n. + Also contains various documentation updates and code clean-ups. @@ -193,30 +265,26 @@ Also contains various documentation updates and code clean-ups. Fixes since v2.12 ----------------- -Unless otherwise noted, all the fixes since v2.9 in the maintenance +Unless otherwise noted, all the fixes since v2.12 in the maintenance track are contained in this release (see the maintenance releases' notes for details). * "git repack --depth=<n>" for a long time busted the specified depth when reusing delta from existing packs. This has been corrected. - (merge 42b766d765 jk/delta-chain-limit later to maint). * The code to parse the command line "git grep <patterns>... <rev> [[--] <pathspec>...]" has been cleaned up, and a handful of bugs have been fixed (e.g. we used to check "--" if it is a rev). - (merge 131f3c96d2 jk/grep-no-index-fix later to maint). * "git ls-remote" and "git archive --remote" are designed to work without being in a directory under Git's control. However, recent updates revealed that we randomly look into a directory called .git/ without actually doing necessary set-up when working in a repository. Stop doing so. - (merge 4b0c3c7735 jn/remote-helpers-with-git-dir later to maint). * "git show-branch" expected there were only very short branch names in the repository and used a fixed-length buffer to hold them without checking for overflow. - (merge d3cc5f4c44 jk/show-branch-lift-name-len-limit later to maint). * A caller of tempfile API that uses stdio interface to write to files may ignore errors while writing, which is detected when @@ -225,36 +293,29 @@ notes for details). be long gone and was overwritten by an irrelevant value. close_tempfile() now resets errno to EIO to make errno at least predictable. - (merge 7e8c9355b7 jk/tempfile-ferror-fclose-confusion later to maint). * "git remote rm X", when a branch has remote X configured as the value of its branch.*.remote, tried to remove branch.*.remote and branch.*.merge and failed if either is unset. - (merge 20690b2139 rl/remote-allow-missing-branch-name-merge later to maint). * A "gc.log" file left by a backgrounded "gc --auto" disables further automatic gc; it has been taught to run at least once a day (by default) by ignoring a stale "gc.log" file that is too old. - (merge a831c06a2b dt/gc-ignore-old-gc-logs later to maint). * The code to parse "git -c VAR=VAL cmd" and set configuration variable for the duration of cmd had two small bugs, which have been fixed. - (merge 1274a155af jc/config-case-cmdline-take-2 later to maint). * user.email that consists of only cruft chars should consistently error out, but didn't. - (merge 94425552f3 jk/ident-empty later to maint). * "git upload-pack", which is a counter-part of "git fetch", did not report a request for a ref that was not advertised as invalid. This is generally not a problem (because "git fetch" will stop before making such a request), but is the right thing to do. - (merge bdb31eada7 jt/upload-pack-error-report later to maint). * A leak in a codepath to read from a packed object in (rare) cases has been plugged. - (merge 886ddf4777 rs/sha1-file-plug-fallback-base-leak later to maint). * When a redirected http transport gets an error during the redirected request, we ignored the error we got from the server, @@ -272,7 +333,6 @@ notes for details). * There is no need for Python only to give a few messages to the standard error stream, but we somehow did. - (merge b8686c661d ss/remote-bzr-hg-placeholder-wo-python later to maint). * The code to parse "git log -L..." command line was buggy when there are many ranges specified with -L; overrun of the allocated buffer @@ -286,39 +346,31 @@ notes for details). made an incorrect short-cut when asked only to populate the size field for paths that need to go through convert_to_git() (e.g. CRLF conversion). - (merge 12426e114b jc/diff-populate-filespec-size-only-fix later to maint). * A few tests were run conditionally under (rare) conditions where they cannot be run (like running cvs tests under 'root' account). - (merge c6507484a2 ab/cond-skip-tests later to maint). * "git branch @" created refs/heads/@ as a branch, and in general the code that handled @{-1} and @{upstream} was a bit too loose in disambiguating. - (merge fd4692ff70 jk/interpret-branch-name later to maint). * "git fetch" that requests a commit by object name, when the other side does not allow such an request, failed without much explanation. - (merge d56583ded6 mm/fetch-show-error-message-on-unadvertised-object later to maint). * "git filter-branch --prune-empty" drops a single-parent commit that becomes a no-op, but did not drop a root commit whose tree is empty. - (merge 32da7467eb dp/filter-branch-prune-empty later to maint). * Recent versions of Git treats http alternates (used in dumb http transport) just like HTTP redirects and requires the client to enable following it, due to security concerns. But we forgot to give a warning when we decide not to honor the alternates. - (merge 5cae73d5d2 ew/http-alternates-as-redirects-warning later to maint). * "git push" had a handful of codepaths that could lead to a deadlock when unexpected error happened, which has been fixed. - (merge d1a13d3fcb jk/push-deadlock-regression-fix later to maint). * "Dumb http" transport used to misparse a nonsense http-alternates response, which has been fixed. - (merge d61434ae81 jk/http-walker-buffer-underflow-fix later to maint). * "git add -p <pathspec>" unnecessarily expanded the pathspec to a list of individual files that matches the pathspec by running "git @@ -332,11 +384,63 @@ notes for details). * "git status --porcelain" is supposed to give a stable output, but a few strings were left as translatable by mistake. - (merge b9e2bc560a mg/status-porcelain-no-i18n later to maint). + + * "git revert -m 0 $merge_commit" complained that reverting a merge + needs to say relative to which parent the reversion needs to + happen, as if "-m 0" weren't given. The correct diagnosis is that + "-m 0" does not refer to the first parent ("-m 1" does). This has + been fixed. + + * Code to read submodule.<name>.ignore config did not state the + variable name correctly when giving an error message diagnosing + misconfiguration. + + * Fix for NO_PTHREADS build. + + * Fix for potential segv introduced in v2.11.0 and later (also + v2.10.2) to "git log --pickaxe-regex -S". + + * A few unterminated here documents in tests were fixed, which in + turn revealed incorrect expectations the tests make. These tests + have been updated. + + * Fix for NO_PTHREADS option. + (merge 2225e1ea20 bw/grep-recurse-submodules later to maint). + + * Git now avoids blindly falling back to ".git" when the setup + sequence said we are _not_ in Git repository. A corner case that + happens to work right now may be broken by a call to die("BUG"). + (merge b1ef400eec jk/no-looking-at-dotgit-outside-repo-final later to maint). + + * A few commands that recently learned the "--recurse-submodule" + option misbehaved when started from a subdirectory of the + superproject. + (merge b2dfeb7c00 bw/recurse-submodules-relative-fix later to maint). + + * FreeBSD implementation of getcwd(3) behaved differently when an + intermediate directory is unreadable/unsearchable depending on the + length of the buffer provided, which our strbuf_getcwd() was not + aware of. strbuf_getcwd() has been taught to cope with it better. + (merge a54e938e5b rs/freebsd-getcwd-workaround later to maint). + + * A recent update to "rebase -i" stopped running hooks for the "git + commit" command during "reword" action, which has been fixed. + + * Removing an entry from a notes tree and then looking another note + entry from the resulting tree using the internal notes API + functions did not work as expected. No in-tree users of the API + has such access pattern, but it still is worth fixing. + + * "git receive-pack" could have been forced to die by attempting + allocate an unreasonably large amount of memory with a crafted push + certificate; this has been fixed. + (merge f2214dede9 bc/push-cert-receive-fix later to maint). * Other minor doc, test and build updates and code cleanups. - (merge b803ae4427 ps/docs-diffcore later to maint). - (merge bcd886d897 ew/markdown-url-in-readme later to maint). - (merge b2d593a779 rj/remove-unused-mktemp later to maint). - (merge 3255e512a8 jk/ewah-use-right-type-in-sizeof later to maint). - (merge dfa3ad3238 rs/blame-code-cleanup later to maint). + (merge df2a6e38b7 jk/pager-in-use later to maint). + (merge 75ec4a6cb0 ab/branch-list-doc later to maint). + (merge 3e5b36c637 sg/skip-prefix-in-prettify-refname later to maint). + (merge 2c5e2865cc jk/fast-import-cleanup later to maint). + (merge 4473060bc2 ab/test-readme-updates later to maint). + (merge 48a96972fd ab/doc-submitting later to maint). + (merge f5c2bc2b96 jk/make-coccicheck-detect-errors later to maint). |