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.
@ -120,23 +123,26 @@ Unless otherwise noted, all the fixes since v1.7.10 in the maintenance
@@ -120,23 +123,26 @@ Unless otherwise noted, all the fixes since v1.7.10 in the maintenance
releases are contained in this release (see release notes to them for
details).
* When a submodule repository uses alternate object store mechanism,
some commands that were started from the superproject did not
notice it and failed with "No such object" errors. The subcommands
of "git submodule" command that properly recursed into the
submodule in a separate process were OK; only the ones that cheated
and peeked directly into the submodule's repository from the
primary process were affected.
(merge 5e73633 hv/submodule-alt-odb later to maint).
* The directory path used in "git diff --no-index", when it recurses
down, was broken with a recent update after v1.7.10.1 release.
(merge 176a335 bp/diff-no-index-strbuf-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).
* 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).
* 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).
* 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).
* 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 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