gitweb.git
Merge branch 'jk/parse-options-concat' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:23 +0000 (11:55 -0700)

Merge branch 'jk/parse-options-concat' into maint

Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* jk/parse-options-concat:
parse_options: allocate a new array when concatenating

Merge branch 'ls/travis-enable-httpd-tests' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:22 +0000 (11:55 -0700)

Merge branch 'ls/travis-enable-httpd-tests' into maint

Allow http daemon tests in Travis CI tests.

* ls/travis-enable-httpd-tests:
travis-ci: enable web server tests t55xx on Linux

Merge branch 'ew/autoconf-pthread' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:20 +0000 (11:55 -0700)

Merge branch 'ew/autoconf-pthread' into maint

Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.

* ew/autoconf-pthread:
configure.ac: stronger test for pthread linkage

Merge branch 'rs/help-c-source-with-gitattributes'... Junio C Hamano Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)

Merge branch 'rs/help-c-source-with-gitattributes' into maint

The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.

* rs/help-c-source-with-gitattributes:
.gitattributes: set file type for C files

Merge branch 'mm/status-suggest-merge-abort' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)

Merge branch 'mm/status-suggest-merge-abort' into maint

"git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* mm/status-suggest-merge-abort:
status: suggest 'git merge --abort' when appropriate

t7406: fix breakage on OSXStefan Beller Wed, 10 Aug 2016 17:56:07 +0000 (10:56 -0700)

t7406: fix breakage on OSX

On OSX `wc` prefixes the output of numbers with whitespace, such
that the `commit_count` would be "SP <NUMBER>". When using that in

git submodule update --init --depth=$commit_count

the depth would be empty and the number is interpreted as the
pathspec. Fix this by not using `wc` and rather instruct rev-list
to count.

Another way to fix this is to remove the `=` sign after the
`--depth` argument as then we are allowed to have more than just one
whitespace between `--depth` and the actual number. Prefer the
solution of rev-list counting as that is expected to be slightly
faster and more self-contained within Git.

Reported-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>,
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

document git-repack interaction of pack.threads and... Michael Stahl Wed, 10 Aug 2016 10:39:35 +0000 (12:39 +0200)

document git-repack interaction of pack.threads and pack.windowMemory

Signed-off-by: Michael Stahl <mstahl@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: git-stash: mark messages for translationVasco Almeida Wed, 10 Aug 2016 10:50:30 +0000 (10:50 +0000)

i18n: git-stash: mark messages for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-backend: buffer headers before sendingEric Wong Tue, 9 Aug 2016 23:47:31 +0000 (23:47 +0000)

http-backend: buffer headers before sending

Avoid waking up the readers for unnecessary context switches for
each line of header data being written, as all the headers are
written in short succession.

It is unlikely any HTTP/1.x server would want to read a CGI
response one-line-at-a-time and trickle each to the client.
Instead, I'd expect HTTP servers want to minimize syscall and
TCP/IP framing overhead by trying to send all of its response
headers in a single syscall or even combining the headers and
first chunk of the body with MSG_MORE or writev.

Verified by strace-ing response parsing on the CGI side.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule--helper: use parallel processor correctlyStefan Beller Tue, 9 Aug 2016 21:29:13 +0000 (14:29 -0700)

submodule--helper: use parallel processor correctly

When developing another patch series I had a temporary state in
which git-clone would segfault, when the call was prepared in
prepare_to_clone_next_submodule. This lead to the call failing,
i.e. in `update_clone_task_finished` the task was scheduled to be
tried again. The second call to prepare_to_clone_next_submodule
would return 0, as the segfaulted clone did create the .git file
already, such that was not considered to need to be cloned again. I
was seeing the "BUG: ce was a submodule before?\n" message, which
was the correct behavior at the time as my local code was
buggy. When trying to debug this failure, I tried to use printing
messages into the strbuf that is passed around, but these messages
were never printed as the die(..) doesn't flush the `err` strbuf.

When implementing the die() in 665b35ecc (2016-06-09, "submodule--helper:
initial clone learns retry logic"), I considered this condition to be
a severe condition, which should lead to an immediate abort as we do not
trust ourselves any more. However the queued messages in `err` are valuable
so let's not toss them out by immediately dying, but a graceful return.

Another thing to note: The error message itself was misleading. A return
value of 0 doesn't indicate the passed in `ce` is not a submodule any more,
but just that we do not consider cloning it any more.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: add completion for --submodule=* diff optionJacob Keller Tue, 9 Aug 2016 18:34:46 +0000 (11:34 -0700)

completion: add completion for --submodule=* diff option

Teach git-completion.bash to complete --submodule= for git commands
which take diff options. Also teach completion for git-log to support
--diff-algorithms as well.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: archive: mark errors for translationVasco Almeida Mon, 8 Aug 2016 11:16:00 +0000 (11:16 +0000)

i18n: archive: mark errors for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: setup: mark error messages for translationVasco Almeida Mon, 8 Aug 2016 11:15:59 +0000 (11:15 +0000)

i18n: setup: mark error messages for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: complete --delete, --move, and --remotes... Ville Skyttä Tue, 9 Aug 2016 09:34:44 +0000 (12:34 +0300)

completion: complete --delete, --move, and --remotes for git branch

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit-slab.h: avoid duplicated global static variablesJohannes Sixt Tue, 9 Aug 2016 14:17:56 +0000 (16:17 +0200)

commit-slab.h: avoid duplicated global static variables

The gigantic define_commit_slab() macro repeats the definition of a
static variable that occurs earlier in the macro text. The purpose of
the repeated definition at the end of the macro is that it takes the
semicolon that occurs where the macro is used.

We cannot just remove the first definition of the variable because it
is referenced elsewhere in the macro text, and defining the macro later
would produce undefined identifier errors. We cannot have a "forward"
declaration, either. (This works only with "extern" global variables.)

The solution is to use a declaration of a struct that is already defined
earlier. This language construct can serve the same purpose as the
duplicated static variable definition, but without the confusion.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.c: avoid duplicated global static variablesJohannes Sixt Tue, 9 Aug 2016 14:16:33 +0000 (16:16 +0200)

config.c: avoid duplicated global static variables

Repeating the definition of a static variable seems to be valid in C.
Nevertheless, it is bad style because it can cause confusion, definitely
when it becomes necessary to change the type.

d64ec16 (git config: reorganize to use parseopt, 2009-02-21) added two
static variables near the top of the file config.c without removing the
definitions of the two variables that occurs later in the file.

The two variables were needed earlier in the file in the newly
introduced parseopt structure. These references were removed later in
d0e08d6 (config: fix parsing of "git config --get-color some.key -1",
2014-11-20).

Remove the redundant, younger, definitions near the top of the file and
keep the original definitions that occur later.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

.mailmap: use Christian Couder's Tuxfamily addressChristian Couder Mon, 8 Aug 2016 21:17:22 +0000 (23:17 +0200)

.mailmap: use Christian Couder's Tuxfamily address

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Mon, 8 Aug 2016 21:52:17 +0000 (14:52 -0700)

Sync with maint

* maint:
Hopefully final batch for 2.9.3

Eleventh batch for 2.10Junio C Hamano Mon, 8 Aug 2016 21:52:08 +0000 (14:52 -0700)

Eleventh batch for 2.10

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

Merge branch 'jc/hashmap-doc-init'Junio C Hamano Mon, 8 Aug 2016 21:48:45 +0000 (14:48 -0700)

Merge branch 'jc/hashmap-doc-init'

The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.

* jc/hashmap-doc-init:
hashmap: clarify that hashmap_entry can safely be discarded

Merge branch 'ew/build-time-pager-tweaks'Junio C Hamano Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)

Merge branch 'ew/build-time-pager-tweaks'

The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.

* ew/build-time-pager-tweaks:
pager: move pager-specific setup into the build

Merge branch 'sb/submodule-recommend-shallowness'Junio C Hamano Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)

Merge branch 'sb/submodule-recommend-shallowness'

Doc update.

* sb/submodule-recommend-shallowness:
gitmodules: document shallow recommendation

Merge branch 'jk/parseopt-string-list'Junio C Hamano Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)

Merge branch 'jk/parseopt-string-list'

A small memory leak in the command line parsing of "git blame"
has been plugged.

* jk/parseopt-string-list:
blame: drop strdup of string literal

Merge branch 'jh/clean-smudge-f-doc'Junio C Hamano Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)

Merge branch 'jh/clean-smudge-f-doc'

A minor documentation update.

* jh/clean-smudge-f-doc:
clarify %f documentation

Merge branch 'js/nedmalloc-gcc6-warnings'Junio C Hamano Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)

Merge branch 'js/nedmalloc-gcc6-warnings'

Squelch compiler warnings for netmalloc (in compat/) library.

* js/nedmalloc-gcc6-warnings:
nedmalloc: work around overzealous GCC 6 warning
nedmalloc: fix misleading indentation

Merge branch 'nd/fbsd-lazy-mtime'Junio C Hamano Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)

Merge branch 'nd/fbsd-lazy-mtime'

FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* nd/fbsd-lazy-mtime:
t7063: work around FreeBSD's lazy mtime update feature

Merge branch 'nd/log-decorate-color-head-arrow'Junio C Hamano Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)

Merge branch 'nd/log-decorate-color-head-arrow'

An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
paint the arrow in the same color as "HEAD", not in the color for
commits.

* nd/log-decorate-color-head-arrow:
log: decorate HEAD -> branch with the same color for arrow and HEAD

Merge branch 'rs/use-strbuf-addstr'Junio C Hamano Mon, 8 Aug 2016 21:48:41 +0000 (14:48 -0700)

Merge branch 'rs/use-strbuf-addstr'

* rs/use-strbuf-addstr:
use strbuf_addstr() instead of strbuf_addf() with "%s"
use strbuf_addstr() for adding constant strings to a strbuf

Merge branch 'rs/st-mult'Junio C Hamano Mon, 8 Aug 2016 21:48:41 +0000 (14:48 -0700)

Merge branch 'rs/st-mult'

Micro optimization of st_mult() facility used to check the integer
overflow coming from multiplication to compute size of memory
allocation.

* rs/st-mult:
pass constants as first argument to st_mult()

Merge branch 'ib/t3700-add-chmod-x-updates'Junio C Hamano Mon, 8 Aug 2016 21:48:40 +0000 (14:48 -0700)

Merge branch 'ib/t3700-add-chmod-x-updates'

The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.

* ib/t3700-add-chmod-x-updates:
t3700: add a test_mode_in_index helper function
t3700: merge two tests into one
t3700: remove unwanted leftover files before running new tests

Merge branch 'ab/gitweb-link-html-escape'Junio C Hamano Mon, 8 Aug 2016 21:48:40 +0000 (14:48 -0700)

Merge branch 'ab/gitweb-link-html-escape'

The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* ab/gitweb-link-html-escape:
gitweb: escape link body in format_ref_marker

Merge branch 'jk/pack-objects-optim'Junio C Hamano Mon, 8 Aug 2016 21:48:39 +0000 (14:48 -0700)

Merge branch 'jk/pack-objects-optim'

"git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs. The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.

* jk/pack-objects-optim:
pack-objects: compute local/ignore_pack_keep early
pack-objects: break out of want_object loop early
find_pack_entry: replace last_found_pack with MRU cache
add generic most-recently-used list
sha1_file: drop free_pack_by_name
t/perf: add tests for many-pack scenarios

Merge branch 'jk/difftool-in-subdir'Junio C Hamano Mon, 8 Aug 2016 21:48:39 +0000 (14:48 -0700)

Merge branch 'jk/difftool-in-subdir'

"git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.

* jk/difftool-in-subdir:
difftool: use Git::* functions instead of passing around state
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: fix argument handling in subdirs

Merge branch 'va/i18n'Junio C Hamano Mon, 8 Aug 2016 21:48:38 +0000 (14:48 -0700)

Merge branch 'va/i18n'

More i18n marking.

* va/i18n:
i18n: config: unfold error messages marked for translation
i18n: notes: mark comment for translation

Merge branch 'js/rebase-i-progress-tidy'Junio C Hamano Mon, 8 Aug 2016 21:48:38 +0000 (14:48 -0700)

Merge branch 'js/rebase-i-progress-tidy'

Regression fix for an i18n topic already in 'master'.

* js/rebase-i-progress-tidy:
rebase-interactive: trim leading whitespace from progress count

Merge branch 'jk/reflog-date'Junio C Hamano Mon, 8 Aug 2016 21:48:37 +0000 (14:48 -0700)

Merge branch 'jk/reflog-date'

The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.

* jk/reflog-date:
date: clarify --date=raw description
date: add "unix" format
date: document and test "raw-local" mode
doc/pretty-formats: explain shortening of %gd
doc/pretty-formats: describe index/time formats for %gd
doc/rev-list-options: explain "-g" output formats
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option

Merge branch 'cp/completion-clone-recurse-submodules'Junio C Hamano Mon, 8 Aug 2016 21:48:37 +0000 (14:48 -0700)

Merge branch 'cp/completion-clone-recurse-submodules'

* cp/completion-clone-recurse-submodules:
completion: add option '--recurse-submodules' to 'git clone'

Merge branch 'jk/t4205-cleanup'Junio C Hamano Mon, 8 Aug 2016 21:48:36 +0000 (14:48 -0700)

Merge branch 'jk/t4205-cleanup'

Test modernization.

* jk/t4205-cleanup:
t4205: indent here documents
t4205: drop top-level &&-chaining

Merge branch 'da/subtree-modernize'Junio C Hamano Mon, 8 Aug 2016 21:48:35 +0000 (14:48 -0700)

Merge branch 'da/subtree-modernize'

Style fixes for "git subtree" (in contrib/).

* da/subtree-modernize:
subtree: adjust function definitions to match CodingGuidelines
subtree: adjust style to match CodingGuidelines

Merge branch 'nd/fetch-ref-summary'Junio C Hamano Mon, 8 Aug 2016 21:48:34 +0000 (14:48 -0700)

Merge branch 'nd/fetch-ref-summary'

Hotfix of a test in a topic that has already been merged to 'master'.

* nd/fetch-ref-summary:
t5510: skip tests under GETTEXT_POISON build

Merge branch 'ew/git-svn-http-tests'Junio C Hamano Mon, 8 Aug 2016 21:48:34 +0000 (14:48 -0700)

Merge branch 'ew/git-svn-http-tests'

Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.

* ew/git-svn-http-tests:
git svn: migrate tests to use lib-httpd
t/t91*: do not say how to avoid the tests

Merge branch 'js/t4130-rename-without-ino'Junio C Hamano Mon, 8 Aug 2016 21:48:33 +0000 (14:48 -0700)

Merge branch 'js/t4130-rename-without-ino'

Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.

* js/t4130-rename-without-ino:
t4130: work around Windows limitation

Hopefully final batch for 2.9.3Junio C Hamano Mon, 8 Aug 2016 21:22:36 +0000 (14:22 -0700)

Hopefully final batch for 2.9.3

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

Merge branch 'sb/pack-protocol-doc-nak' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:47 +0000 (14:21 -0700)

Merge branch 'sb/pack-protocol-doc-nak' into maint

A doc update.

* sb/pack-protocol-doc-nak:
Documentation: pack-protocol correct NAK response

Merge branch 'rs/submodule-config-code-cleanup' into... Junio C Hamano Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)

Merge branch 'rs/submodule-config-code-cleanup' into maint

Code cleanup.

* rs/submodule-config-code-cleanup:
submodule-config: fix test binary crashing when no arguments given
submodule-config: combine early return code into one goto
submodule-config: passing name reference for .gitmodule blobs
submodule-config: use explicit empty string instead of strbuf in config_from()

Merge branch 'sb/submodule-deinit-all' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:46 +0000 (14:21 -0700)

Merge branch 'sb/submodule-deinit-all' into maint

A comment update for a topic that was merged to Git v2.8.

* sb/submodule-deinit-all:
submodule deinit: remove outdated comment

Merge branch 'rs/worktree-use-strbuf-absolute-path... Junio C Hamano Mon, 8 Aug 2016 21:21:45 +0000 (14:21 -0700)

Merge branch 'rs/worktree-use-strbuf-absolute-path' into maint

Code simplification.

* rs/worktree-use-strbuf-absolute-path:
worktree: use strbuf_add_absolute_path() directly

Merge branch 'jc/doc-diff-filter-exclude' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:44 +0000 (14:21 -0700)

Merge branch 'jc/doc-diff-filter-exclude' into maint

Belated doc update for a feature added in v1.8.5.

* jc/doc-diff-filter-exclude:
diff: document diff-filter exclusion

Merge branch 'nd/test-helpers' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:43 +0000 (14:21 -0700)

Merge branch 'nd/test-helpers' into maint

Build clean-up.

* nd/test-helpers:
t/test-lib.sh: fix running tests with --valgrind
Makefile: use VCSSVN_LIB to refer to svn library
Makefile: drop extra dependencies for test helpers

Merge branch 'rs/use-strbuf-addbuf' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:42 +0000 (14:21 -0700)

Merge branch 'rs/use-strbuf-addbuf' into maint

Code cleanup.

* rs/use-strbuf-addbuf:
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addbuf() for appending a strbuf to another

Merge branch 'lf/recv-sideband-cleanup' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:41 +0000 (14:21 -0700)

Merge branch 'lf/recv-sideband-cleanup' into maint

Code simplification.

* lf/recv-sideband-cleanup:
sideband.c: small optimization of strbuf usage
sideband.c: refactor recv_sideband()

Merge branch 'ah/unpack-trees-advice-messages' into... Junio C Hamano Mon, 8 Aug 2016 21:21:40 +0000 (14:21 -0700)

Merge branch 'ah/unpack-trees-advice-messages' into maint

Grammofix.

* ah/unpack-trees-advice-messages:
unpack-trees: fix English grammar in do-this-before-that messages

Merge branch 'lf/sideband-returns-void' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:39 +0000 (14:21 -0700)

Merge branch 'lf/sideband-returns-void' into maint

A small internal API cleanup.

* lf/sideband-returns-void:
upload-pack.c: make send_client_data() return void
sideband.c: make send_sideband() return void

Merge branch 'jk/send-pack-stdio' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:39 +0000 (14:21 -0700)

Merge branch 'jk/send-pack-stdio' into maint

Code clean-up.

* jk/send-pack-stdio:
write_or_die: remove the unused write_or_whine() function
send-pack: use buffered I/O to talk to pack-objects

Merge branch 'pb/commit-editmsg-path' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:38 +0000 (14:21 -0700)

Merge branch 'pb/commit-editmsg-path' into maint

Code clean-up.

* pb/commit-editmsg-path:
builtin/commit.c: memoize git-path for COMMIT_EDITMSG

Merge branch 'ew/find-perl-on-freebsd-in-local' into... Junio C Hamano Mon, 8 Aug 2016 21:21:37 +0000 (14:21 -0700)

Merge branch 'ew/find-perl-on-freebsd-in-local' into maint

Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.

* ew/find-perl-on-freebsd-in-local:
config.mak.uname: correct perl path on FreeBSD

Merge branch 'ew/daemon-socket-keepalive' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:37 +0000 (14:21 -0700)

Merge branch 'ew/daemon-socket-keepalive' into maint

Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().

* ew/daemon-socket-keepalive:
Windows: add missing definition of ENOTSOCK
daemon: ignore ENOTSOCK from setsockopt

Merge branch 'nd/pack-ofs-4gb-limit' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:36 +0000 (14:21 -0700)

Merge branch 'nd/pack-ofs-4gb-limit' into maint

"git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.

* nd/pack-ofs-4gb-limit:
fsck: use streaming interface for large blobs in pack
pack-objects: do not truncate result in-pack object size on 32-bit systems
index-pack: correct "offset" type in unpack_entry_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "len" type in unpack_data()
sha1_file.c: use type off_t* for object_info->disk_sizep
pack-objects: pass length to check_pack_crc() without truncation

Merge branch 'rs/notes-merge-no-toctou' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:35 +0000 (14:21 -0700)

Merge branch 'rs/notes-merge-no-toctou' into maint

"git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.

* rs/notes-merge-no-toctou:
notes-merge: use O_EXCL to avoid overwriting existing files

Merge branch 'js/ignore-space-at-eol' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:35 +0000 (14:21 -0700)

Merge branch 'js/ignore-space-at-eol' into maint

An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.

* js/ignore-space-at-eol:
diff: fix a double off-by-one with --ignore-space-at-eol
diff: demonstrate a bug with --patience and --ignore-space-at-eol

Merge branch 'jk/push-scrub-url' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:34 +0000 (14:21 -0700)

Merge branch 'jk/push-scrub-url' into maint

"git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.

* jk/push-scrub-url:
t5541: fix url scrubbing test when GPG is not set
push: anonymize URL in status output

Merge branch 'nd/cache-tree-ita' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:32 +0000 (14:21 -0700)

Merge branch 'nd/cache-tree-ita' into maint

"git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".

* nd/cache-tree-ita:
cache-tree: do not generate empty trees as a result of all i-t-a subentries
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
test-lib.sh: introduce and use $EMPTY_BLOB
test-lib.sh: introduce and use $EMPTY_TREE

Merge branch 'mh/blame-worktree' into maintJunio C Hamano Mon, 8 Aug 2016 21:21:32 +0000 (14:21 -0700)

Merge branch 'mh/blame-worktree' into maint

"git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.

* mh/blame-worktree:
t/t8003-blame-corner-cases.sh: Use here documents
blame: allow to blame paths freshly added to the index

git mv: do not keep slash in `git mv dir non-existing... Johannes Schindelin Fri, 5 Aug 2016 14:41:12 +0000 (16:41 +0200)

git mv: do not keep slash in `git mv dir non-existing-dir/`

When calling `rename("dir", "non-existing-dir/")` on Linux, it silently
succeeds, stripping the trailing slash of the second argument.

This is all good and dandy but this behavior disagrees with the specs at

http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html

that state clearly regarding the 2nd parameter (called `new`):

If the `new` argument does not resolve to an existing directory
entry for a file of type directory and the `new` argument
contains at least one non- <slash> character and ends with one
or more trailing <slash> characters after all symbolic links
have been processed, `rename()` shall fail.

Of course, we would like `git mv dir non-existing-dir/` to succeed (and
rename the directory "dir" to "non-existing-dir"). Let's be extra
careful to remove the trailing slash in that case.

This lets t7001-mv.sh pass in Bash on Windows.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use strbuf_add_unique_abbrev() for adding short hashesRené Scharfe Sat, 6 Aug 2016 15:41:01 +0000 (17:41 +0200)

use strbuf_add_unique_abbrev() for adding short hashes

Call strbuf_add_unique_abbrev() to add abbreviated hashes to strbufs
instead of taking detours through find_unique_abbrev() and its static
buffer. This is shorter and a bit more efficient.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive-tar: make write_extended_header() voidRené Scharfe Sat, 6 Aug 2016 14:35:38 +0000 (16:35 +0200)

archive-tar: make write_extended_header() void

The function write_extended_header() only ever returns 0. Simplify
it and its caller by dropping its return value, like we did with
write_global_extended_header() earlier.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

nedmalloc: work around overzealous GCC 6 warningRené Scharfe Thu, 4 Aug 2016 21:56:54 +0000 (23:56 +0200)

nedmalloc: work around overzealous GCC 6 warning

With GCC 6, the strdup() function is declared with the "nonnull"
attribute, stating that it is not allowed to pass a NULL value as
parameter.

In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded
and NULL parameters are handled gracefully. GCC 6 complains about that
now because it thinks that NULL cannot be passed to strdup() anyway.

Because the callers in this project of strdup() must be prepared to
call any implementation of strdup() supplied by the platform, so it
is pointless to pretend that it is OK to call it with NULL.

Remove the conditional based on NULL-ness of the input; this
squelches the warning. Check the return value of malloc() instead
to make sure we actually got the memory to write to.

See https://gcc.gnu.org/gcc-6/porting_to.html for details.

Diagnosed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge: use string_list_split() in add_strategies()René Scharfe Fri, 5 Aug 2016 21:01:35 +0000 (23:01 +0200)

merge: use string_list_split() in add_strategies()

Call string_list_split() for cutting a space separated list into pieces
instead of reimplementing it based on struct strategy. The attr member
of struct strategy was not used split_merge_strategies(); it was a pure
string operation. Also be nice and clean up once we're done splitting;
the old code didn't bother freeing any of the allocated memory.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: use STRING_LIST_INIT_NODUPRené Scharfe Fri, 5 Aug 2016 20:42:12 +0000 (22:42 +0200)

merge-recursive: use STRING_LIST_INIT_NODUP

Initialize a string_list right when it's defined. That's shorter, saves
a function call and makes it more obvious that we're using the NODUP
variant here.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use CHILD_PROCESS_INIT to initialize automatic variablesRené Scharfe Fri, 5 Aug 2016 20:38:44 +0000 (22:38 +0200)

use CHILD_PROCESS_INIT to initialize automatic variables

Initialize struct child_process variables already when they're defined.
That's shorter and saves a function call.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use strbuf_addstr() instead of strbuf_addf() with "%s"René Scharfe Fri, 5 Aug 2016 20:37:11 +0000 (22:37 +0200)

use strbuf_addstr() instead of strbuf_addf() with "%s"

Call strbuf_addstr() for adding a simple string to a strbuf instead of
using the heavier strbuf_addf(). This is shorter and documents the
intent more clearly.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace: do not fall back to stderrJeff King Fri, 5 Aug 2016 07:58:38 +0000 (03:58 -0400)

trace: do not fall back to stderr

If the trace code cannot open a specified file, or does not
understand the contents of the GIT_TRACE variable, it falls
back to printing trace output to stderr.

This is an attempt to be helpful, but in practice it just
ends up annoying. The user was trying to get the output to
go somewhere else, so spewing it to stderr does not really
accomplish that. And as it's intended for debugging, they
can presumably re-run the command with their error
corrected.

So instead of falling back, this patch disables bogus trace
keys for the rest of the program, just as we do for write
errors. We can drop the "Defaulting to..." part of the error
message entirely; after seeing "cannot open '/foo'", the
user can assume that tracing is skipped.

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

write_or_die: drop write_or_whine_pipe()Jeff King Wed, 3 Aug 2016 23:01:42 +0000 (19:01 -0400)

write_or_die: drop write_or_whine_pipe()

This function has no callers, and is not likely to gain any
because it's confusing to use.

It unconditionally complains to stderr, but _doesn't_ die.
Yet any caller which wants a "gentle" write would generally
want to suppress the error message, because presumably
they're going to write a better one, and/or try the
operation again.

And the check_pipe() call leads to confusing behaviors. It
means we die for EPIPE, but not for other errors, which is
confusing and pointless.

On top of all that, it has unusual error return semantics,
which makes it easy for callers to get it wrong.

Let's drop the function, and if somebody ever needs to
resurrect something like it, they can fix these warts.

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

trace: disable key after write errorJeff King Wed, 3 Aug 2016 23:01:04 +0000 (19:01 -0400)

trace: disable key after write error

If we get a write error writing to a trace descriptor, the
error isn't likely to go away if we keep writing. Instead,
you'll just get the same error over and over. E.g., try:

GIT_TRACE_PACKET=42 git ls-remote >/dev/null

You don't really need to see:

warning: unable to write trace for GIT_TRACE_PACKET: Bad file descriptor

hundreds of times. We could fallback to tracing to stderr,
as we do in the error code-path for open(), but there's not
much point. If the user fed us a bogus descriptor, they're
probably better off fixing their invocation. And if they
didn't, and we saw a transient error (e.g., ENOSPC writing
to a file), it probably doesn't help anybody to have half of
the trace in a file, and half on stderr.

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

trace: correct variable name in write() error messageJeff King Wed, 3 Aug 2016 23:00:32 +0000 (19:00 -0400)

trace: correct variable name in write() error message

Our error message for write() always mentions GIT_TRACE,
even though we may be writing for a different variable
entirely. It's also not quite accurate to say "fd given by
GIT_TRACE environment variable", as we may hit this error
based on a filename the user put in the variable (we do
complain and switch to stderr if the file cannot be opened,
but it's still possible to hit a write() error on the
descriptor later).

So let's fix those things, and switch to our more usual
"unable to do X: Y" format for the error.

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

trace: cosmetic fixes for error messagesJeff King Wed, 3 Aug 2016 23:00:23 +0000 (19:00 -0400)

trace: cosmetic fixes for error messages

The error messages for the trace code are often multi-line;
the first line gets a nice "warning:", but the rest are
left-aligned. Let's give them an indentation to make sure
they stand out as a unit.

While we're here, let's also downcase the first letter of
each error (our usual style), and break up a long line of
advice (since we're already using multiple lines, one more
doesn't hurt).

We also replace "What does 'foo' for GIT_TRACE mean?". While
cute, it's probably a good idea to give more context, and
follow our usual styles. So it's now "unknown trace value
for 'GIT_TRACE': foo".

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

trace: use warning() for printing trace errorsJeff King Fri, 5 Aug 2016 07:56:00 +0000 (03:56 -0400)

trace: use warning() for printing trace errors

Right now we just fprintf() straight to stderr, which can
make the output hard to distinguish. It would be helpful to
give it one of our usual prefixes like "error:", "warning:",
etc.

It doesn't make sense to use error() here, as the trace code
is "optional" debugging code. If something goes wrong, we
should warn the user, but saying "error" implies the actual
git operation had a problem. So warning() is the only sane
choice.

Note that this does end up calling warn_routine() to do the
formatting. This is probably a good thing, since they are
clearly trying to hook messages before they make it to
stderr. However, it also means that in theory somebody who
tries to trace from their warn_routine() could cause a loop.
This seems rather unlikely in practice (we've never even
overridden the default warn_builtin routine before, and
recent discussions to do so would just install a noop
routine).

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

Tenth batch for 2.10Junio C Hamano Thu, 4 Aug 2016 21:40:34 +0000 (14:40 -0700)

Tenth batch for 2.10

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

Merge branch 'jc/grep-commandline-vs-configuration'Junio C Hamano Thu, 4 Aug 2016 21:39:18 +0000 (14:39 -0700)

Merge branch 'jc/grep-commandline-vs-configuration'

"git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.

* jc/grep-commandline-vs-configuration:
grep: further simplify setting the pattern type

Merge branch 'sb/submodule-clone-retry'Junio C Hamano Thu, 4 Aug 2016 21:39:17 +0000 (14:39 -0700)

Merge branch 'sb/submodule-clone-retry'

An earlier tweak to make "submodule update" retry a failing clone
of submodules was buggy and caused segfault, which has been fixed.

* sb/submodule-clone-retry:
submodule-helper: fix indexing in clone retry error reporting path
git-submodule: forward exit code of git-submodule--helper more faithfully

Merge branch 'sb/pack-protocol-doc-nak'Junio C Hamano Thu, 4 Aug 2016 21:39:16 +0000 (14:39 -0700)

Merge branch 'sb/pack-protocol-doc-nak'

A doc update.

* sb/pack-protocol-doc-nak:
Documentation: pack-protocol correct NAK response

pager: move pager-specific setup into the buildEric Wong Thu, 4 Aug 2016 11:40:25 +0000 (11:40 +0000)

pager: move pager-specific setup into the build

Allowing PAGER_ENV to be set at build-time allows us to move
pager-specific knowledge out of our build. This allows us to
set a better default for FreeBSD more(1), which pretends not to
understand ANSI color escapes if the MORE environment variable
is left empty, but accepts the same variables as less(1)

Originally-from:
https://public-inbox.org/git/xmqq61piw4yf.fsf@gitster.dls.corp.google.com/

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace: stop using write_or_whine_pipe()Jeff King Wed, 3 Aug 2016 22:58:00 +0000 (18:58 -0400)

trace: stop using write_or_whine_pipe()

The write_or_whine_pipe function does two things:

1. it checks for EPIPE and converts it into a signal death

2. it prints a message to stderr on error

The first thing does not help us, and actively hurts.
Generally we would simply die from SIGPIPE in this case,
unless somebody has taken the time to ignore SIGPIPE for the
whole process. And if they _did_ do that, it seems rather
silly for the trace code, which otherwise takes pains to
continue even in the face of errors (e.g., by not using
write_or_die!), to take down the whole process for one
specific type of error.

Nor does the second thing help us; it just makes it harder
to write our error message, because we have to feed bits of
it as an argument to write_or_whine_pipe(). Translators
never get to see the full message, and it's hard for us to
customize it.

Let's switch to just using write_in_full() and writing our
own error string. For now, the error is identical to what
write_or_whine_pipe() would say, but now that it's more
under our control, we can improve it in future patches.

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

trace: handle NULL argument in trace_disable()Jeff King Wed, 3 Aug 2016 22:56:57 +0000 (18:56 -0400)

trace: handle NULL argument in trace_disable()

All of the trace functions treat a NULL key as a synonym for
the default GIT_TRACE key. Except for trace_disable(), which
will segfault.

Fortunately, this can't cause any bugs, as the function has
no callers. But rather than drop it, let's fix the bug, as I
plan to add a caller.

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

nedmalloc: fix misleading indentationJohannes Schindelin Thu, 4 Aug 2016 16:07:03 +0000 (18:07 +0200)

nedmalloc: fix misleading indentation

Some code in nedmalloc is indented in a funny way that could be
misinterpreted as if a line after a for loop was included in the loop
body, when it is not.

GCC 6 complains about this in DEVELOPER=YepSure mode.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5533: make it pass on case-sensitive filesystemsJohannes Schindelin Thu, 4 Aug 2016 14:54:35 +0000 (16:54 +0200)

t5533: make it pass on case-sensitive filesystems

The newly-added test case wants to commit a file "c.t" (note the lower
case) when a previous test case already committed a file "C.t". This
confuses Git to the point that it thinks "c.t" was not staged when "git
add c.t" was called.

Simply make the naming of the test commits consistent with the previous
test cases: use upper-case, and advance in the alphabet.

This came up in local work to rebase the Windows-specific patches to the
current `next` branch. An identical fix was suggested by John Keeping.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7063: work around FreeBSD's lazy mtime update featureNguyễn Thái Ngọc Duy Wed, 3 Aug 2016 17:45:22 +0000 (19:45 +0200)

t7063: work around FreeBSD's lazy mtime update feature

Let's start with the commit message of [1] from freebsd.git [2]

Sync timestamp changes for inodes of special files to disk as late
as possible (when the inode is reclaimed). Temporarily only do
this if option UFS_LAZYMOD configured and softupdates aren't
enabled. UFS_LAZYMOD is intentionally left out of
/sys/conf/options.

This is mainly to avoid almost useless disk i/o on battery powered
machines. It's silly to write to disk (on the next sync or when
the inode becomes inactive) just because someone hit a key or
something wrote to the screen or /dev/null.

PR: 5577 [3]

The short version of that, in the context of t7063, is that when a
directory is updated, its mtime may be updated later, not
immediately. This can be shown with a simple command sequence

date; sleep 1; touch abc; rm abc; sleep 10; ls -lTd .

One would expect that the date shown in `ls` would be one second from
`date`, but it's 10 seconds later. If we put another `ls -lTd .` in
front of `sleep 10`, then the date of the last `ls` comes as
expected. The first `ls` somehow forces mtime to be updated.

t7063 is really sensitive to directory mtime. When mtime is too "new",
git code suspects racy timestamps and will not trigger the shortcut in
untracked cache, in t7063.24 and eventually be detected in t7063.27

We have two options thanks to this special FreeBSD feature:

1) Stop supporting untracked cache on FreeBSD. Skip t7063 entirely
when running on FreeBSD

2) Work around this problem (using the same 'ls' trick) and continue
to support untracked cache on FreeBSD

I initially wanted to go with 1) because I didn't know the exact
nature of this feature and feared that it would make untracked cache
work unreliably, using the cached version when it should not.

Since the behavior of this thing is clearer now. The picture is not
that bad. If this indeed happens often, untracked cache would assume
racy condition more often and _fall back_ to non-untracked cache code
paths. Which means it may be less effective, but it will not show
wrong things.

This patch goes with option 2.

PS. For those who want to look further in FreeBSD source code, this
flag is now called IN_LAZYMOD. I can see it's effective in ext2 and
ufs. zfs is not affected.

[1] 660e6408e6df99a20dacb070c5e7f9739efdf96d
[2] git://github.com/freebsd/freebsd.git
[3] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=5577

Reported-by: Eric Wong <e@80x24.org>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule update: allow '.' for branch valueStefan Beller Wed, 3 Aug 2016 20:44:04 +0000 (13:44 -0700)

submodule update: allow '.' for branch value

Gerrit has a "superproject subscription" feature[1], that triggers a
commit in a superproject that is subscribed to its submodules.
Conceptually this Gerrit feature can be done on the client side with
Git via (except for raciness, error handling etc):

while [ true ]; do
git -C <superproject> submodule update --remote --force
git -C <superproject> commit -a -m "Update submodules"
git -C <superproject> push
done

for each branch in the superproject. To ease the configuration in Gerrit
a special value of "." has been introduced for the submodule.<name>.branch
to mean the same branch as the superproject[2], such that you can create a
new branch on both superproject and the submodule and this feature
continues to work on that new branch.

Now we find projects in the wild with such a .gitmodules file.
The .gitmodules used in these Gerrit projects do not conform
to Gits understanding of how .gitmodules should look like.
This teaches Git to deal gracefully with this syntax as well.

The redefinition of "." does no harm to existing projects unaware of
this change, as "." is an invalid branch name in Git, so we do not
expect such projects to exist.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule--helper: add remote-branch helperStefan Beller Wed, 3 Aug 2016 20:44:03 +0000 (13:44 -0700)

submodule--helper: add remote-branch helper

In a later patch we want to enhance the logic for the branch selection.
Rewrite the current logic to be in C, so we can directly use C when
we enhance the logic.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ninth batch of topics for 2.10Junio C Hamano Wed, 3 Aug 2016 22:13:16 +0000 (15:13 -0700)

Ninth batch of topics for 2.10

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

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning'Junio C Hamano Wed, 3 Aug 2016 22:10:29 +0000 (15:10 -0700)

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning'

There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.

* jk/diff-do-not-reuse-wtf-needs-cleaning:
diff: do not reuse worktree files that need "clean" conversion

Merge branch 'rs/submodule-config-code-cleanup'Junio C Hamano Wed, 3 Aug 2016 22:10:28 +0000 (15:10 -0700)

Merge branch 'rs/submodule-config-code-cleanup'

Code cleanup.

* rs/submodule-config-code-cleanup:
submodule-config: fix test binary crashing when no arguments given
submodule-config: combine early return code into one goto
submodule-config: passing name reference for .gitmodule blobs
submodule-config: use explicit empty string instead of strbuf in config_from()

Merge branch 'jk/push-progress'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jk/push-progress'

"git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.

* jk/push-progress:
receive-pack: send keepalives during quiet periods
receive-pack: turn on connectivity progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on index-pack resolving progress
index-pack: add flag for showing delta-resolution progress
clone: use a real progress meter for connectivity check
check_connected: add progress flag
check_connected: relay errors to alternate descriptor
check_everything_connected: use a struct with named options
check_everything_connected: convert to argv_array
rev-list: add optional progress reporting
check_everything_connected: always pass --quiet to rev-list

Merge branch 'jt/fetch-large-handshake-window-on-http'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jt/fetch-large-handshake-window-on-http'

"git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.

* jt/fetch-large-handshake-window-on-http:
fetch-pack: grow stateless RPC windows exponentially

Merge branch 'jk/git-jump'Junio C Hamano Wed, 3 Aug 2016 22:10:27 +0000 (15:10 -0700)

Merge branch 'jk/git-jump'

"git jump" script (in contrib/) has been updated a bit.

* jk/git-jump:
contrib/git-jump: fix typo in README
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix greedy regex when matching hunks

Merge branch 'mm/status-suggest-merge-abort'Junio C Hamano Wed, 3 Aug 2016 22:10:26 +0000 (15:10 -0700)

Merge branch 'mm/status-suggest-merge-abort'

"git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* mm/status-suggest-merge-abort:
status: suggest 'git merge --abort' when appropriate

Merge branch 'jk/parse-options-concat'Junio C Hamano Wed, 3 Aug 2016 22:10:25 +0000 (15:10 -0700)

Merge branch 'jk/parse-options-concat'

Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* jk/parse-options-concat:
parse_options: allocate a new array when concatenating

Merge branch 'sb/push-options'Junio C Hamano Wed, 3 Aug 2016 22:10:24 +0000 (15:10 -0700)

Merge branch 'sb/push-options'

"git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.

* sb/push-options:
add a test for push options
push: accept push options
receive-pack: implement advertising and receiving push options
push options: {pre,post}-receive hook learns about push options

Merge branch 'ew/http-walker'Junio C Hamano Wed, 3 Aug 2016 22:10:24 +0000 (15:10 -0700)

Merge branch 'ew/http-walker'

Dumb http transport on the client side has been optimized.

* ew/http-walker:
list: avoid incompatibility with *BSD sys/queue.h
http-walker: reduce O(n) ops with doubly-linked list
http: avoid disconnecting on 404s for loose objects
http-walker: remove unused parameter from fetch_object

Merge branch 'pm/build-persistent-https-with-recent-go'Junio C Hamano Wed, 3 Aug 2016 22:10:23 +0000 (15:10 -0700)

Merge branch 'pm/build-persistent-https-with-recent-go'

The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.

* pm/build-persistent-https-with-recent-go:
contrib/persistent-https: use Git version for build label
contrib/persistent-https: update ldflags syntax for Go 1.7+