* The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.
- * The cases "git push" fails due to non-ff can be broken into three
- categories; each case is given a separate advise message.
-
* "git rebase" learned to optionally keep commits that do not
introduce any change in the original history.
* "git archive" learned to produce its output without reading the
blob object it writes out in memory in its entirety.
+ * "git index-pack" that runs when fetching or pushing objects to
+ complete the packfile on the receiving end learned to use multiple
+ threads to do its job when available.
+
* The code to compute hash values for lines used by the internal diff
engine was optimized on little-endian machines, using the same
trick the kernel folks came up with.
* "git apply" had some memory leaks plugged.
- * "git repack" used to write out unreachable objects as loose objects
- when repacking, even if such loose objects will immediately pruned
- due to its age.
-
* Setting up a revision traversal with many starting points was
inefficient as these were placed in a date-order priority queue
one-by-one. Now they are collected in the queue unordered first,
and sorted immediately before getting used.
- * "git rev-parse --show-prefix" used to emit nothing when run at the
- top-level of the working tree, but now it gives a blank line.
-
- * Minor memory leak during unpack_trees (hence "merge" and "checkout"
- to check out another branch) has been plugged.
-
* More lower-level commands learned to use the streaming API to read
from the object store without keeping everything in core.
releases are contained in this release (see release notes to them for
details).
- * When checking out another commit from an already detached state, we
- used to report all commits that are not reachable from any of the
- refs as lossage, but some of them might be reachable from the new
- HEAD, and there is no need to warn about them.
- (merge 5d88639 js/checkout-detach-count later to maint).
-
- * Some time ago, "git clone" lost the progress output for its
- "checkout" phase; when run without any "--quiet" option, it should
- give progress to the lengthy operation.
- (merge 8f63da1 ef/maint-clone-progress-fix later to maint).
-
* "git status --porcelain" ignored "--branch" option by mistake. The
output for "git status --branch -z" was also incorrect and did not
terminate the record for the current branch name with NUL as asked.
* "git diff --stat" used to fully count a binary file with modified
execution bits whose contents is unmodified, which was not quite
right.
-
- * "log -z --pretty=tformat:..." did not terminate each record with
- NUL. The fix is not entirely correct when the output also asks for
- --patch and/or --stat, though.
- (merge fafd382 jk/maint-tformat-with-z later to maint).