gitweb.git
diff --color-moved-ws: handle blank linesPhillip Wood Fri, 23 Nov 2018 11:16:58 +0000 (11:16 +0000)

diff --color-moved-ws: handle blank lines

When using --color-moved-ws=allow-indentation-change allow lines with
the same indentation change to be grouped across blank lines. For now
this only works if the blank lines have been moved as well, not for
blocks that have just had their indentation changed.

This completes the changes to the implementation of
--color-moved=allow-indentation-change. Running

git diff --color-moved=allow-indentation-change v2.18.0 v2.19.0

now takes 5.0s. This is a saving of 41% from 8.5s for the optimized
version of the previous implementation and 66% from the original which
took 14.6s.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --color-moved-ws: modify allow-indentation-changePhillip Wood Fri, 23 Nov 2018 11:16:57 +0000 (11:16 +0000)

diff --color-moved-ws: modify allow-indentation-change

Currently diff --color-moved-ws=allow-indentation-change does not
support indentation that contains a mix of tabs and spaces. For
example in commit 546f70f377 ("convert.h: drop 'extern' from function
declaration", 2018-06-30) the function parameters in the following
lines are not colored as moved [1].

-extern int stream_filter(struct stream_filter *,
- const char *input, size_t *isize_p,
- char *output, size_t *osize_p);
+int stream_filter(struct stream_filter *,
+ const char *input, size_t *isize_p,
+ char *output, size_t *osize_p);

This commit changes the way the indentation is handled to track the
visual size of the indentation rather than the characters in the
indentation. This has the benefit that any whitespace errors do not
interfer with the move detection (the whitespace errors will still be
highlighted according to --ws-error-highlight). During the discussion
of this feature there were concerns about the correct detection of
indentation for python. However those concerns apply whether or not
we're detecting moved lines so no attempt is made to determine if the
indentation is 'pythonic'.

[1] Note that before the commit to fix the erroneous coloring of moved
lines each line was colored as a different block, since that commit
they are uncolored.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --color-moved-ws: optimize allow-indentation-changePhillip Wood Fri, 23 Nov 2018 11:16:56 +0000 (11:16 +0000)

diff --color-moved-ws: optimize allow-indentation-change

When running

git diff --color-moved-ws=allow-indentation-change v2.18.0 v2.19.0

cmp_in_block_with_wsd() is called 694908327 times. Of those 42.7%
return after comparing a and b. By comparing the lengths first we can
return early in all but 0.03% of those cases without dereferencing the
string pointers. The comparison between a and c fails in 6.8% of
calls, by comparing the lengths first we reject all the failing calls
without dereferencing the string pointers.

This reduces the time to run the command above by by 42% from 14.6s to
8.5s. This is still much slower than the normal --color-moved which
takes ~0.6-0.7s to run but is a significant improvement.

The next commits will replace the current implementation with one that
works with mixed tabs and spaces in the indentation. I think it is
worth optimizing the current implementation first to enable a fair
comparison between the two implementations.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --color-moved=zebra: be stricter with color altern... Phillip Wood Fri, 23 Nov 2018 11:16:55 +0000 (11:16 +0000)

diff --color-moved=zebra: be stricter with color alternation

Currently when using --color-moved=zebra the color of moved blocks
depends on the number of lines separating them. This means that adding
an odd number of unmoved lines between blocks that are already separated
by one or more unmoved lines will change the color of subsequent moved
blocks. This does not make much sense as the blocks were already
separated by unmoved lines and causes problems when adding lines to test
cases.

Fix this by only using the alternate colors for adjacent moved blocks.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --color-moved-ws: fix false positivesPhillip Wood Fri, 23 Nov 2018 11:16:54 +0000 (11:16 +0000)

diff --color-moved-ws: fix false positives

'diff --color-moved-ws=allow-indentation-change' can color lines as
moved when they are in fact different. For example in commit
1a07e59c3e ("Update messages in preparation for i18n", 2018-07-21) the
lines

- die (_("must end with a color"));
+ die(_("must end with a color"));

are colored as moved even though they are different.

This is because if there is a fuzzy match for the first line of
a potential moved block the line is marked as moved before the
potential match is checked to see if it actually matches. The fix is
to delay marking the line as moved until after we have checked that
there really is at least one matching potential moved block.

Note that the test modified in the last commit still fails because
adding an unmoved line between two moved blocks that are already
separated by unmoved lines changes the color of the block following the
addition. This should not be the case and will be fixed in the next
commit.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --color-moved-ws: demonstrate false positivesPhillip Wood Fri, 23 Nov 2018 11:16:53 +0000 (11:16 +0000)

diff --color-moved-ws: demonstrate false positives

'diff --color-moved-ws=allow-indentation-change' can highlight lines
that have internal whitespace changes rather than indentation
changes. For example in commit 1a07e59c3e ("Update messages in
preparation for i18n", 2018-07-21) the lines

- die (_("must end with a color"));
+ die(_("must end with a color"));

are highlighted as moved when they should not be. Modify an existing
test to show the problem that will be fixed in the next commit.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: allow --no-color-moved-wsPhillip Wood Fri, 23 Nov 2018 11:16:52 +0000 (11:16 +0000)

diff: allow --no-color-moved-ws

Allow --no-color-moved-ws and --color-moved-ws=no to cancel any previous
--color-moved-ws option.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use "whitespace" consistentlyPhillip Wood Fri, 23 Nov 2018 11:16:51 +0000 (11:16 +0000)

Use "whitespace" consistently

Most of the messages and documentation use 'whitespace' rather than
'white space' or 'white spaces' convert to latter two to the former for
consistency.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: document --no-color-movedPhillip Wood Fri, 23 Nov 2018 11:16:50 +0000 (11:16 +0000)

diff: document --no-color-moved

Add documentation for --no-color-moved.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ja/i18n-fix'Junio C Hamano Thu, 29 Nov 2018 07:28:39 +0000 (16:28 +0900)

Merge branch 'ja/i18n-fix'

* ja/i18n-fix:
i18n: fix small typos

Merge branch 'nd/n18n-fix'Junio C Hamano Thu, 29 Nov 2018 07:28:39 +0000 (16:28 +0900)

Merge branch 'nd/n18n-fix'

* nd/n18n-fix:
transport-helper.c: do not translate a string twice

i18n: fix small typosJean-Noël Avila Wed, 28 Nov 2018 21:43:09 +0000 (22:43 +0100)

i18n: fix small typos

Translating the new strings introduced for v2.20 showed some typos.

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

transport-helper.c: do not translate a string twiceNguyễn Thái Ngọc Duy Mon, 26 Nov 2018 19:57:56 +0000 (20:57 +0100)

transport-helper.c: do not translate a string twice

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'nd/per-worktree-ref-iteration'Junio C Hamano Mon, 26 Nov 2018 14:13:42 +0000 (23:13 +0900)

Merge branch 'nd/per-worktree-ref-iteration'

Build fix.

* nd/per-worktree-ref-iteration:
files-backend.c: fix build error on Solaris

Merge branch 'tb/clone-case-smashing-warning-test'Junio C Hamano Mon, 26 Nov 2018 14:13:42 +0000 (23:13 +0900)

Merge branch 'tb/clone-case-smashing-warning-test'

The code recently added to "git clone" to see if the platform's
filesystem is adequate to check out and use the project code
correctly (e.g. a case smashing filesystem cannot be used for a
project with two files whose paths are different only in case) was
meant to help Windows users, but the test for it was not enabled
for that platform, which has been corrected.

* tb/clone-case-smashing-warning-test:
t5601-99: Enable colliding file detection for MINGW

Merge branch 'jk/t5562-perl-path-fix'Junio C Hamano Mon, 26 Nov 2018 14:13:41 +0000 (23:13 +0900)

Merge branch 'jk/t5562-perl-path-fix'

Hotfix for test breakage on platforms whose Perl is not at
/usr/bin/perl

* jk/t5562-perl-path-fix:
t5562: fix perl path

files-backend.c: fix build error on SolarisNguyễn Thái Ngọc Duy Sun, 25 Nov 2018 04:58:16 +0000 (05:58 +0100)

files-backend.c: fix build error on Solaris

This function files_reflog_path returns void, which usually means
"return;" not returning "void value" from another function.

Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5562: fix perl pathJeff King Thu, 22 Nov 2018 23:38:21 +0000 (01:38 +0200)

t5562: fix perl path

Some systems do not have perl installed to /usr/bin. Use the variable
from the build settiings, and call perl directly than via shebang.

Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5601-99: Enable colliding file detection for MINGWTorsten Bögershausen Thu, 22 Nov 2018 17:59:52 +0000 (18:59 +0100)

t5601-99: Enable colliding file detection for MINGW

Commit b878579ae7 (clone: report duplicate entries on case-insensitive
filesystems - 2018-08-17) adds a warning to user when cloning a repo
with case-sensitive file names on a case-insensitive file system.

This test has never been enabled for MINGW.
It had been working since day 1, but I forget to report that to the
author.
Enable it after a re-test.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.20-rc1 v2.20.0-rc1Junio C Hamano Wed, 21 Nov 2018 14:24:52 +0000 (23:24 +0900)

Git 2.20-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 2.19.2Junio C Hamano Wed, 21 Nov 2018 14:23:48 +0000 (23:23 +0900)

Sync with 2.19.2

Git 2.19.2 v2.19.2Junio C Hamano Wed, 21 Nov 2018 14:22:12 +0000 (23:22 +0900)

Git 2.19.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sg/test-rebase-editor-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:10 +0000 (22:58 +0900)

Merge branch 'sg/test-rebase-editor-fix' into maint

* sg/test-rebase-editor-fix:
t3404-rebase-interactive: test abbreviated commands

Merge branch 'tb/char-may-be-unsigned' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:09 +0000 (22:58 +0900)

Merge branch 'tb/char-may-be-unsigned' into maint

Build portability fix.

* tb/char-may-be-unsigned:
path.c: char is not (always) signed

Merge branch 'jk/uploadpack-packobjectshook-fix' into... Junio C Hamano Wed, 21 Nov 2018 13:58:08 +0000 (22:58 +0900)

Merge branch 'jk/uploadpack-packobjectshook-fix' into maint

Code clean-up that results in a small bugfix.

* jk/uploadpack-packobjectshook-fix:
upload-pack: fix broken if/else chain in config callback

Merge branch 'uk/merge-subtree-doc-update' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:08 +0000 (22:58 +0900)

Merge branch 'uk/merge-subtree-doc-update' into maint

Belated documentation update to adjust to a new world order that
happened a yew years ago.

* uk/merge-subtree-doc-update:
howto/using-merge-subtree: mention --allow-unrelated-histories

Merge branch 'jc/cocci-preincr' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:08 +0000 (22:58 +0900)

Merge branch 'jc/cocci-preincr' into maint

Code cleanup.

* jc/cocci-preincr:
fsck: s/++i > 1/i++/
cocci: simplify "if (++u > 1)" to "if (u++)"

Merge branch 'ah/doc-updates' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:07 +0000 (22:58 +0900)

Merge branch 'ah/doc-updates' into maint

Doc updates.

* ah/doc-updates:
doc: fix formatting in git-update-ref
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix descripion for 'git tag --format'
doc: fix inappropriate monospace formatting
doc: fix ASCII art tab spacing
doc: clarify boundaries of 'git worktree list --porcelain'

Merge branch 'sg/doc-show-branch-typofix' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:07 +0000 (22:58 +0900)

Merge branch 'sg/doc-show-branch-typofix' into maint

Docfix.

* sg/doc-show-branch-typofix:
doc: fix small typo in git show-branch

Merge branch 'tq/branch-style-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:06 +0000 (22:58 +0900)

Merge branch 'tq/branch-style-fix' into maint

Code clean-up.

* tq/branch-style-fix:
branch: trivial style fix

Merge branch 'tq/branch-create-wo-branch-get' into... Junio C Hamano Wed, 21 Nov 2018 13:58:06 +0000 (22:58 +0900)

Merge branch 'tq/branch-create-wo-branch-get' into maint

Code clean-up.

* tq/branch-create-wo-branch-get:
builtin/branch.c: remove useless branch_get

Merge branch 'sb/strbuf-h-update' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:06 +0000 (22:58 +0900)

Merge branch 'sb/strbuf-h-update' into maint

Code clean-up to serve as a BCP example.
Further clean-up patches may want to follow soon.

* sb/strbuf-h-update:
strbuf.h: format according to coding guidelines

Merge branch 'du/cherry-is-plumbing' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:05 +0000 (22:58 +0900)

Merge branch 'du/cherry-is-plumbing' into maint

Doc update to mark "git cherry" as a plumbing command.

* du/cherry-is-plumbing:
doc: move git-cherry to plumbing

Merge branch 'du/get-tar-commit-id-is-plumbing' into... Junio C Hamano Wed, 21 Nov 2018 13:58:05 +0000 (22:58 +0900)

Merge branch 'du/get-tar-commit-id-is-plumbing' into maint

Doc update to mark "git get-tar-commit-id" as a plumbing command.

* du/get-tar-commit-id-is-plumbing:
doc: move git-get-tar-commit-id to plumbing

Merge branch 'mm/doc-no-dashed-git' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:04 +0000 (22:58 +0900)

Merge branch 'mm/doc-no-dashed-git' into maint

Doc update.

* mm/doc-no-dashed-git:
doc: fix a typo and clarify a sentence

Merge branch 'du/rev-parse-is-plumbing' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:04 +0000 (22:58 +0900)

Merge branch 'du/rev-parse-is-plumbing' into maint

Doc update.

* du/rev-parse-is-plumbing:
doc: move git-rev-parse from porcelain to plumbing

Merge branch 'ma/t7005-bash-workaround' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:04 +0000 (22:58 +0900)

Merge branch 'ma/t7005-bash-workaround' into maint

Test fix.

* ma/t7005-bash-workaround:
t7005-editor: quote filename to fix whitespace-issue

Merge branch 'jc/how-to-document-api' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:03 +0000 (22:58 +0900)

Merge branch 'jc/how-to-document-api' into maint

Doc update.

* jc/how-to-document-api:
CodingGuidelines: document the API in *.h files

Merge branch 'mw/doc-typofixes' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:03 +0000 (22:58 +0900)

Merge branch 'mw/doc-typofixes' into maint

Typofixes.

* mw/doc-typofixes:
docs: typo: s/isimilar/similar/
docs: graph: remove unnecessary `graph_update()' call
docs: typo: s/go/to/

Merge branch 'rs/sequencer-oidset-insert-avoids-dups... Junio C Hamano Wed, 21 Nov 2018 13:58:02 +0000 (22:58 +0900)

Merge branch 'rs/sequencer-oidset-insert-avoids-dups' into maint

Code clean-up.

* rs/sequencer-oidset-insert-avoids-dups:
sequencer: use return value of oidset_insert()

Merge branch 'ma/mailing-list-address-in-git-help'... Junio C Hamano Wed, 21 Nov 2018 13:58:02 +0000 (22:58 +0900)

Merge branch 'ma/mailing-list-address-in-git-help' into maint

Doc update.

* ma/mailing-list-address-in-git-help:
git doc: direct bug reporters to mailing list archive

Merge branch 'nd/packobjectshook-doc-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)

Merge branch 'nd/packobjectshook-doc-fix' into maint

Doc update.

* nd/packobjectshook-doc-fix:
config.txt: correct the note about uploadpack.packObjectsHook

Merge branch 'ma/t1400-undebug-test' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)

Merge branch 'ma/t1400-undebug-test' into maint

Test fix.

* ma/t1400-undebug-test:
t1400: drop debug `echo` to actually execute `test`

Merge branch 'ma/commit-graph-docs' into maintJunio C Hamano Wed, 21 Nov 2018 13:58:00 +0000 (22:58 +0900)

Merge branch 'ma/commit-graph-docs' into maint

Doc update.

* ma/commit-graph-docs:
Doc: refer to the "commit-graph file" with dash
git-commit-graph.txt: refer to "*commit*-graph file"
git-commit-graph.txt: typeset more in monospace
git-commit-graph.txt: fix bullet lists

Merge branch 'dz/credential-doc-url-matching-rules... Junio C Hamano Wed, 21 Nov 2018 13:58:00 +0000 (22:58 +0900)

Merge branch 'dz/credential-doc-url-matching-rules' into maint

Doc update.

* dz/credential-doc-url-matching-rules:
doc: clarify gitcredentials path component matching

Merge branch 'jk/check-everything-connected-is-long... Junio C Hamano Wed, 21 Nov 2018 13:57:59 +0000 (22:57 +0900)

Merge branch 'jk/check-everything-connected-is-long-gone' into maint

Comment fix.

* jk/check-everything-connected-is-long-gone:
receive-pack: update comment with check_everything_connected

Merge branch 'fe/doc-updates' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)

Merge branch 'fe/doc-updates' into maint

Doc updates.

* fe/doc-updates:
git-describe.1: clarify that "human readable" is also git-readable
git-column.1: clarify initial description, provide examples
git-archimport.1: specify what kind of Arch we're talking about

Merge branch 'tg/t5551-with-curl-7.61.1' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)

Merge branch 'tg/t5551-with-curl-7.61.1' into maint

Test update.
Supersedes tz/t5551-with-curl-7.61.1 topic

* tg/t5551-with-curl-7.61.1:
t5551: compare sorted cookies files
t5551: move setup code inside test_expect blocks

Merge branch 'tq/refs-internal-comment-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:58 +0000 (22:57 +0900)

Merge branch 'tq/refs-internal-comment-fix' into maint

Fix for typo in a sample code in comment.

* tq/refs-internal-comment-fix:
refs: docstring typo

Merge branch 'sg/split-index-test' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:57 +0000 (22:57 +0900)

Merge branch 'sg/split-index-test' into maint

Test updates.

* sg/split-index-test:
t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
t1700-split-index: drop unnecessary 'grep'

Merge branch 'bw/protocol-v2' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:57 +0000 (22:57 +0900)

Merge branch 'bw/protocol-v2' into maint

Doc fix.

* bw/protocol-v2:
config: document value 2 for protocol.version

Merge branch 'sb/string-list-remove-unused' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:56 +0000 (22:57 +0900)

Merge branch 'sb/string-list-remove-unused' into maint

Code clean-up.

* sb/string-list-remove-unused:
string-list: remove unused function print_string_list

Merge branch 'jk/dev-build-format-security' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:56 +0000 (22:57 +0900)

Merge branch 'jk/dev-build-format-security' into maint

Build tweak to help developers.

* jk/dev-build-format-security:
config.mak.dev: add -Wformat-security

Merge branch 'sg/t3701-tighten-trace' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:55 +0000 (22:57 +0900)

Merge branch 'sg/t3701-tighten-trace' into maint

Test update.

* sg/t3701-tighten-trace:
t3701-add-interactive: tighten the check of trace output

Merge branch 'en/double-semicolon-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)

Merge branch 'en/double-semicolon-fix' into maint

Code clean-up.

* en/double-semicolon-fix:
Remove superfluous trailing semicolons

Merge branch 'tb/void-check-attr' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)

Merge branch 'tb/void-check-attr' into maint

Code clean-up.

* tb/void-check-attr:
Make git_check_attr() a void function

Merge branch 'sg/doc-trace-appends' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:54 +0000 (22:57 +0900)

Merge branch 'sg/doc-trace-appends' into maint

Docfix.

* sg/doc-trace-appends:
Documentation/git.txt: clarify that GIT_TRACE=/path appends

Merge branch 'tg/conflict-marker-size' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:53 +0000 (22:57 +0900)

Merge branch 'tg/conflict-marker-size' into maint

Developer aid.

* tg/conflict-marker-size:
.gitattributes: add conflict-marker-size for relevant files

Merge branch 'ts/doc-build-manpage-xsl-quietly' into... Junio C Hamano Wed, 21 Nov 2018 13:57:53 +0000 (22:57 +0900)

Merge branch 'ts/doc-build-manpage-xsl-quietly' into maint

Build tweak.

* ts/doc-build-manpage-xsl-quietly:
Documentation/Makefile: make manpage-base-url.xsl generation quieter

Merge branch 'jk/detect-truncated-zlib-input' into... Junio C Hamano Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)

Merge branch 'jk/detect-truncated-zlib-input' into maint

A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.

* jk/detect-truncated-zlib-input:
cat-file: handle streaming failures consistently
check_stream_sha1(): handle input underflow
t1450: check large blob in trailing-garbage test

Merge branch 'sg/test-verbose-log' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)

Merge branch 'sg/test-verbose-log' into maint

Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.

* sg/test-verbose-log:
test-lib: introduce the '-V' short option for '--verbose-log'

Merge branch 'ss/travis-ci-force-vm-mode' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)

Merge branch 'ss/travis-ci-force-vm-mode' into maint

The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.

* ss/travis-ci-force-vm-mode:
travis-ci: no longer use containers

Merge branch 'md/exclude-promisor-objects-fix' into... Junio C Hamano Wed, 21 Nov 2018 13:57:52 +0000 (22:57 +0900)

Merge branch 'md/exclude-promisor-objects-fix' into maint

Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.

* md/exclude-promisor-objects-fix:
exclude-promisor-objects: declare when option is allowed
Documentation/git-log.txt: do not show --exclude-promisor-objects

Merge branch 'js/shallow-and-fetch-prune' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:51 +0000 (22:57 +0900)

Merge branch 'js/shallow-and-fetch-prune' into maint

"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.

* js/shallow-and-fetch-prune:
repack -ad: prune the list of shallow commits
shallow: offer to prune only non-existing entries
repack: point out a bug handling stale shallow info

Merge branch 'jc/receive-deny-current-branch-fix' into... Junio C Hamano Wed, 21 Nov 2018 13:57:51 +0000 (22:57 +0900)

Merge branch 'jc/receive-deny-current-branch-fix' into maint

The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.

* jc/receive-deny-current-branch-fix:
receive: denyCurrentBranch=updateinstead should not blindly update

Merge branch 'js/diff-notice-has-drive-prefix' into... Junio C Hamano Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)

Merge branch 'js/diff-notice-has-drive-prefix' into maint

Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.

* js/diff-notice-has-drive-prefix:
diff: don't attempt to strip prefix from absolute Windows paths

Merge branch 'js/pack-objects-mutex-init-fix' into... Junio C Hamano Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)

Merge branch 'js/pack-objects-mutex-init-fix' into maint

A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.

* js/pack-objects-mutex-init-fix:
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects: fix typo 'detla' -> 'delta'

Merge branch 'jk/run-command-notdot' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:50 +0000 (22:57 +0900)

Merge branch 'jk/run-command-notdot' into maint

The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.

* jk/run-command-notdot:
run-command: mark path lookup errors with ENOENT

Merge branch 'np/log-graph-octopus-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:49 +0000 (22:57 +0900)

Merge branch 'np/log-graph-octopus-fix' into maint

"git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.

* np/log-graph-octopus-fix:
log: fix coloring of certain octopus merge shapes

Merge branch 'sg/split-index-racefix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)

Merge branch 'sg/split-index-racefix' into maint

The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.

* sg/split-index-racefix:
split-index: BUG() when cache entry refers to non-existing shared entry
split-index: smudge and add racily clean cache entries to split index
split-index: don't compare cached data of entries already marked for split index
split-index: count the number of deleted entries
t1700-split-index: date back files to avoid racy situations
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: document why FSMONITOR is disabled in this test script

Merge branch 'jt/non-blob-lazy-fetch' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)

Merge branch 'jt/non-blob-lazy-fetch' into maint

A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects. The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.

* jt/non-blob-lazy-fetch:
fetch-pack: exclude blobs when lazy-fetching trees
fetch-pack: avoid object flags if no_dependents

Merge branch 'sm/show-superproject-while-conflicted... Junio C Hamano Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)

Merge branch 'sm/show-superproject-while-conflicted' into maint

A corner-case bugfix.

* sm/show-superproject-while-conflicted:
rev-parse: --show-superproject-working-tree should work during a merge

Merge branch 'en/status-multiple-renames-to-the-same... Junio C Hamano Wed, 21 Nov 2018 13:57:48 +0000 (22:57 +0900)

Merge branch 'en/status-multiple-renames-to-the-same-target-fix' into maint

The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.

* en/status-multiple-renames-to-the-same-target-fix:
commit: fix erroneous BUG, 'multiple renames on the same target? how?'

Merge branch 'jn/mailmap-update' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:47 +0000 (22:57 +0900)

Merge branch 'jn/mailmap-update' into maint

The mailmap file update.

* jn/mailmap-update:
mailmap: consistently normalize brian m. carlson's name

Merge branch 'ds/commit-graph-with-grafts' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:47 +0000 (22:57 +0900)

Merge branch 'ds/commit-graph-with-grafts' into maint

The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.

* ds/commit-graph-with-grafts:
commit-graph: close_commit_graph before shallow walk
commit-graph: not compatible with uninitialized repo
commit-graph: not compatible with grafts
commit-graph: not compatible with replace objects
test-repository: properly init repo
commit-graph: update design document
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
refs.c: migrate internal ref iteration to pass thru repository argument

Merge branch 'tg/range-diff-corner-case-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)

Merge branch 'tg/range-diff-corner-case-fix' into maint

Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.

* tg/range-diff-corner-case-fix:
linear-assignment: fix potential out of bounds memory access

Merge branch 'en/update-ref-no-deref-stdin' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)

Merge branch 'en/update-ref-no-deref-stdin' into maint

"git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.

* en/update-ref-no-deref-stdin:
update-ref: allow --no-deref with --stdin
update-ref: fix type of update_flags variable to match its usage

Merge branch 'ms/remote-error-message-update' into... Junio C Hamano Wed, 21 Nov 2018 13:57:46 +0000 (22:57 +0900)

Merge branch 'ms/remote-error-message-update' into maint

Update error messages given by "git remote" and make them consistent.

* ms/remote-error-message-update:
builtin/remote: quote remote name on error to display empty name

Merge branch 'jt/lazy-object-fetch-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)

Merge branch 'jt/lazy-object-fetch-fix' into maint

The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.

* jt/lazy-object-fetch-fix:
fetch-object: set exact_oid when fetching
fetch-object: unify fetch_object[s] functions

Merge branch 'en/sequencer-empty-edit-result-aborts... Junio C Hamano Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)

Merge branch 'en/sequencer-empty-edit-result-aborts' into maint

"git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.

* en/sequencer-empty-edit-result-aborts:
sequencer: fix --allow-empty-message behavior, make it smarter

Merge branch 'nd/attr-pathspec-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:45 +0000 (22:57 +0900)

Merge branch 'nd/attr-pathspec-fix' into maint

"git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.

* nd/attr-pathspec-fix:
add: do not accept pathspec magic 'attr'

Merge branch 'en/rerere-multi-stage-1-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:44 +0000 (22:57 +0900)

Merge branch 'en/rerere-multi-stage-1-fix' into maint

A corner case bugfix in "git rerere" code.

* en/rerere-multi-stage-1-fix:
rerere: avoid buffer overrun
t4200: demonstrate rerere segfault on specially crafted merge

Merge branch 'js/mingw-o-append' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:44 +0000 (22:57 +0900)

Merge branch 'js/mingw-o-append' into maint

Further fix for O_APPEND emulation on Windows

* js/mingw-o-append:
mingw: fix mingw_open_append to work with named pipes
t0051: test GIT_TRACE to a windows named pipe

Merge branch 'jk/reopen-tempfile-truncate' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:43 +0000 (22:57 +0900)

Merge branch 'jk/reopen-tempfile-truncate' into maint

Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.

* jk/reopen-tempfile-truncate:
reopen_tempfile(): truncate opened file

Merge branch 'bp/mv-submodules-with-fsmonitor' into... Junio C Hamano Wed, 21 Nov 2018 13:57:43 +0000 (22:57 +0900)

Merge branch 'bp/mv-submodules-with-fsmonitor' into maint

When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.

* bp/mv-submodules-with-fsmonitor:
git-mv: allow submodules and fsmonitor to work together

Merge branch 'js/rebase-i-autosquash-fix' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:42 +0000 (22:57 +0900)

Merge branch 'js/rebase-i-autosquash-fix' into maint

"git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.

* js/rebase-i-autosquash-fix:
rebase -i: be careful to wrap up fixup/squash chains
rebase -i --autosquash: demonstrate a problem skipping the last squash

Merge branch 'jk/trailer-fixes' into maintJunio C Hamano Wed, 21 Nov 2018 13:57:41 +0000 (22:57 +0900)

Merge branch 'jk/trailer-fixes' into maint

"git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.

* jk/trailer-fixes:
append_signoff: use size_t for string offsets
sequencer: ignore "---" divider when parsing trailers
pretty, ref-filter: format %(trailers) with no_divider option
interpret-trailers: allow suppressing "---" divider
interpret-trailers: tighten check for "---" patch boundary
trailer: pass process_trailer_opts to trailer_info_get()
trailer: use size_t for iterating trailer list
trailer: use size_t for string offsets

Merge branch 'cc/shared-index-permbits'Junio C Hamano Wed, 21 Nov 2018 11:39:03 +0000 (20:39 +0900)

Merge branch 'cc/shared-index-permbits'

The way .git/index and .git/sharedindex* files were initially
created gave these files different perm bits until they were
adjusted for shared repository settings. This was made consistent.

* cc/shared-index-permbits:
read-cache: make the split index obey umask settings

Merge branch 'nd/clone-case-smashing-warning'Junio C Hamano Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)

Merge branch 'nd/clone-case-smashing-warning'

Recently added check for case smashing filesystems did not
correctly utilize the cached stat information, leading to false
breakage detected by our test suite, which has been corrected.

* nd/clone-case-smashing-warning:
clone: fix colliding file detection on APFS

Merge branch 'tz/build-tech-midx-doc'Junio C Hamano Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)

Merge branch 'tz/build-tech-midx-doc'

A documentation page that is referred to by other pages was not
built by mistake, which has been corrected.

* tz/build-tech-midx-doc:
Documentation: build technical/multi-pack-index

Merge branch 'jn/eoie-ieot'Junio C Hamano Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)

Merge branch 'jn/eoie-ieot'

As the warning message shown by existing versions of Git for
unknown index extensions is a bit too alarming, two new extensions
are held back and not written by default for the upcoming release.

* jn/eoie-ieot:
index: make index.threads=true enable ieot and eoie
ieot: default to not writing IEOT section
eoie: default to not writing EOIE section

Merge branch 'cc/delta-islands'Junio C Hamano Wed, 21 Nov 2018 11:39:02 +0000 (20:39 +0900)

Merge branch 'cc/delta-islands'

A few issues in the implementation of "delta-islands" feature has
been corrected.

* cc/delta-islands:
pack-objects: fix off-by-one in delta-island tree-depth computation
pack-objects: zero-initialize tree_depth/layer arrays
pack-objects: fix tree_depth and layer invariants

Merge branch 'js/rebase-am-options-fix'Junio C Hamano Wed, 21 Nov 2018 11:39:01 +0000 (20:39 +0900)

Merge branch 'js/rebase-am-options-fix'

Recently, built-in "rebase" tightened the error checking for a few
options that are passed to underlying "am", but we forgot to make
the matching change to the scripted version, which has been
corrected.

* js/rebase-am-options-fix:
legacy-rebase: backport -C<n> and --whitespace=<option> checks

Merge branch 'js/builtin-rebase-perf-fix-err-fix'Junio C Hamano Wed, 21 Nov 2018 11:39:01 +0000 (20:39 +0900)

Merge branch 'js/builtin-rebase-perf-fix-err-fix'

The object name of the tree reported in a recently added error
message was wrong, which has been corrected.

* js/builtin-rebase-perf-fix-err-fix:
rebase: warn about the correct tree's OID

index: make index.threads=true enable ieot and eoieJonathan Nieder Tue, 20 Nov 2018 06:14:26 +0000 (22:14 -0800)

index: make index.threads=true enable ieot and eoie

If a user explicitly sets

[index]
threads = true

to read the index using multiple threads, ensure that index writes
include the offset table by default to make that possible. This
ensures that the user's intent of turning on threading is respected.

In other words, permit the following configurations:

- index.threads and index.recordOffsetTable unspecified: do not write
the offset table yet (to avoid alarming the user with "ignoring IEOT
extension" messages when an older version of Git accesses the
repository) but do make use of multiple threads to read the index if
the supporting offset table is present.

This can also be requested explicitly by setting index.threads=true,
0, or >1 and index.recordOffsetTable=false.

- index.threads=false or 1: do not write the offset table, and do not
make use of the offset table.

One can set index.recordOffsetTable=false as well, to be more
explicit.

- index.threads=true, 0, or >1 and index.recordOffsetTable unspecified:
write the offset table and make use of threads at read time.

This can also be requested by setting index.threads=true, 0, >1, or
unspecified and index.recordOffsetTable=true.

Fortunately the complication is temporary: once most Git installations
have upgraded to a version with support for the IEOT and EOIE
extensions, we can flip the defaults for index.recordEndOfIndexEntries
and index.recordOffsetTable to true and eliminate the settings.

Helped-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: fix colliding file detection on APFSNguyễn Thái Ngọc Duy Tue, 20 Nov 2018 16:28:53 +0000 (17:28 +0100)

clone: fix colliding file detection on APFS

Commit b878579ae7 (clone: report duplicate entries on case-insensitive
filesystems - 2018-08-17) adds a warning to user when cloning a repo
with case-sensitive file names on a case-insensitive file system. The
"find duplicate file" check was doing by comparing inode number (and
only fall back to fspathcmp() when inode is known to be unreliable
because fspathcmp() can't cover all case folding cases).

The inode check is very simple, and wrong. It compares between a
32-bit number (sd_ino) and potentially a 64-bit number (st_ino). When
an inode is larger than 2^32 (which seems to be the case for APFS), it
will be truncated and stored in sd_ino, but comparing with itself will
fail.

As a result, instead of showing a pair of files that have the same
name, we show just one file (marked before the beginning of the
loop). We fail to find the original one.

The fix could be just a simple type cast (*)

dup->ce_stat_data.sd_ino == (unsigned int)st->st_ino

but this is no longer a reliable test, there are 4G possible inodes
that can match sd_ino because we only match the lower 32 bits instead
of full 64 bits.

There are two options to go. Either we ignore inode and go with
fspathcmp() on Apple platform. This means we can't do accurate inode
check on HFS anymore, or even on APFS when inode numbers are still
below 2^32.

Or we just to to reduce the odds of matching a wrong file by checking
more attributes, counting mostly on st_size because st_xtime is likely
the same. This patch goes with this direction, hoping that false
positive chances are too small to be seen in practice.

While at there, enable the test on Cygwin (verified working by Ramsay
Jones)

(*) this is also already done inside match_stat_data()

Reported-by: Carlo Arenas <carenas@gmail.com>
Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: build technical/multi-pack-indexTodd Zullinger Tue, 20 Nov 2018 18:04:54 +0000 (13:04 -0500)

Documentation: build technical/multi-pack-index

The git-multi-pack-index doc links to technical/multi-pack-index.html.
Ensure it is built to prevent a broken link.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: fix off-by-one in delta-island tree-depth... Jeff King Tue, 20 Nov 2018 09:50:53 +0000 (04:50 -0500)

pack-objects: fix off-by-one in delta-island tree-depth computation

When delta-islands are in use, we need to record the deepest path at
which we find each tree and blob. Our loop to do so counts slashes, so
"foo" is depth 0, "foo/bar" is depth 1, and so on.

However, this neglects root trees, which are represented by the empty
string. Those also have depth 0, but are at a layer above "foo". Thus,
"foo" should be 1, "foo/bar" at 2, and so on. We use this depth to
topo-sort the trees in resolve_tree_islands(). As a result, we may fail
to visit a root tree before the sub-trees it contains, and therefore not
correctly pass down the island marks.

That in turn could lead to missing some delta opportunities (objects are
in the same island, but we didn't realize it) or creating unwanted
cross-island deltas (one object is in an island another isn't, but we
don't realize). In practice, it seems to have only a small effect. Some
experiments on the real-world git/git fork network at GitHub showed an
improvement of only 0.14% in the resulting clone size.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: zero-initialize tree_depth/layer arraysJeff King Tue, 20 Nov 2018 09:48:57 +0000 (04:48 -0500)

pack-objects: zero-initialize tree_depth/layer arrays

Commit 108f530385 (pack-objects: move tree_depth into 'struct
packing_data', 2018-08-16) started maintaining a tree_depth array that
matches the "objects" array. We extend the array when:

1. The objects array is extended, in which case we use realloc to
extend the tree_depth array.

2. A caller asks to store a tree_depth for object N, and this is the
first such request; we create the array from scratch and store the
value for N.

In the latter case, though, we use regular xmalloc(), and the depth
values for any objects besides N is undefined. This happens to not
trigger a bug with the current code, but the reasons are quite subtle:

- we never ask about the depth for any object with index i < N. This is
because we store the depth immediately for all trees and blobs. So
any such "i" must be a non-tree, and therefore we will never need to
care about its depth (in fact, we really only care about the depth of
trees).

- there are no objects at this point with index i > N, because we
always fill in the depth for a tree immediately after its object
entry is created (we may still allocate uninitialized depth entries,
but they'll be initialized by packlist_alloc() when it initializes
the entry in the "objects" array).

So it works, but only by chance. To be defensive, let's zero the array,
which matches the "unset" values which would be handed out by
oe_tree_depth() already.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: fix tree_depth and layer invariantsJeff King Tue, 20 Nov 2018 09:46:38 +0000 (04:46 -0500)

pack-objects: fix tree_depth and layer invariants

Commit 108f530385 (pack-objects: move tree_depth into 'struct
packing_data', 2018-08-16) dynamically manages a tree_depth array in
packing_data that maintains one of these invariants:

1. tree_depth is NULL (i.e., the requested options don't require us to
track tree depths)

2. tree_depth is non-NULL and has as many entries as the "objects"
array

We maintain (2) by:

a. When the objects array grows, grow tree_depth to the same size
(unless it's NULL, in which case we can leave it).

b. When a caller asks to set a depth via oe_set_tree_depth(), if
tree_depth is NULL we allocate it.

But in (b), we use the number of stored objects, _not_ the allocated
size of the objects array. So we can run into a situation like this:

1. packlist_alloc() needs to store the Nth object, so it grows the
objects array to M, where M > N.

2. oe_set_tree_depth() wants to store a depth, so it allocates an
array of length N. Now we've violated our invariant.

3. packlist_alloc() needs to store the N+1th object. But it _doesn't_
grow the objects array, since N <= M still holds. We try to assign
to tree_depth[N+1], which is out of bounds.

That doesn't happen in our test scripts, because the repositories they
use are so small, but it's easy to trigger by running:

echo HEAD | git pack-objects --revs --delta-islands --stdout >/dev/null

in any reasonably-sized repo (like git.git).

We can fix it by always growing the array to match pack->nr_alloc, not
pack->nr_objects. Likewise for the "layer" array from fe0ac2fb7f
(pack-objects: move 'layer' into 'struct packing_data', 2018-08-16),
which has the same bug.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>