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.
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).
+ * The progress indicator for a large "git checkout" was sent to
+ stderr even if it is not a terminal.
+ (merge e9fc64c ap/checkout-no-progress-for-non-tty later to maint).
- * Running "git checkout" on an unborn branch used to corrupt HEAD.
- (merge 8338f77 ef/checkout-empty later to maint).
+ * A name taken from mailmap was copied into an internal buffer
+ incorrectly and could overun the buffer if it is too long.
+ (merge c9b4e9e jk/format-person-part-buffer-limit 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).
+ * A malformed commit object that has a header line chomped in the
+ middle could kill git with a NULL pointer dereference.
+ (merge a9c7a8a jk/pretty-commit-header-incomplete-line 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).
+ * An author/committer name that is a single character was mishandled
+ as an invalid name by mistake.
+ (merge d9955fd jk/ident-split-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 grep -e '$pattern'", unlike the case where the patterns are
+ read from a file, did not treat individual lines in the given
+ pattern argument as separate regular expressions as it should.
+ (merge ec83061 rs/maint-grep-F 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).