Performance and Internal Implementation (please report possible regressions)
+ * Bash completion script (in contrib/) have been cleaned up to make
+ future work on it simpler.
+
* An experimental "version 4" format of the index file has been
introduced to reduce on-disk footprint and I/O overhead.
* "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.
* More lower-level commands learned to use the streaming API to read
from the object store without keeping everything in core.
+ * The weighting parameters to suggestion command name typo have been
+ tweaked, so that "git tags" will suggest "tag?" and not "stage?".
+
* Because "sh" on the user's PATH may be utterly broken on some
systems, run-command API now uses SHELL_PATH, not /bin/sh, when
spawning an external command (not applicable to Windows port).
releases are contained in this release (see release notes to them for
details).
- * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat
- broken and gave undue precedence to configured log.date, causing
- "git stash list" to show "stash@{time stamp string}".
- (merge 55ccf85 jk/maint-reflog-walk-count-vs-time later to maint).
+ * When "git rebase" is fed a bad revision name (either as base, or
+ with the --onto option), it did not correctly give the command line
+ parameter it had trouble with in its error message.
+ (merge 9180fea ef/maint-rebase-error-message later to maint).
- * Running "git checkout" on an unborn branch used to corrupt HEAD.
- (merge 8338f77 ef/checkout-empty later to maint).
+ * "git rebase -p" used to pay attention to rebase.autosquash which
+ was wrong. "git rebase -p -i" should, but "git rebase -p" by
+ itself should not.
+ (merge 8a6dae1 vr/rebase-autosquash-does-not-imply-i later to maint).
- * 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.
- (merge d4a6bf1 jk/maint-status-porcelain-z-b later to maint).
+ * "git submodule init" used to report "registered for path ..."
+ even for submodules that were registered earlier.
+ (cherry-pick c1c259e jl/submodule-report-new-path-once later to maint).
* "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).