gitweb.git
Merge branch 'jk/stream-pack-non-delta-clarification'Junio C Hamano Tue, 13 Nov 2018 13:37:18 +0000 (22:37 +0900)

Merge branch 'jk/stream-pack-non-delta-clarification'

Additional comment on a tricky piece of code to help developers.

* jk/stream-pack-non-delta-clarification:
read_istream_pack_non_delta(): document input handling

Merge branch 'jk/proto-v2-ref-prefix-fix'Junio C Hamano Tue, 13 Nov 2018 13:37:17 +0000 (22:37 +0900)

Merge branch 'jk/proto-v2-ref-prefix-fix'

"git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.

* jk/proto-v2-ref-prefix-fix:
ls-remote: pass heads/tags prefixes to transport
ls-remote: do not send ref prefixes for patterns

Merge branch 'jk/detect-truncated-zlib-input'Junio C Hamano Tue, 13 Nov 2018 13:37:17 +0000 (22:37 +0900)

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

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 'nd/config-split'Junio C Hamano Tue, 13 Nov 2018 13:37:16 +0000 (22:37 +0900)

Merge branch 'nd/config-split'

Split the overly large Documentation/config.txt file into million
little pieces. This potentially allows each individual piece
included into the manual page of the command it affects more easily.

* nd/config-split: (81 commits)
config.txt: remove config/dummy.txt
config.txt: move worktree.* to a separate file
config.txt: move web.* to a separate file
config.txt: move versionsort.* to a separate file
config.txt: move user.* to a separate file
config.txt: move url.* to a separate file
config.txt: move uploadpack.* to a separate file
config.txt: move uploadarchive.* to a separate file
config.txt: move transfer.* to a separate file
config.txt: move tag.* to a separate file
config.txt: move submodule.* to a separate file
config.txt: move stash.* to a separate file
config.txt: move status.* to a separate file
config.txt: move splitIndex.* to a separate file
config.txt: move showBranch.* to a separate file
config.txt: move sequencer.* to a separate file
config.txt: move sendemail-config.txt to config/
config.txt: move reset.* to a separate file
config.txt: move rerere.* to a separate file
config.txt: move repack.* to a separate file
...

Ninth batch for 2.20Junio C Hamano Tue, 6 Nov 2018 06:51:23 +0000 (15:51 +0900)

Ninth batch for 2.20

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

Merge branch 'sg/test-verbose-log'Junio C Hamano Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)

Merge branch 'sg/test-verbose-log'

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 'rj/header-cleanup'Junio C Hamano Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)

Merge branch 'rj/header-cleanup'

Code cleanup.

* rj/header-cleanup:
commit-reach.h: add missing declarations (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
fetch-object.h: add missing declaration (hdr-check)

Merge branch 'ss/travis-ci-force-vm-mode'Junio C Hamano Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)

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

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 'sg/test-rebase-editor-fix'Junio C Hamano Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)

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

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

Merge branch 'tb/char-may-be-unsigned'Junio C Hamano Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)

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

Build portability fix.

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

Merge branch 'js/mingw-ns-filetime'Junio C Hamano Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)

Merge branch 'js/mingw-ns-filetime'

Windows port learned to use nano-second resolution file timestamps.

* js/mingw-ns-filetime:
mingw: implement nanosecond-precision file times
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: factor out code to set stat() data

Merge branch 'md/exclude-promisor-objects-fix'Junio C Hamano Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)

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

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 'jw/send-email-no-auth'Junio C Hamano Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)

Merge branch 'jw/send-email-no-auth'

"git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).

* jw/send-email-no-auth:
send-email: explicitly disable authentication

Merge branch 'nd/submodule-unused-vars'Junio C Hamano Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)

Merge branch 'nd/submodule-unused-vars'

Code clean-up.

* nd/submodule-unused-vars:
submodule.c: remove some of the_repository references

Merge branch 'nd/unpack-trees-with-cache-tree'Junio C Hamano Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)

Merge branch 'nd/unpack-trees-with-cache-tree'

Trivial bugfix.

* nd/unpack-trees-with-cache-tree:
read-cache: use of memory after it is freed

Merge branch 'nd/completion-negation'Junio C Hamano Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)

Merge branch 'nd/completion-negation'

The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.

* nd/completion-negation:
completion: fix __gitcomp_builtin no longer consider extra options

Merge branch 'jt/upload-pack-v2-fix-shallow'Junio C Hamano Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)

Merge branch 'jt/upload-pack-v2-fix-shallow'

"git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.

* jt/upload-pack-v2-fix-shallow:
upload-pack: clear flags before each v2 request
upload-pack: make want_obj not global
upload-pack: make have_obj not global

Merge branch 'sb/submodule-url-to-absolute'Junio C Hamano Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)

Merge branch 'sb/submodule-url-to-absolute'

Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.

* sb/submodule-url-to-absolute:
submodule helper: convert relative URL to absolute URL if needed

Merge branch 'js/shallow-and-fetch-prune'Junio C Hamano Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)

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

"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 'js/remote-archive-dwimfix'Junio C Hamano Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)

Merge branch 'js/remote-archive-dwimfix'

The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.

* js/remote-archive-dwimfix:
archive: initialize archivers earlier

Merge branch 'jc/http-curlver-warnings'Junio C Hamano Fri, 2 Nov 2018 15:53:59 +0000 (00:53 +0900)

Merge branch 'jc/http-curlver-warnings'

Warning message fix.

* jc/http-curlver-warnings:
http: give curl version warnings consistently

Merge branch 'js/mingw-http-ssl'Junio C Hamano Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)

Merge branch 'js/mingw-http-ssl'

On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.

* js/mingw-http-ssl:
http: when using Secure Channel, ignore sslCAInfo by default
http: add support for disabling SSL revocation checks in cURL
http: add support for selecting SSL backends at runtime

Merge branch 'mg/gpg-fingerprint'Junio C Hamano Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)

Merge branch 'mg/gpg-fingerprint'

New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.

* mg/gpg-fingerprint:
gpg-interface.c: obtain primary key fingerprint as well
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: use flags to determine key/signer info presence

Merge branch 'mg/gpg-parse-tighten'Junio C Hamano Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)

Merge branch 'mg/gpg-parse-tighten'

Detect and reject a signature block that has more than one GPG
signature.

* mg/gpg-parse-tighten:
gpg-interface.c: detect and reject multiple signatures on commits

Merge branch 'en/merge-cleanup-more'Junio C Hamano Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)

Merge branch 'en/merge-cleanup-more'

Further clean-up of merge-recursive machinery.

* en/merge-cleanup-more:
merge-recursive: avoid showing conflicts with merge branch before HEAD
merge-recursive: improve auto-merging messages with path collisions

Eighth batch for 2.20Junio C Hamano Thu, 1 Nov 2018 12:26:34 +0000 (21:26 +0900)

Eighth batch for 2.20

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

rebase: apply cocci patchJunio C Hamano Thu, 1 Nov 2018 12:44:41 +0000 (21:44 +0900)

rebase: apply cocci patch

Favor oideq() over !oidcmp() when checking for equality.

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

Merge branch 'js/rebase-i-shortopt'Junio C Hamano Fri, 2 Nov 2018 02:04:59 +0000 (11:04 +0900)

Merge branch 'js/rebase-i-shortopt'

"git rebase -i" learned to take 'b' as the short form of 'break'
option in the todo list.

* js/rebase-i-shortopt:
rebase -i: recognize short commands without arguments

Merge branch 'js/rebase-i-break'Junio C Hamano Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)

Merge branch 'js/rebase-i-break'

"git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.

* js/rebase-i-break:
rebase -i: introduce the 'break' command
rebase -i: clarify what happens on a failed `exec`

Merge branch 'js/rebase-autostash-fix'Junio C Hamano Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)

Merge branch 'js/rebase-autostash-fix'

"git rebase" that has recently been rewritten in C had a few issues
in its "--autstash" feature, which have been corrected.

* js/rebase-autostash-fix:
rebase --autostash: fix issue with dirty submodules
rebase --autostash: demonstrate a problem with dirty submodules
rebase (autostash): use an explicit OID to apply the stash
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): avoid duplicate call to state_dir_path()

Merge branch 'cb/printf-empty-format'Junio C Hamano Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)

Merge branch 'cb/printf-empty-format'

Build fix for a topic in flight.

* cb/printf-empty-format:
sequencer: cleanup for gcc warning in non developer mode

Merge branch 'jc/rebase-in-c-5-test-typofix'Junio C Hamano Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)

Merge branch 'jc/rebase-in-c-5-test-typofix'

Typofix.

* jc/rebase-in-c-5-test-typofix:
rebase: fix typoes in error messages

Merge branch 'pk/rebase-in-c-6-final'Junio C Hamano Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c-6-final'

The final step of rewriting "rebase -i" in C.

* pk/rebase-in-c-6-final:
rebase: default to using the builtin rebase

Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i... Junio C Hamano Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)

Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c'

"rebase" that has been rewritten learns the new calling convention
used by "rebase -i" that was rewritten in C, tying the loose end
between two GSoC topics that stomped on each other's toes.

* js/rebase-in-c-5.5-work-with-rebase-i-in-c:
builtin rebase: prepare for builtin rebase -i

Merge branch 'pk/rebase-in-c-5-test'Junio C Hamano Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c-5-test'

Rewrite "git rebase" in C.

* pk/rebase-in-c-5-test:
builtin rebase: error out on incompatible option/mode combinations
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: show progress when connected to a terminal
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: optionally auto-detect the upstream

Merge branch 'pk/rebase-in-c-4-opts'Junio C Hamano Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c-4-opts'

Rewrite "git rebase" in C.

* pk/rebase-in-c-4-opts:
builtin rebase: support --root
builtin rebase: add support for custom merge strategies
builtin rebase: support `fork-point` option
merge-base --fork-point: extract libified function
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
builtin rebase: support `--allow-empty-message` option
builtin rebase: support `--exec`
builtin rebase: support `--autostash` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `--autosquash`
builtin rebase: support `keep-empty` option
builtin rebase: support `ignore-date` option
builtin rebase: support `ignore-whitespace` option
builtin rebase: support --committer-date-is-author-date
builtin rebase: support --rerere-autoupdate
builtin rebase: support --signoff
builtin rebase: allow selecting the rebase "backend"

Merge branch 'pk/rebase-in-c-3-acts'Junio C Hamano Fri, 2 Nov 2018 02:04:54 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c-3-acts'

Rewrite "git rebase" in C.

* pk/rebase-in-c-3-acts:
builtin rebase: stop if `git am` is in progress
builtin rebase: actions require a rebase in progress
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: support --quit
builtin rebase: support --abort
builtin rebase: support --skip
builtin rebase: support --continue

Merge branch 'pk/rebase-in-c-2-basic'Junio C Hamano Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c-2-basic'

Rewrite "git rebase" in C.

* pk/rebase-in-c-2-basic:
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: start a new rebase only if none is in progress
builtin rebase: support --force-rebase
builtin rebase: try to fast forward when possible
builtin rebase: require a clean worktree
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: support --quiet
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support `git rebase --onto A...B`
builtin rebase: support --onto

Merge branch 'ag/rebase-i-in-c'Junio C Hamano Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)

Merge branch 'ag/rebase-i-in-c'

Rewrite of the remaining "rebase -i" machinery in C.

* ag/rebase-i-in-c:
rebase -i: move rebase--helper modes to rebase--interactive
rebase -i: remove git-rebase--interactive.sh
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase -i: rewrite init_basic_state() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: implement the logic to initialize $revisions in C
rebase -i: remove unused modes and functions
rebase -i: rewrite complete_action() in C
t3404: todo list with commented-out commands only aborts
sequencer: change the way skip_unnecessary_picks() returns its result
sequencer: refactor append_todo_help() to write its message to a buffer
rebase -i: rewrite checkout_onto() in C
rebase -i: rewrite setup_reflog_action() in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite the edit-todo functionality in C
editor: add a function to launch the sequence editor
rebase -i: rewrite append_todo_help() in C
sequencer: make three functions and an enum from sequencer.c public

Merge branch 'pk/rebase-in-c'Junio C Hamano Fri, 2 Nov 2018 02:04:52 +0000 (11:04 +0900)

Merge branch 'pk/rebase-in-c'

Rewrite of the "rebase" machinery in C.

* pk/rebase-in-c:
builtin/rebase: support running "git rebase <upstream>"
rebase: refactor common shell functions into their own file
rebase: start implementing it as a builtin

read_istream_pack_non_delta(): document input handlingJeff King Wed, 31 Oct 2018 05:13:16 +0000 (01:13 -0400)

read_istream_pack_non_delta(): document input handling

Twice now we have scratched our heads about why the loose streaming code
needs the protection added by 692f0bc7ae (avoid infinite loop in
read_istream_loose, 2013-03-25), but the similar code in its pack
counterpart does not.

The short answer is that use_pack() will die before it lets us run out
of bytes. Note that this could mean reading garbage (including the
trailing hash) from the packfile in some cases of corruption, but that's
OK. zlib will notice and complain (and if not, certainly the end result
will not match the object hash we expect).

Let's leave a comment this time to document our findings.

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

ls-remote: pass heads/tags prefixes to transportJeff King Wed, 31 Oct 2018 04:24:42 +0000 (00:24 -0400)

ls-remote: pass heads/tags prefixes to transport

Unlike its arbitrary text patterns, the --heads and --tags
options to ls-remote are true prefixes. We can pass this
information to the transport code. If the v2 protocol is in
use, that will reduce the size of the ref advertisement.

Note that the test added here succeeds both before and after
the patch. This is an optimization, not a bug-fix; it's just
making sure we didn't break anything.

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

ls-remote: do not send ref prefixes for patternsJeff King Wed, 31 Oct 2018 04:24:05 +0000 (00:24 -0400)

ls-remote: do not send ref prefixes for patterns

Since b4be74105f (ls-remote: pass ref prefixes when requesting a
remote's refs, 2018-03-15), "ls-remote foo" will pass "refs/heads/foo",
"refs/tags/foo", etc to the transport code in an attempt to let the
other side reduce the size of its advertisement.

Unfortunately this is not correct, as ls-remote patterns do not follow
the usual ref lookup rules, and are in fact tail-matched. So we could
find "refs/heads/foo" or "refs/heads/a/much/deeper/foo" or even
"refs/another/hierarchy/foo".

Since we can't pass a prefix and there's not yet a v2 extension for
matching wildcards, we must disable this feature to keep the same
behavior as v1.

Reported-by: Jon Simons <jon@jonsimons.org>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Adjust for 2.19.x seriesJunio C Hamano Wed, 31 Oct 2018 04:12:12 +0000 (13:12 +0900)

Adjust for 2.19.x series

* 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

cat-file: handle streaming failures consistentlyJeff King Tue, 30 Oct 2018 23:23:38 +0000 (19:23 -0400)

cat-file: handle streaming failures consistently

There are three ways to convince cat-file to stream a blob:

- cat-file -p $blob

- cat-file blob $blob

- echo $batch | cat-file --batch

In the first two, we simply exit with the error code of
streaw_blob_to_fd(). That means that an error will cause us
to exit with "-1" (which we try to avoid) without printing
any kind of error message (which is confusing to the user).

Instead, let's match the third case, which calls die() on an
error. Unfortunately we cannot be more specific, as
stream_blob_to_fd() does not tell us whether the problem was
on reading (e.g., a corrupt object) or on writing (e.g.,
ENOSPC). That might be an opportunity for future work, but
for now we will at least exit with a sane message and exit
code.

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

check_stream_sha1(): handle input underflowJeff King Tue, 30 Oct 2018 23:23:12 +0000 (19:23 -0400)

check_stream_sha1(): handle input underflow

This commit fixes an infinite loop when fscking large
truncated loose objects.

The check_stream_sha1() function takes an mmap'd loose
object buffer and streams 4k of output at a time, checking
its sha1. The loop quits when we've output enough bytes (we
know the size from the object header), or when zlib tells us
anything except Z_OK or Z_BUF_ERROR.

The latter is expected because zlib may run out of room in
our 4k buffer, and that is how it tells us to process the
output and loop again.

But Z_BUF_ERROR also covers another case: one in which zlib
cannot make forward progress because it needs more _input_.
This should never happen in this loop, because though we're
streaming the output, we have the entire deflated input
available in the mmap'd buffer. But since we don't check
this case, we'll just loop infinitely if we do see a
truncated object, thinking that zlib is asking for more
output space.

It's tempting to fix this by checking stream->avail_in as
part of the loop condition (and quitting if all of our bytes
have been consumed). But that assumes that once zlib has
consumed the input, there is nothing left to do. That's not
necessarily the case: it may have read our input into its
internal state, but still have bytes to output.

Instead, let's continue on Z_BUF_ERROR only when we see the
case we're expecting: the previous round filled our output
buffer completely. If it didn't (and we still saw
Z_BUF_ERROR), we know something is wrong and should break
out of the loop.

The bug comes from commit f6371f9210 (sha1_file: add
read_loose_object() function, 2017-01-13), which
reimplemented some of the existing loose object functions.
So it's worth checking if this bug was inherited from any of
those. The answers seems to be no. The two obvious
candidates are both OK:

1. unpack_sha1_rest(); this doesn't need to loop on
Z_BUF_ERROR at all, since it allocates the expected
output buffer in advance (which we can't do since we're
explicitly streaming here)

2. check_object_signature(); the streaming path relies on
the istream interface, which uses read_istream_loose()
for this case. That function uses a similar "is our
output buffer full" check with Z_BUF_ERROR (which is
where I stole it from for this patch!)

Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t1450: check large blob in trailing-garbage testJeff King Tue, 30 Oct 2018 23:18:51 +0000 (19:18 -0400)

t1450: check large blob in trailing-garbage test

Commit cce044df7f (fsck: detect trailing garbage in all
object types, 2017-01-13) added two tests of trailing
garbage in a loose object file: one with a commit and one
with a blob. The point of having two is that blobs would
follow a different code path that streamed the contents,
instead of loading it into a buffer as usual.

At the time, merely being a blob was enough to trigger the
streaming code path. But since 7ac4f3a007 (fsck: actually
fsck blob data, 2018-05-02), we now only stream blobs that
are actually large. So since then, the streaming code path
is not tested at all for this case.

We can restore the original intent of the test by tweaking
core.bigFileThreshold to make our small blob seem large.
There's no easy way to externally verify that we followed
the streaming code path, but I did check before/after using
a temporary debug statement.

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

Seventh batch for 2.20Junio C Hamano Tue, 30 Oct 2018 06:44:45 +0000 (15:44 +0900)

Seventh batch for 2.20

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

Merge branch 'jk/uploadpack-packobjectshook-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:50 +0000 (15:43 +0900)

Merge branch 'jk/uploadpack-packobjectshook-fix'

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'Junio C Hamano Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)

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

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 'cb/compat-mmap-is-private-read-only'Junio C Hamano Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)

Merge branch 'cb/compat-mmap-is-private-read-only'

Code tightening.

* cb/compat-mmap-is-private-read-only:
compat: make sure git_mmap is not expected to write

Merge branch 'dl/mergetool-gui-option'Junio C Hamano Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)

Merge branch 'dl/mergetool-gui-option'

"git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.

* dl/mergetool-gui-option:
doc: document diff/merge.guitool config keys
completion: support `git mergetool --[no-]gui`
mergetool: accept -g/--[no-]gui as arguments

Merge branch 'js/mingw-load-sys-dll'Junio C Hamano Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)

Merge branch 'js/mingw-load-sys-dll'

The way DLLs are loaded on the Windows port has been improved.

* js/mingw-load-sys-dll:
mingw: load system libraries the recommended way

Merge branch 'js/mingw-getcwd'Junio C Hamano Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)

Merge branch 'js/mingw-getcwd'

The way the Windows port figures out the current directory has been
improved.

* js/mingw-getcwd:
mingw: fix getcwd when the parent directory cannot be queried
mingw: ensure `getcwd()` reports the correct case

Merge branch 'cb/khash-maybe-unused-function'Junio C Hamano Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)

Merge branch 'cb/khash-maybe-unused-function'

Build fix.

* cb/khash-maybe-unused-function:
khash: silence -Wunused-function for delta-islands
commit-slabs: move MAYBE_UNUSED out

Merge branch 'jc/cocci-preincr'Junio C Hamano Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)

Merge branch 'jc/cocci-preincr'

Code cleanup.

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

Merge branch 'ss/rename-tests'Junio C Hamano Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)

Merge branch 'ss/rename-tests'

Reorganize some tests and rename them; "ls t/" now gives a better
overview of what is tested for these scripts than before.

* ss/rename-tests:
t7501: rename commit test to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7502: rename commit test script to comply with naming convention
t7509: cleanup description and filename
t2000: rename and combine checkout clash tests

Merge branch 'ah/doc-updates'Junio C Hamano Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)

Merge branch 'ah/doc-updates'

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 'ds/reachable'Junio C Hamano Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)

Merge branch 'ds/reachable'

Trivial bugfix.

* ds/reachable:
commit-reach: fix cast in compare_commits_by_gen()

Merge branch 'jc/receive-deny-current-branch-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)

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

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 'ds/ci-commit-graph-and-midx'Junio C Hamano Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)

Merge branch 'ds/ci-commit-graph-and-midx'

One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.

* ds/ci-commit-graph-and-midx:
ci: add optional test variables

Merge branch 'jk/unused-function'Junio C Hamano Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)

Merge branch 'jk/unused-function'

Developer support.

* jk/unused-function:
config.mak.dev: enable -Wunused-function

Merge branch 'cb/remove-dead-init'Junio C Hamano Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)

Merge branch 'cb/remove-dead-init'

Code clean-up.

* cb/remove-dead-init:
multi-pack-index: avoid dead store for struct progress
unpack-trees: avoid dead store for struct progress

Merge branch 'js/diff-notice-has-drive-prefix'Junio C Hamano Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)

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

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 'ot/ref-filter-plug-leaks'Junio C Hamano Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)

Merge branch 'ot/ref-filter-plug-leaks'

Plugging a handful of memory leaks in the ref-filter codepath.

* ot/ref-filter-plug-leaks:
ref-filter: free item->value and item->value->s
ls-remote: release memory instead of UNLEAK
ref-filter: free memory from used_atom

Merge branch 'ds/reachable-first-parent-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)

Merge branch 'ds/reachable-first-parent-fix'

Correct performance regression in commit ancestry computation when
generation numbers are involved.

* ds/reachable-first-parent-fix:
commit-reach: fix first-parent heuristic

Merge branch 'rj/header-guards'Junio C Hamano Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)

Merge branch 'rj/header-guards'

Code clean-up.

* rj/header-guards:
headers: normalize the spelling of some header guards

Merge branch 'jk/test-tool-help'Junio C Hamano Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)

Merge branch 'jk/test-tool-help'

Developer support.

* jk/test-tool-help:
test-tool: show tool list on error

Merge branch 'sg/doc-show-branch-typofix'Junio C Hamano Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)

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

Docfix.

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

Merge branch 'sb/submodule-helper-remove-cruft'Junio C Hamano Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)

Merge branch 'sb/submodule-helper-remove-cruft'

Code clean-up.

* sb/submodule-helper-remove-cruft:
builtin/submodule--helper: remove debugging leftover tracing

Merge branch 'js/pack-objects-mutex-init-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)

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

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 'tq/branch-style-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)

Merge branch 'tq/branch-style-fix'

Code clean-up.

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

Merge branch 'tq/branch-create-wo-branch-get'Junio C Hamano Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)

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

Code clean-up.

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

Merge branch 'bc/hash-transition-part-15'Junio C Hamano Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)

Merge branch 'bc/hash-transition-part-15'

More codepaths are moving away from hardcoded hash sizes.

* bc/hash-transition-part-15:
rerere: convert to use the_hash_algo
submodule: make zero-oid comparison hash function agnostic
apply: rename new_sha1_prefix and old_sha1_prefix
apply: replace hard-coded constants
tag: express constant in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
upload-pack: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
packfile: express constants in terms of the_hash_algo
pack-revindex: express constants in terms of the_hash_algo
builtin/fetch-pack: remove constants with parse_oid_hex
builtin/mktree: remove hard-coded constant
builtin/repack: replace hard-coded constants
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
object_id.cocci: match only expressions of type 'struct object_id'

Merge branch 'sb/strbuf-h-update'Junio C Hamano Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)

Merge branch 'sb/strbuf-h-update'

Code clean-up to serve as a BCP example.

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

Merge branch 'jk/run-command-notdot'Junio C Hamano Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)

Merge branch 'jk/run-command-notdot'

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 'tb/filter-alternate-refs'Junio C Hamano Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)

Merge branch 'tb/filter-alternate-refs'

Test fix.

* tb/filter-alternate-refs:
t5410: use longer path for sample script
Documentation/config.txt: fix typo in core.alternateRefsCommand

Merge branch 'rv/send-email-cc-misc-by'Junio C Hamano Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)

Merge branch 'rv/send-email-cc-misc-by'

"git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.

This is a backward-incompatible change that may surprise existing
users.

* rv/send-email-cc-misc-by:
send-email: also pick up cc addresses from -by trailers
send-email: only consider lines containing @ or <> for automatic Cc'ing
Documentation/git-send-email.txt: style fixes

Merge branch 'lm/range-diff-submodule-fix'Junio C Hamano Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)

Merge branch 'lm/range-diff-submodule-fix'

"git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.

* lm/range-diff-submodule-fix:
range-diff: allow to diff files regardless of submodule config

Merge branch 'ch/subtree-build'Junio C Hamano Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)

Merge branch 'ch/subtree-build'

Build update for "git subtree" (in contrib/) documentation pages.

* ch/subtree-build:
Revert "subtree: make install targets depend on build targets"
subtree: make install targets depend on build targets
subtree: add build targets 'man' and 'html'

Merge branch 'md/filter-trees'Junio C Hamano Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)

Merge branch 'md/filter-trees'

The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.

* md/filter-trees:
list-objects: support for skipping tree traversal
filter-trees: code clean-up of tests
list-objects-filter: implement filter tree:0
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: use BUG rather than die
revision: mark non-user-given objects instead
rev-list: handle missing tree objects properly
list-objects: always parse trees gently
list-objects: refactor to process_tree_contents
list-objects: store common func args in struct

test-lib: introduce the '-V' short option for '--verbos... SZEDER Gábor Mon, 29 Oct 2018 12:13:59 +0000 (13:13 +0100)

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

'--verbose-log' is one of the most useful and thus most frequently
used test options, but due to its length it's a pain to type on the
command line.

Let's introduce the corresponding short option '-V' to save some
keystrokes.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.txt: remove config/dummy.txtNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:51 +0000 (08:23 +0200)

config.txt: remove config/dummy.txt

This file was only needed when config directory was empty. Now that
the directory is fully populated, it can be deleted.

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

config.txt: move worktree.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:50 +0000 (08:23 +0200)

config.txt: move worktree.* to a separate file

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

config.txt: move web.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:49 +0000 (08:23 +0200)

config.txt: move web.* to a separate file

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

config.txt: move versionsort.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:48 +0000 (08:23 +0200)

config.txt: move versionsort.* to a separate file

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

config.txt: move user.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:47 +0000 (08:23 +0200)

config.txt: move user.* to a separate file

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

config.txt: move url.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:46 +0000 (08:23 +0200)

config.txt: move url.* to a separate file

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

config.txt: move uploadpack.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:45 +0000 (08:23 +0200)

config.txt: move uploadpack.* to a separate file

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

config.txt: move uploadarchive.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:44 +0000 (08:23 +0200)

config.txt: move uploadarchive.* to a separate file

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

config.txt: move transfer.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:43 +0000 (08:23 +0200)

config.txt: move transfer.* to a separate file

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

config.txt: move tag.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:42 +0000 (08:23 +0200)

config.txt: move tag.* to a separate file

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

config.txt: move submodule.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:41 +0000 (08:23 +0200)

config.txt: move submodule.* to a separate file

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

config.txt: move stash.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:40 +0000 (08:23 +0200)

config.txt: move stash.* to a separate file

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

config.txt: move status.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:39 +0000 (08:23 +0200)

config.txt: move status.* to a separate file

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

config.txt: move splitIndex.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:38 +0000 (08:23 +0200)

config.txt: move splitIndex.* to a separate file

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

config.txt: move showBranch.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:37 +0000 (08:23 +0200)

config.txt: move showBranch.* to a separate file

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

config.txt: move sequencer.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:36 +0000 (08:23 +0200)

config.txt: move sequencer.* to a separate file

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

config.txt: move sendemail-config.txt to config/Nguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:35 +0000 (08:23 +0200)

config.txt: move sendemail-config.txt to config/

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

config.txt: move reset.* to a separate fileNguyễn Thái Ngọc Duy Sat, 27 Oct 2018 06:23:34 +0000 (08:23 +0200)

config.txt: move reset.* to a separate file

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