2016-09-09 07:00:35 +02:00
|
|
|
Git 2.11 Release Notes
|
|
|
|
======================
|
|
|
|
|
|
|
|
Updates since v2.10
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
|
|
|
|
* "git format-patch --cover-letter HEAD^" to format a single patch
|
|
|
|
with a separate cover letter now numbers the output as [PATCH 0/1]
|
|
|
|
and [PATCH 1/1] by default.
|
|
|
|
|
|
|
|
* An incoming "git push" that attempts to push too many bytes can now
|
|
|
|
be rejected by setting a new configuration variable at the receiving
|
|
|
|
end.
|
|
|
|
|
|
|
|
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
|
|
|
|
which was not intuitive, given that "git nosuchcommand" said "git:
|
|
|
|
'nosuchcommand' is not a git command".
|
|
|
|
|
|
|
|
* "git clone --resurse-submodules --reference $path $URL" is a way to
|
|
|
|
reduce network transfer cost by borrowing objects in an existing
|
|
|
|
$path repository when cloning the superproject from $URL; it
|
|
|
|
learned to also peek into $path for presense of corresponding
|
|
|
|
repositories of submodules and borrow objects from there when able.
|
|
|
|
|
2016-09-13 00:35:05 +02:00
|
|
|
* The "git diff --submodule={short,log}" mechanism has been enhanced
|
|
|
|
to allow "--submodule=diff" to show the patch between the submodule
|
|
|
|
commits bound to the superproject.
|
|
|
|
|
2016-09-22 00:20:44 +02:00
|
|
|
* Even though "git hash-objects", which is a tool to take an
|
|
|
|
on-filesystem data stream and put it into the Git object store,
|
|
|
|
allowed to perform the "outside-world-to-Git" conversions (e.g.
|
|
|
|
end-of-line conversions and application of the clean-filter), and
|
|
|
|
it had the feature on by default from very early days, its reverse
|
|
|
|
operation "git cat-file", which takes an object from the Git object
|
|
|
|
store and externalize for the consumption by the outside world,
|
|
|
|
lacked an equivalent mechanism to run the "Git-to-outside-world"
|
|
|
|
conversion. The command learned the "--filters" option to do so.
|
|
|
|
|
2016-09-09 07:00:35 +02:00
|
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
|
|
|
|
* The delta-base-cache mechanism has been a key to the performance in
|
|
|
|
a repository with a tightly packed packfile, but it did not scale
|
|
|
|
well even with a larger value of core.deltaBaseCacheLimit.
|
|
|
|
|
|
|
|
* Enhance "git status --porcelain" output by collecting more data on
|
|
|
|
the state of the index and the working tree files, which may
|
|
|
|
further be used to teach git-prompt (in contrib/) to make fewer
|
|
|
|
calls to git.
|
|
|
|
|
2016-09-13 00:35:05 +02:00
|
|
|
* Extract a small helper out of the function that reads the authors
|
|
|
|
script file "git am" internally uses.
|
|
|
|
(merge a77598e jc/am-read-author-file later to maint).
|
|
|
|
|
2016-09-15 23:13:06 +02:00
|
|
|
* Lifts calls to exit(2) and die() higher in the callchain in
|
|
|
|
sequencer.c files so that more helper functions in it can be used
|
|
|
|
by callers that want to handle error conditions themselves.
|
|
|
|
|
2016-09-19 22:48:25 +02:00
|
|
|
* "git am" has been taught to make an internal call to "git apply"'s
|
|
|
|
innards without spawning the latter as a separate process.
|
|
|
|
|
|
|
|
* The ref-store abstraction was introduced to the refs API so that we
|
|
|
|
can plug in different backends to store references.
|
|
|
|
|
|
|
|
* The "unsigned char sha1[20]" to "struct object_id" conversion
|
|
|
|
continues. Notable changes in this round includes that ce->sha1,
|
|
|
|
i.e. the object name recorded in the cache_entry, turns into an
|
|
|
|
object_id.
|
|
|
|
|
2016-09-22 00:20:44 +02:00
|
|
|
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
|
|
|
|
does not advertise any refs, but "git fetch" was not prepared to
|
|
|
|
see such an advertisement. When the other side disconnects without
|
|
|
|
giving any ref advertisement, we used to say "there may not be a
|
|
|
|
repository at that URL", but we may have seen other advertisement
|
|
|
|
like "shallow" and ".have" in which case we definitely know that a
|
|
|
|
repository is there. The code to detect this case has also been
|
|
|
|
updated.
|
|
|
|
|
|
|
|
* Some codepaths in "git pack-objects" were not ready to use an
|
|
|
|
existing pack bitmap; now they are and as the result they have
|
|
|
|
become faster.
|
|
|
|
|
2016-09-09 07:00:35 +02:00
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
* Clarify various ways to specify the "revision ranges" in the
|
|
|
|
documentation.
|
|
|
|
|
|
|
|
* "diff-highlight" script (in contrib/) learned to work better with
|
|
|
|
"git log -p --graph" output.
|
2016-09-13 00:35:05 +02:00
|
|
|
|
|
|
|
* The test framework left the number of tests and success/failure
|
|
|
|
count in the t/test-results directory, keyed by the name of the
|
|
|
|
test script plus the process ID. The latter however turned out not
|
|
|
|
to serve any useful purpose. The process ID part of the filename
|
|
|
|
has been removed.
|
|
|
|
|
|
|
|
* Having a submodule whose ".git" repository is somehow corrupt
|
|
|
|
caused a few commands that recurse into submodules loop forever.
|
|
|
|
|
|
|
|
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
|
|
|
|
the resulting repository becomes an invalid one. Teach the command
|
|
|
|
to forbid removal of HEAD.
|
|
|
|
|
|
|
|
* A test spawned a short-lived background process, which sometimes
|
|
|
|
prevented the test directory from getting removed at the end of the
|
|
|
|
script on some platforms.
|
|
|
|
|
|
|
|
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
|
|
|
|
newer GIT_TRACE_CURL.
|
|
|
|
|
2016-09-15 23:13:06 +02:00
|
|
|
* "git pack-objects --include-tag" was taught that when we know that
|
|
|
|
we are sending an object C, we want a tag B that directly points at
|
|
|
|
C but also a tag A that points at the tag B. We used to miss the
|
|
|
|
intermediate tag B in some cases.
|
|
|
|
(merge b773dde jk/pack-tag-of-tag later to maint).
|
|
|
|
|
|
|
|
* Update Japanese translation for "git-gui".
|
|
|
|
(merge 02748bc sy/git-gui-i18n-ja later to maint).
|
|
|
|
|
|
|
|
* "git fetch http::/site/path" did not die correctly and segfaulted
|
|
|
|
instead.
|
|
|
|
(merge d63ed6e jk/fix-remote-curl-url-wo-proto later to maint).
|
|
|
|
|
|
|
|
* "git commit-tree" stopped reading commit.gpgsign configuration
|
|
|
|
variable that was meant for Porcelain "git commit" in Git 2.9; we
|
|
|
|
forgot to update "git gui" to look at the configuration to match
|
|
|
|
this change.
|
|
|
|
(merge f14a310 js/git-gui-commit-gpgsign later to maint).
|
|
|
|
|
2016-09-22 00:20:44 +02:00
|
|
|
* "git add --chmod=+x" added recently lacked documentation, which has
|
|
|
|
been corrected.
|
|
|
|
(merge 7ef7903 et/add-chmod-x later to maint).
|
|
|
|
|
|
|
|
* "git log --cherry-pick" used to include merge commits as candidates
|
|
|
|
to be matched up with other commits, resulting a lot of wasted time.
|
|
|
|
The patch-id generation logic has been updated to ignore merges to
|
|
|
|
avoid the wastage.
|
|
|
|
(merge 7c81040 jk/patch-ids-no-merges later to maint).
|
|
|
|
|
|
|
|
* The http transport (with curl-multi option, which is the default
|
|
|
|
these days) failed to remove curl-easy handle from a curlm session,
|
|
|
|
which led to unnecessary API failures.
|
|
|
|
(merge 2abc848 ew/http-do-not-forget-to-call-curl-multi-remove-handle later to maint).
|
|
|
|
|
|
|
|
* There were numerous corner cases in which the configuration files
|
|
|
|
are read and used or not read at all depending on the directory a
|
|
|
|
Git command was run, leading to inconsistent behaviour. The code
|
|
|
|
to set-up repository access at the beginning of a Git process has
|
|
|
|
been updated to fix them.
|
|
|
|
(merge 4d0efa1 jk/setup-sequence-update later to maint).
|
|
|
|
|
|
|
|
* "git diff -W" output needs to extend the context backward to
|
|
|
|
include the header line of the current function and also forward to
|
|
|
|
include the body of the entire current function up to the header
|
|
|
|
line of the next one. This process may have to merge to adjacent
|
|
|
|
hunks, but the code forgot to do so in some cases.
|
|
|
|
(merge 45d2f75 rs/xdiff-merge-overlapping-hunks-for-W-context later to maint).
|
|
|
|
|
|
|
|
* Performance tests done via "t/perf" did not use the same set of
|
|
|
|
build configuration if the user relied on autoconf generated
|
|
|
|
configuration.
|
|
|
|
(merge cd5c281 ks/perf-build-with-autoconf later to maint).
|
|
|
|
|
|
|
|
* "git format-patch --base=..." feature that was recently added
|
|
|
|
showed the base commit information after "-- " e-mail signature
|
|
|
|
line, which turned out to be inconvenient. The base information
|
|
|
|
has been moved above the signature line.
|
|
|
|
(merge 480871e jt/format-patch-base-info-above-sig later to maint).
|
|
|
|
|
|
|
|
* More i18n.
|
|
|
|
(merge 43073f8 va/i18n later to maint).
|
|
|
|
|
|
|
|
* Even when "git pull --rebase=preserve" (and the underlying "git
|
|
|
|
rebase --preserve") can complete without creating any new commit
|
|
|
|
(i.e. fast-forwards), it still insisted on having a usable ident
|
|
|
|
information (read: user.email is set correctly), which was less
|
|
|
|
than nice. As the underlying commands used inside "git rebase"
|
|
|
|
would fail with a more meaningful error message and advice text
|
|
|
|
when the bogus ident matters, this extra check was removed.
|
|
|
|
(merge 1e461c4 jk/rebase-i-drop-ident-check later to maint).
|
|
|
|
|
|
|
|
* "git gc --aggressive" used to limit the delta-chain length to 250,
|
|
|
|
which is way too deep for gaining additional space savings and is
|
|
|
|
detrimental for runtime performance. The limit has been reduced to
|
|
|
|
50.
|
|
|
|
(merge 07e7dbf jk/reduce-gc-aggressive-depth later to maint).
|
|
|
|
|
2016-09-13 00:35:05 +02:00
|
|
|
* Other minor doc, test and build updates and code cleanups.
|
2016-09-22 00:20:44 +02:00
|
|
|
(merge e78d57e bw/pathspec-remove-unused-extern-decl later to maint).
|
|
|
|
(merge ce25e4c rs/checkout-some-states-are-const later to maint).
|
|
|
|
(merge a8342a4 rs/strbuf-remove-fix later to maint).
|
|
|
|
(merge b56aa5b rs/unpack-trees-reduce-file-scope-global later to maint).
|
|
|
|
(merge 5efc60c mr/vcs-svn-printf-ulong later to maint).
|