You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
313 lines
13 KiB
313 lines
13 KiB
Git 2.14 Release Notes |
|
====================== |
|
|
|
Backward compatibility notes. |
|
|
|
* Use of an empty string as a pathspec element 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). |
|
|
|
* 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. |
|
|
|
* The experiment to improve the hunk-boundary selection of textual |
|
diff output has finished, and the "indent heuristics" has now |
|
become the default. |
|
|
|
|
|
Updates since v2.13 |
|
------------------- |
|
|
|
UI, Workflows & Features |
|
|
|
* The colors in which "git status --short --branch" showed the names |
|
of the current branch and its remote-tracking branch are now |
|
configurable. |
|
|
|
* "git clone" learned the "--no-tags" option not to fetch all tags |
|
initially, and also set up the tagopt not to follow any tags in |
|
subsequent fetches. |
|
|
|
* "git archive --format=zip" learned to use zip64 extension when |
|
necessary to go beyond the 4GB limit. |
|
(merge 867e40ff3a rs/large-zip later to maint). |
|
|
|
* "git reset" learned "--recurse-submodules" option. |
|
|
|
* "git diff --submodule=diff" now recurses into nested submodules. |
|
(merge 5a5221427c jk/diff-submodule-diff-inline later to maint). |
|
|
|
* "git repack" learned to accept the --threads=<n> option and pass it |
|
to pack-objects. |
|
|
|
* "git send-email" learned to run sendemail-validate hook to inspect |
|
and reject a message before sending it out. |
|
(merge 177409e589 jt/send-email-validate-hook later to maint). |
|
|
|
* There is no good reason why "git fetch $there $sha1" should fail |
|
when the $sha1 names an object at the tip of an advertised ref, |
|
even when the other side hasn't enabled allowTipSHA1InWant. |
|
|
|
* The recently introduced "[includeIf "gitdir:$dir"] path=..." |
|
mechansim has further been taught to take symlinks into account. |
|
The directory "$dir" specified in "gitdir:$dir" may be a symlink to |
|
a real location, not something that $(getcwd) may return. In such |
|
a case, a realpath of "$dir" is compared with the real path of the |
|
current repository to determine if the contents from the named path |
|
should be included. |
|
|
|
* Make the "indent" heuristics the default in "diff" and diff.indentHeuristics |
|
configuration variable an escape hatch for those who do no want it. |
|
|
|
* Many commands learned to pay attention to submodule.recurse |
|
configuration. |
|
|
|
|
|
Performance, Internal Implementation, Development Support etc. |
|
|
|
* The default packed-git limit value has been raised on larger |
|
platforms to save "git fetch" from a (recoverable) failure while |
|
"gc" is running in parallel. |
|
|
|
* Code to update the cache-tree has been tightened so that we won't |
|
accidentally write out any 0{40} entry in the tree object. |
|
(merge a96d3cc3f6 jk/no-null-sha1-in-cache-tree later to maint). |
|
|
|
* Attempt to allow us notice "fishy" situation where we fail to |
|
remove the temporary directory used during the test. |
|
|
|
* Travis CI gained a task to format the documentation with both |
|
AsciiDoc and AsciiDoctor. |
|
|
|
* Some platforms have ulong that is smaller than time_t, and our |
|
historical use of ulong for timestamp would mean they cannot |
|
represent some timestamp that the platform allows. Invent a |
|
separate and dedicated timestamp_t (so that we can distingiuish |
|
timestamps and a vanilla ulongs, which along is already a good |
|
move), and then declare uintmax_t is the type to be used as the |
|
timestamp_t. |
|
|
|
* We can trigger Windows auto-build tester (credits: Dscho & |
|
Microsoft) from our existing Travis CI tester now. |
|
|
|
* Conversion from uchar[20] to struct object_id continues. |
|
|
|
* Simplify parse_pathspec() codepath and stop it from looking at the |
|
default in-core index. |
|
(merge 08de9151a8 bw/pathspec-sans-the-index later to maint). |
|
|
|
* Add perf-test for wildmatch. |
|
(merge 62ca75a6b9 ab/perf-wildmatch later to maint). |
|
|
|
* Code from "conversion using external process" codepath has been |
|
extracted to a separate sub-process.[ch] module. |
|
(merge 4f2a2e9f0e bp/sub-process-convert-filter later to maint). |
|
|
|
* When "git checkout", "git merge", etc. manipulates the in-core |
|
index, various pieces of information in the index extensions are |
|
discarded from the original state, as it is usually not the case |
|
that they are kept up-to-date and in-sync with the operation on the |
|
main index. The untracked cache extension is copied across these |
|
operations now, which would speed up "git status" (as long as the |
|
cache is properly invalidated). |
|
|
|
* The internal implementation of "git grep" has seen some clean-up. |
|
(merge 8df4c2953f ab/grep-preparatory-cleanup later to maint). |
|
|
|
* Update the C style recommendation for notes for translators, as |
|
recent versions of gettext tools can work with our style of |
|
multi-line comments. |
|
|
|
* The implementation of "ref" API around the "packed refs" have been |
|
cleaned up, in preparation for further changes. |
|
|
|
* The internal logic used in "git blame" has been libified to make it |
|
easier to use by cgit. |
|
|
|
* Our code often opens a path to an optional file, to work on its |
|
contents when we can successfully open it. We can ignore a failure |
|
to open if such an optional file does not exist, but we do want to |
|
report a failure in opening for other reasons (e.g. we got an I/O |
|
error, or the file is there, but we lack the permission to open). |
|
|
|
The exact errors we need to ignore are ENOENT (obviously) and |
|
ENOTDIR (less obvious). Instead of repeating comparison of errno |
|
with these two constants, introduce a helper function to do so. |
|
|
|
* We often try to open a file for reading whose existence is |
|
optional, and silently ignore errors from open/fopen; report such |
|
errors if they are not due to missing files. |
|
|
|
|
|
Also contains various documentation updates and code clean-ups. |
|
|
|
|
|
Fixes since v2.13 |
|
----------------- |
|
|
|
Unless otherwise noted, all the fixes since v2.13 in the maintenance |
|
track are contained in this release (see the maintenance releases' |
|
notes for details). |
|
|
|
* "git gc" did not interact well with "git worktree"-managed |
|
per-worktree refs. |
|
|
|
* "git cherry-pick" and other uses of the sequencer machinery |
|
mishandled a trailer block whose last line is an incomplete line. |
|
This has been fixed so that an additional sign-off etc. are added |
|
after completing the existing incomplete line. |
|
|
|
* The codepath in "git am" that is used when running "git rebase" |
|
leaked memory held for the log message of the commits being rebased. |
|
|
|
* "git clone --config var=val" is a way to populate the |
|
per-repository configuration file of the new repository, but it did |
|
not work well when val is an empty string. This has been fixed. |
|
|
|
* Setting "log.decorate=false" in the configuration file did not take |
|
effect in v2.13, which has been corrected. |
|
|
|
* A few codepaths in "checkout" and "am" working on an unborn branch |
|
tried to access an uninitialized piece of memory. |
|
|
|
* The Web interface to gmane news archive is long gone, even though |
|
the articles are still accessible via NTTP. Replace the links with |
|
ones to public-inbox.org. Because their message identification is |
|
based on the actual message-id, it is likely that it will be easier |
|
to migrate away from it if/when necessary. |
|
|
|
* The receive-pack program now makes sure that the push certificate |
|
records the same set of push options used for pushing. |
|
|
|
* Tests have been updated to pass under GETTEXT_POISON (a mechanism |
|
to ensure that output strings that should not be translated are |
|
not translated by mistake), and TravisCI is told to run them. |
|
|
|
* "git checkout --recurse-submodules" did not quite work with a |
|
submodule that itself has submodules. |
|
|
|
* Plug some leaks and updates internal API used to implement the |
|
split index feature to make it easier to avoid such a leak in the |
|
future. |
|
(merge de950c5773 nd/split-index-unshare later to maint). |
|
|
|
* "pack-objects" can stream a slice of an existing packfile out when |
|
the pack bitmap can tell that the reachable objects are all needed |
|
in the output, without inspecting individual objects. This |
|
strategy however would not work well when "--local" and other |
|
options are in use, and need to be disabled. |
|
|
|
* Fix memory leaks pointed out by Coverity (and people). |
|
|
|
* "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use |
|
--empty if you want to clear the index". With "-m", such a request |
|
will still fail anyway, as you'd need to name at least one tree-ish |
|
to be merged. |
|
|
|
* Make sure our tests would pass when the sources are checked out |
|
with "platform native" line ending convention by default on |
|
Windows. Some "text" files out tests use and the test scripts |
|
themselves that are meant to be run with /bin/sh, ought to be |
|
checked out with eol=LF even on Windows. |
|
|
|
* Introduce the BUG() macro to improve die("BUG: ..."). |
|
|
|
* Clarify documentation for include.path and includeIf.<condition>.path |
|
configuration variables. |
|
|
|
* Git sometimes gives an advice in a rhetorical question that does |
|
not require an answer, which can confuse new users and non native |
|
speakers. Attempt to rephrase them. |
|
|
|
* A few http:// links that are redirected to https:// in the |
|
documentation have been updated to https:// links. |
|
|
|
* "git for-each-ref --format=..." with %(HEAD) in the format used to |
|
resolve the HEAD symref as many times as it had processed refs, |
|
which was wasteful, and "git branch" shared the same problem. |
|
|
|
* Regression fix to topic recently merged to 'master'. |
|
|
|
* The shell completion script (in contrib/) learned "git stash" has |
|
a new "push" subcommand. |
|
|
|
* "git interpret-trailers", when used as GIT_EDITOR for "git commit |
|
-v", looked for and appended to a trailer block at the very end, |
|
i.e. at the end of the "diff" output. The command has been |
|
corrected to pay attention to the cut-mark line "commit -v" adds to |
|
the buffer---the real trailer block should appear just before it. |
|
|
|
* A test allowed both "git push" and "git receive-pack" on the other |
|
end write their traces into the same file. This is OK on platforms |
|
that allows atomically appending to a file opened with O_APPEND, |
|
but on other platforms led to a mangled output, causing |
|
intermittent test failures. This has been fixed by disabling |
|
traces from "receive-pack" in the test. |
|
|
|
* Tag objects, which are not reachable from any ref, that point at |
|
missing objects were mishandled by "git gc" and friends (they |
|
should silently be ignored instead) |
|
|
|
* "git describe --contains" penalized light-weight tags so much that |
|
they were almost never considered. Instead, give them about the |
|
same chance to be considered as an annotated tag that is the same |
|
age as the underlying commit would. |
|
(merge ef1e74065c jc/name-rev-lw-tag later to maint). |
|
|
|
* The "run-command" API implementation has been made more robust |
|
against dead-locking in a threaded environment. |
|
|
|
* A recent update to t5545-push-options.sh started skipping all the |
|
tests in the script when a web server testing is disabled or |
|
unavailable, not just the ones that require a web server. Non HTTP |
|
tests have been salvaged to always run in this script. |
|
|
|
* "git send-email" now uses Net::SMTP::SSL, which is obsolete, only |
|
when needed. Recent versions of Net::SMTP can do TLS natively. |
|
|
|
* "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no |
|
slashes in it, cannot be a nickname for a remote on Windows, as |
|
that is likely to be a pathname on a local filesystem. |
|
|
|
* "git clean -d" used to clean directories that has ignored files, |
|
even though the command should not lose ignored ones without "-x". |
|
"git status --ignored" did not list ignored and untracked files |
|
without "-uall". These have been corrected. |
|
|
|
* The result from "git diff" that compares two blobs, e.g. "git diff |
|
$commit1:$path $commit2:$path", used to be shown with the full |
|
object name as given on the command line, but it is more natural to |
|
use the $path in the output and use it to look up .gitattributes. |
|
(merge 30d005c020 jk/diff-blob later to maint). |
|
|
|
* The "collision detecting" SHA-1 implementation shipped with 2.13 |
|
was quite broken on some big-endian platforms and/or platforms that |
|
do not like unaligned fetches. Update to the upstream code which |
|
has already fixed these issues. |
|
|
|
* "git am -h" triggered a BUG(). |
|
|
|
* The interaction of "url.*.insteadOf" and custom URL scheme's |
|
whitelisting is now documented better. |
|
|
|
* The timestamp of the index file is now taken after the file is |
|
closed, to help Windows, on which a stale timestamp is reported by |
|
fstat() on a file that is opened for writing and data was written |
|
but not yet closed. |
|
|
|
* "git pull --rebase --autostash" didn't auto-stash when the local history |
|
fast-forwards to the upstream. |
|
|
|
* A flaky test has been corrected. |
|
(merge 7c2115aa07 jk/pack-idx-corruption-safety later to maint). |
|
|
|
* Other minor doc, test and build updates and code cleanups. |
|
(merge 8ba74bfd7c jc/diff-tree-stale-comment later to maint).
|
|
|