gitweb.git
Merge branch 'ex/deprecate-empty-pathspec-as-match... Junio C Hamano Mon, 14 Aug 2017 22:22:53 +0000 (15:22 -0700)

Merge branch 'ex/deprecate-empty-pathspec-as-match-all' into next

The final step to make an empty string as a pathspec element
illegal. We started this by first deprecating and warning a
pathspec that has such an element in 2.11 (Nov 2016).

Hopefully we can merge this down to the 'master' by the end of the
year? A deprecation warning period that is about 1 year does not
sound too bad.

* ex/deprecate-empty-pathspec-as-match-all:
pathspec: die on empty strings as pathspec
t0027: do not use an empty string as a pathspec element

Merge branch 'bw/clone-recursive-quiet' into nextJunio C Hamano Mon, 14 Aug 2017 22:22:52 +0000 (15:22 -0700)

Merge branch 'bw/clone-recursive-quiet' into next

"git clone --recurse-submodules --quiet" did not pass the quiet
option down to submodules.

* bw/clone-recursive-quiet:
clone: teach recursive clones to respect -q

Merge branch 'pw/sequence-rerere-autoupdate' into nextJunio C Hamano Mon, 14 Aug 2017 22:22:52 +0000 (15:22 -0700)

Merge branch 'pw/sequence-rerere-autoupdate' into next

Commands like "git rebase" accepted the --rerere-autoupdate option
from the command line, but did not always use it. This has been
fixed.

* pw/sequence-rerere-autoupdate:
cherry-pick/revert: reject --rerere-autoupdate when continuing
cherry-pick/revert: remember --rerere-autoupdate
t3504: use test_commit
rebase -i: honor --rerere-autoupdate
rebase: honor --rerere-autoupdate
am: remember --rerere-autoupdate setting

Merge branch 'bw/push-options-recursively-to-submodules... Junio C Hamano Mon, 14 Aug 2017 22:22:52 +0000 (15:22 -0700)

Merge branch 'bw/push-options-recursively-to-submodules' into next

"git push --recurse-submodules $there HEAD:$target" was not
propagated down to the submodules, but now it is.

* bw/push-options-recursively-to-submodules:
submodule--helper: teach push-check to handle HEAD

Merge branch 'bw/grep-recurse-submodules' into nextJunio C Hamano Mon, 14 Aug 2017 22:22:51 +0000 (15:22 -0700)

Merge branch 'bw/grep-recurse-submodules' into next

"git grep --recurse-submodules" has been reworked to give a more
consistent output across submodule boundary (and do its thing
without having to fork a separate process).

* bw/grep-recurse-submodules:
grep: recurse in-process using 'struct repository'
submodule: merge repo_read_gitmodules and gitmodules_config
submodule: check for unmerged .gitmodules outside of config parsing
submodule: check for unstaged .gitmodules outside of config parsing
submodule: remove fetch.recursesubmodules from submodule-config parsing
submodule: remove submodule.fetchjobs from submodule-config parsing
config: add config_from_gitmodules
cache.h: add GITMODULES_FILE macro
repository: have the_repository use the_index
repo_read_index: don't discard the index

Merge branch 'mh/packed-ref-store' into nextJunio C Hamano Mon, 14 Aug 2017 22:22:50 +0000 (15:22 -0700)

Merge branch 'mh/packed-ref-store' into next

The "ref-store" code reorganization continues.

* mh/packed-ref-store: (31 commits)
packed_ref_store: handle a packed-refs file that is a symlink
read_packed_refs(): die if `packed-refs` contains bogus data
t3210: add some tests of bogus packed-refs file contents
repack_without_refs(): don't lock or unlock the packed refs
commit_packed_refs(): remove call to `packed_refs_unlock()`
clear_packed_ref_cache(): don't protest if the lock is held
packed_refs_unlock(), packed_refs_is_locked(): new functions
packed_refs_lock(): report errors via a `struct strbuf *err`
packed_refs_lock(): function renamed from lock_packed_refs()
commit_packed_refs(): use a staging file separate from the lockfile
commit_packed_refs(): report errors rather than dying
packed_ref_store: make class into a subclass of `ref_store`
packed-backend: new module for handling packed references
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
packed_ref_store: support iteration
packed_peel_ref(): new function, extracted from `files_peel_ref()`
repack_without_refs(): take a `packed_ref_store *` parameter
get_packed_ref(): take a `packed_ref_store *` parameter
rollback_packed_refs(): take a `packed_ref_store *` parameter
commit_packed_refs(): take a `packed_ref_store *` parameter
...

The first batch of topics after the 2.14 cycleJunio C Hamano Fri, 11 Aug 2017 20:34:31 +0000 (13:34 -0700)

The first batch of topics after the 2.14 cycle

Notably, let's declare that we aim to make "git add ''" illegal in
the cycle after this one.

The topic to do so, ex/deprecate-empty-pathspec-as-match-all, has
been cooking in 'next' too long, and will stay there during this
cycle, but not after.

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

Merge branch 'ma/pager-per-subcommand-action'Junio C Hamano Fri, 11 Aug 2017 20:27:07 +0000 (13:27 -0700)

Merge branch 'ma/pager-per-subcommand-action'

The "tag.pager" configuration variable was useless for those who
actually create tag objects, as it interfered with the use of an
editor. A new mechanism has been introduced for commands to enable
pager depending on what operation is being carried out to fix this,
and then "git tag -l" is made to run pager by default.

* ma/pager-per-subcommand-action:
git.c: ignore pager.* when launching builtin as dashed external
tag: change default of `pager.tag` to "on"
tag: respect `pager.tag` in list-mode only
t7006: add tests for how git tag paginates
git.c: provide setup_auto_pager()
git.c: let builtins opt for handling `pager.foo` themselves
builtin.h: take over documentation from api-builtin.txt

Merge branch 'jk/rev-list-empty-input'Junio C Hamano Fri, 11 Aug 2017 20:27:07 +0000 (13:27 -0700)

Merge branch 'jk/rev-list-empty-input'

"git log --tag=no-such-tag" showed log starting from HEAD, which
has been fixed---it now shows nothing.

* jk/rev-list-empty-input:
revision: do not fallback to default when rev_input_given is set
rev-list: don't show usage when we see empty ref patterns
revision: add rev_input_given flag
t6018: flesh out empty input/output rev-list tests

Merge branch 'jt/t1450-fsck-corrupt-packfile'Junio C Hamano Fri, 11 Aug 2017 20:27:07 +0000 (13:27 -0700)

Merge branch 'jt/t1450-fsck-corrupt-packfile'

A test update.

* jt/t1450-fsck-corrupt-packfile:
tests: ensure fsck fails on corrupt packfiles

Merge branch 'js/git-gui-msgfmt-on-windows'Junio C Hamano Fri, 11 Aug 2017 20:27:06 +0000 (13:27 -0700)

Merge branch 'js/git-gui-msgfmt-on-windows'

Because recent Git for Windows do come with a real msgfmt, the
build procedure for git-gui has been updated to use it instead of a
hand-rolled substitute.

* js/git-gui-msgfmt-on-windows:
git-gui (MinGW): make use of MSys2's msgfmt
git gui: allow for a long recentrepo list
git gui: de-dup selected repo from recentrepo history
git gui: cope with duplicates in _get_recentrepo
git-gui: remove duplicate entries from .gitconfig's gui.recentrepo

Merge branch 'eb/contacts-reported-by'Junio C Hamano Fri, 11 Aug 2017 20:27:06 +0000 (13:27 -0700)

Merge branch 'eb/contacts-reported-by'

"git contacts" (in contrib/) now lists the address on the
"Reported-by:" trailer to its output, in addition to those on
S-o-b: and other trailers, to make it easier to notify (and thank)
the original bug reporter.

* eb/contacts-reported-by:
git-contacts: also recognise "Reported-by:"

Merge branch 'dl/credential-cache-socket-in-xdg-cache'Junio C Hamano Fri, 11 Aug 2017 20:27:06 +0000 (13:27 -0700)

Merge branch 'dl/credential-cache-socket-in-xdg-cache'

A recently added test for the "credential-cache" helper revealed
that EOF detection done around the time the connection to the cache
daemon is torn down were flaky. This was fixed by reacting to
ECONNRESET and behaving as if we got an EOF.

* dl/credential-cache-socket-in-xdg-cache:
credential-cache: interpret an ECONNRESET as an EOF

Merge branch 'rg/rerere-train-overwrite'Junio C Hamano Fri, 11 Aug 2017 20:27:05 +0000 (13:27 -0700)

Merge branch 'rg/rerere-train-overwrite'

The "rerere-train" script (in contrib/) learned the "--overwrite"
option to allow overwriting existing recorded resolutions.

* rg/rerere-train-overwrite:
contrib/rerere-train: optionally overwrite existing resolutions

Merge branch 'jb/t8008-cleanup'Junio C Hamano Fri, 11 Aug 2017 20:27:05 +0000 (13:27 -0700)

Merge branch 'jb/t8008-cleanup'

Code clean-up.

* jb/t8008-cleanup:
t8008: rely on rev-parse'd HEAD instead of sha1 value

Merge branch 'jt/subprocess-handshake'Junio C Hamano Fri, 11 Aug 2017 20:27:05 +0000 (13:27 -0700)

Merge branch 'jt/subprocess-handshake'

Code cleanup.

* jt/subprocess-handshake:
sub-process: refactor handshake to common function
Documentation: migrate sub-process docs to header

Merge branch 'dc/fmt-merge-msg-microcleanup'Junio C Hamano Fri, 11 Aug 2017 20:27:05 +0000 (13:27 -0700)

Merge branch 'dc/fmt-merge-msg-microcleanup'

Code cleanup.

* dc/fmt-merge-msg-microcleanup:
fmt-merge-msg: fix coding style

Merge branch 'ah/doc-wserrorhighlight'Junio C Hamano Fri, 11 Aug 2017 20:27:04 +0000 (13:27 -0700)

Merge branch 'ah/doc-wserrorhighlight'

Doc update.

* ah/doc-wserrorhighlight:
doc: add missing values "none" and "default" for diff.wsErrorHighlight

Merge branch 'cc/ref-is-hidden-microcleanup'Junio C Hamano Fri, 11 Aug 2017 20:27:03 +0000 (13:27 -0700)

Merge branch 'cc/ref-is-hidden-microcleanup'

Code cleanup.

* cc/ref-is-hidden-microcleanup:
refs: use skip_prefix() in ref_is_hidden()

Merge branch 'js/run-process-parallel-api-fix'Junio C Hamano Fri, 11 Aug 2017 20:27:02 +0000 (13:27 -0700)

Merge branch 'js/run-process-parallel-api-fix'

API fix.

* js/run-process-parallel-api-fix:
run_processes_parallel: change confusing task_cb convention

Merge branch 'hb/gitweb-project-list'Junio C Hamano Fri, 11 Aug 2017 20:27:01 +0000 (13:27 -0700)

Merge branch 'hb/gitweb-project-list'

When a directory is not readable, "gitweb" fails to build the
project list. Work this around by skipping such a directory.

* hb/gitweb-project-list:
gitweb: skip unreadable subdirectories

Merge branch 'ks/commit-abort-on-empty-message-fix'Junio C Hamano Fri, 11 Aug 2017 20:27:01 +0000 (13:27 -0700)

Merge branch 'ks/commit-abort-on-empty-message-fix'

"git commit" when seeing an totally empty message said "you did not
edit the message", which is clearly wrong. The message has been
corrected.

* ks/commit-abort-on-empty-message-fix:
commit: check for empty message before the check for untouched template

Merge branch 'sb/hashmap-cleanup'Junio C Hamano Fri, 11 Aug 2017 20:27:01 +0000 (13:27 -0700)

Merge branch 'sb/hashmap-cleanup'

Many uses of comparision callback function the hashmap API uses
cast the callback function type when registering it to
hashmap_init(), which defeats the compile time type checking when
the callback interface changes (e.g. gaining more parameters).
The callback implementations have been updated to take "void *"
pointers and cast them to the type they expect instead.

* sb/hashmap-cleanup:
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
name-hash.c: drop hashmap_cmp_fn cast
submodule-config.c: drop hashmap_cmp_fn cast
remote.c: drop hashmap_cmp_fn cast
patch-ids.c: drop hashmap_cmp_fn cast
convert/sub-process: drop cast to hashmap_cmp_fn
config.c: drop hashmap_cmp_fn cast
builtin/describe: drop hashmap_cmp_fn cast
builtin/difftool.c: drop hashmap_cmp_fn cast
attr.c: drop hashmap_cmp_fn cast

Merge branch 'jk/reflog-walk'Junio C Hamano Fri, 11 Aug 2017 20:27:00 +0000 (13:27 -0700)

Merge branch 'jk/reflog-walk'

Numerous bugs in walking of reflogs via "log -g" and friends have
been fixed.

* jk/reflog-walk:
reflog-walk: apply --since/--until to reflog dates
reflog-walk: stop using fake parents
rev-list: check reflog_info before showing usage
get_revision_1(): replace do-while with an early return
log: do not free parents when walking reflog
log: clarify comment about reflog cycles
revision: disallow reflog walking with revs->limited
t1414: document some reflog-walk oddities

Merge branch 'ls/filter-process-delayed'Junio C Hamano Fri, 11 Aug 2017 20:27:00 +0000 (13:27 -0700)

Merge branch 'ls/filter-process-delayed'

The filter-process interface learned to allow a process with long
latency give a "delayed" response.

* ls/filter-process-delayed:
convert: add "status=delayed" to filter process protocol
convert: refactor capabilities negotiation
convert: move multiple file filter error handling to separate function
convert: put the flags field before the flag itself for consistent style
t0021: write "OUT <size>" only on success
t0021: make debug log file name configurable
t0021: keep filter log files on comparison

Merge branch 'st/lib-gpg-kill-stray-agent'Junio C Hamano Fri, 11 Aug 2017 20:27:00 +0000 (13:27 -0700)

Merge branch 'st/lib-gpg-kill-stray-agent'

Some versions of GnuPG fails to kill gpg-agent it auto-spawned
and such a left-over agent can interfere with a test. Work it
around by attempting to kill one before starting a new test.

* st/lib-gpg-kill-stray-agent:
t: lib-gpg: flush gpg agent on startup

Merge branch 'rs/pack-objects-pbase-cleanup'Junio C Hamano Fri, 11 Aug 2017 20:27:00 +0000 (13:27 -0700)

Merge branch 'rs/pack-objects-pbase-cleanup'

Code clean-up.

* rs/pack-objects-pbase-cleanup:
pack-objects: remove unnecessary NULL check

Merge branch 'jt/fsck-code-cleanup'Junio C Hamano Fri, 11 Aug 2017 20:26:59 +0000 (13:26 -0700)

Merge branch 'jt/fsck-code-cleanup'

Code clean-up.

* jt/fsck-code-cleanup:
fsck: cleanup unused variable
object: remove "used" field from struct object
fsck: remove redundant parse_tree() invocation

Merge branch 'jc/http-sslkey-and-ssl-cert-are-paths'Junio C Hamano Fri, 11 Aug 2017 20:26:59 +0000 (13:26 -0700)

Merge branch 'jc/http-sslkey-and-ssl-cert-are-paths'

The http.{sslkey,sslCert} configuration variables are to be
interpreted as a pathname that honors "~[username]/" prefix, but
weren't, which has been fixed.

* jc/http-sslkey-and-ssl-cert-are-paths:
http.c: http.sslcert and http.sslkey are both pathnames

Merge branch 'jk/c99'Junio C Hamano Fri, 11 Aug 2017 20:26:58 +0000 (13:26 -0700)

Merge branch 'jk/c99'

Start using selected c99 constructs in small, stable and
essentialpart of the system to catch people who care about
older compilers that do not grok them.

* jk/c99:
clean.c: use designated initializer
strbuf: use designated initializers in STRBUF_INIT

Merge branch 'jk/ref-filter-colors'Junio C Hamano Fri, 11 Aug 2017 20:26:58 +0000 (13:26 -0700)

Merge branch 'jk/ref-filter-colors'

"%C(color name)" in the pretty print format always produced ANSI
color escape codes, which was an early design mistake. They now
honor the configuration (e.g. "color.ui = never") and also tty-ness
of the output medium.

* jk/ref-filter-colors:
ref-filter: consult want_color() before emitting colors
pretty: respect color settings for %C placeholders
rev-list: pass diffopt->use_colors through to pretty-print
for-each-ref: load config earlier
color: check color.ui in git_default_config()
ref-filter: pass ref_format struct to atom parsers
ref-filter: factor out the parsing of sorting atoms
ref-filter: make parse_ref_filter_atom a private function
ref-filter: provide a function for parsing sort options
ref-filter: move need_color_reset_at_eol into ref_format
ref-filter: abstract ref format into its own struct
ref-filter: simplify automatic color reset
t: use test_decode_color rather than literal ANSI codes
docs/for-each-ref: update pointer to color syntax
check return value of verify_ref_format()

Merge branch 'wd/rebase-conflict-guide'Junio C Hamano Fri, 11 Aug 2017 20:26:58 +0000 (13:26 -0700)

Merge branch 'wd/rebase-conflict-guide'

The advice message given when "git rebase" stops for conflicting
changes has been improved.

* wd/rebase-conflict-guide:
rebase: make resolve message clearer for inexperienced users

Merge branch 'rs/stat-data-unaligned-reads-fix'Junio C Hamano Fri, 11 Aug 2017 20:26:58 +0000 (13:26 -0700)

Merge branch 'rs/stat-data-unaligned-reads-fix'

Code clean-up.

* rs/stat-data-unaligned-reads-fix:
dir: support platforms that require aligned reads

Merge branch 'rs/move-array'Junio C Hamano Fri, 11 Aug 2017 20:26:57 +0000 (13:26 -0700)

Merge branch 'rs/move-array'

Code clean-up.

* rs/move-array:
ls-files: don't try to prune an empty index
apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
use MOVE_ARRAY
add MOVE_ARRAY

Merge branch 'rs/bswap-ubsan-fix'Junio C Hamano Fri, 11 Aug 2017 20:26:57 +0000 (13:26 -0700)

Merge branch 'rs/bswap-ubsan-fix'

Code clean-up.

* rs/bswap-ubsan-fix:
bswap: convert get_be16, get_be32 and put_be32 to inline functions
bswap: convert to unsigned before shifting in get_be32

Merge branch 'ks/prepare-commit-msg-sample'Junio C Hamano Fri, 11 Aug 2017 20:26:56 +0000 (13:26 -0700)

Merge branch 'ks/prepare-commit-msg-sample'

Remove an example that is now obsolete from a sample hook,
and improve an old example in it that added a sign-off manually
to use the interpret-trailers command.

* ks/prepare-commit-msg-sample:
hook: add a simple first example
hook: add sign-off using "interpret-trailers"
hook: name the positional variables
hook: cleanup script

Merge branch 'bw/object-id'Junio C Hamano Fri, 11 Aug 2017 20:26:56 +0000 (13:26 -0700)

Merge branch 'bw/object-id'

Conversion from uchar[20] to struct object_id continues.

* bw/object-id:
receive-pack: don't access hash of NULL object_id pointer
notes: don't access hash of NULL object_id pointer
tree-diff: don't access hash of NULL object_id pointer

Merge branch 'bc/object-id'Junio C Hamano Fri, 11 Aug 2017 20:26:55 +0000 (13:26 -0700)

Merge branch 'bc/object-id'

Conversion from uchar[20] to struct object_id continues.

* bc/object-id:
sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
sha1_name: convert GET_SHA1* flags to GET_OID*
sha1_name: convert get_sha1* to get_oid*
Convert remaining callers of get_sha1 to get_oid.
builtin/unpack-file: convert to struct object_id
bisect: convert bisect_checkout to struct object_id
builtin/update_ref: convert to struct object_id
sequencer: convert to struct object_id
remote: convert struct push_cas to struct object_id
submodule: convert submodule config lookup to use object_id
builtin/merge-tree: convert remaining caller of get_sha1 to object_id
builtin/fsck: convert remaining caller of get_sha1 to object_id

Merge branch 'sb/object-id'Junio C Hamano Fri, 11 Aug 2017 20:26:55 +0000 (13:26 -0700)

Merge branch 'sb/object-id'

Conversion from uchar[20] to struct object_id continues.

* sb/object-id:
tag: convert gpg_verify_tag to use struct object_id
commit: convert lookup_commit_graft to struct object_id

Merge tag 'v2.14.1'Junio C Hamano Fri, 4 Aug 2017 19:45:17 +0000 (12:45 -0700)

Merge tag 'v2.14.1'

Start post 2.14 cycleJunio C Hamano Fri, 4 Aug 2017 19:44:55 +0000 (12:44 -0700)

Start post 2.14 cycle

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

Git 2.14.1 v2.14.1Junio C Hamano Fri, 4 Aug 2017 19:41:48 +0000 (12:41 -0700)

Git 2.14.1

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

Merge tag 'v2.13.5' into maintJunio C Hamano Fri, 4 Aug 2017 19:40:37 +0000 (12:40 -0700)

Merge tag 'v2.13.5' into maint

Git 2.14 v2.14.0Junio C Hamano Fri, 4 Aug 2017 16:31:12 +0000 (09:31 -0700)

Git 2.14

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

Merge branch 'ah/patch-id-doc'Junio C Hamano Fri, 4 Aug 2017 16:29:15 +0000 (09:29 -0700)

Merge branch 'ah/patch-id-doc'

Docfix.

* ah/patch-id-doc:
doc: remove unsupported parameter from patch-id

Merge branch 'as/diff-options-grammofix'Junio C Hamano Fri, 4 Aug 2017 16:29:14 +0000 (09:29 -0700)

Merge branch 'as/diff-options-grammofix'

A grammofix.

* as/diff-options-grammofix:
diff-options doc: grammar fix

clone: teach recursive clones to respect -qBrandon Williams Thu, 3 Aug 2017 22:25:44 +0000 (15:25 -0700)

clone: teach recursive clones to respect -q

Teach 'git clone --recurse-submodules' to respect the '-q' option by
passing down the quiet flag to the process which handles cloning of
submodules.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.c: ignore pager.* when launching builtin as dashed... Martin Ågren Wed, 2 Aug 2017 19:40:55 +0000 (21:40 +0200)

git.c: ignore pager.* when launching builtin as dashed external

When running, e.g., `git -c alias.bar=foo bar`, we expand the alias and
execute `git-foo` as a dashed external. This is true even if git foo is
a builtin. That is on purpose, and is motivated in a comment which was
added in commit 441981bc ("git: simplify environment save/restore
logic", 2016-01-26).

Shortly before we launch a dashed external, and unless we have already
found out whether we should use a pager, we check `pager.foo`. This was
added in commit 92058e4d ("support pager.* for external commands",
2011-08-18). If the dashed external is a builtin, this does not match
that commit's intention and is arguably wrong, since it would be cleaner
if we let the "dashed external builtin" handle `pager.foo`.

This has not mattered in practice, but a recent patch taught `git-tag`
to ignore `pager.tag` under certain circumstances. But, when started
using an alias, it doesn't get the chance to do so, as outlined above.
That recent patch added a test to document this breakage.

Do not check `pager.foo` before launching a builtin as a dashed
external, i.e., if we recognize the name of the external as a builtin.
Change the test to use `test_expect_success`.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tag: change default of `pager.tag` to "on"Martin Ågren Wed, 2 Aug 2017 19:40:54 +0000 (21:40 +0200)

tag: change default of `pager.tag` to "on"

The previous patch taught `git tag` to only respect `pager.tag` in
list-mode. That patch left the default value of `pager.tag` at "off".

After that patch, it makes sense to let the default value be "on"
instead, since it will help with listing many tags, but will not hurt
users of `git tag -a` as it would have before. Make that change. Update
documentation and tests.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tag: respect `pager.tag` in list-mode onlyMartin Ågren Wed, 2 Aug 2017 19:40:53 +0000 (21:40 +0200)

tag: respect `pager.tag` in list-mode only

Using, e.g., `git -c pager.tag tag -a new-tag` results in errors such as
"Vim: Warning: Output is not to a terminal" and a garbled terminal.
Someone who makes use of both `git tag -a` and `git tag -l` will
probably not set `pager.tag`, so that `git tag -a` will actually work,
at the cost of not paging output of `git tag -l`.

Use the mechanisms introduced in two earlier patches to ignore
`pager.tag` in git.c and let the `git tag` builtin handle it on its own.
Only respect `pager.tag` when running in list-mode.

There is a window between where the pager is started before and after
this patch. This means that early errors can behave slightly different
before and after this patch. Since operation-parsing has to happen
inside this window, this can be seen with `git -c pager.tag="echo pager
is used" tag -l --unknown-option`. This change in paging-behavior should
be acceptable since it only affects erroneous usages.

Update the documentation and update tests.

If an alias is used to run `git tag -a`, then `pager.tag` will still be
respected. Document this known breakage. It will be fixed in a later
commit. Add a similar test for `-l`, which works.

Noticed-by: Anatoly Borodin <anatoly.borodin@gmail.com>
Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7006: add tests for how git tag paginatesMartin Ågren Wed, 2 Aug 2017 19:40:52 +0000 (21:40 +0200)

t7006: add tests for how git tag paginates

Using, e.g., `git -c pager.tag tag -a new-tag` results in errors such as
"Vim: Warning: Output is not to a terminal" and a garbled terminal.
Someone who makes use of both `git tag -a` and `git tag -l` will
probably not set `pager.tag`, so that `git tag -a` will actually work,
at the cost of not paging output of `git tag -l`.

Since we're about to change how `git tag` respects `pager.tag`, add tests
around this, including how the configuration is ignored if --no-pager or
--paginate are used.

Construct tests with a few different subcommands. First, use -l. Second,
use "no arguments" and --contains, since those imply -l. (There are
more arguments which imply -l, but using these two should be enough.)

Third, use -a as a representative for "not -l". Actually, the tests use
`git tag -am` so no editor is launched, but that is irrelevant, since we
just want to see whether the pager is used or not. Make one of the tests
demonstrate the broken behavior mentioned above, where `git tag -a`
respects `pager.tag`.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.c: provide setup_auto_pager()Martin Ågren Wed, 2 Aug 2017 19:40:51 +0000 (21:40 +0200)

git.c: provide setup_auto_pager()

The previous patch introduced a way for builtins to declare that they
will take responsibility for handling the `pager.foo`-config item. (See
the commit message of that patch for why that could be useful.)

Provide setup_auto_pager(), which builtins can call in order to handle
`pager.<cmd>`, including possibly starting the pager. Make this function
don't do anything if a pager has already been started, as indicated by
use_pager or pager_in_use().

Whenever this function is called from a builtin, git.c will already have
called commit_pager_choice(). Since commit_pager_choice() treats the
special value -1 as "punt" or "not yet decided", it is not a problem
that we might end up calling commit_pager_choice() once in git.c and
once (or more) in the builtin. Make the new function use -1 in the same
way and document it as "punt".

Don't add any users of setup_auto_pager just yet, one will follow in
a later patch.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.c: let builtins opt for handling `pager.foo` themselvesMartin Ågren Wed, 2 Aug 2017 19:40:50 +0000 (21:40 +0200)

git.c: let builtins opt for handling `pager.foo` themselves

Before launching a builtin git foo and unless mechanisms with precedence
are in use, we check for and handle the `pager.foo` config. This is done
without considering exactly how git foo is being used, and indeed, git.c
cannot (and should not) know what the arguments to git foo are supposed
to achieve.

In practice this means that, e.g., `git -c pager.tag tag -a new-tag`
results in errors such as "Vim: Warning: Output is not to a terminal"
and a garbled terminal. Someone who makes use of both `git tag -a` and
`git tag -l` will probably not set `pager.tag`, so that `git tag -a`
will actually work, at the cost of not paging output of `git tag -l`.

To allow individual builtins to make more informed decisions about when
to respect `pager.foo`, introduce a flag DELAY_PAGER_CONFIG. If the flag
is set, do not check `pager.foo`.

Do not check for DELAY_PAGER_CONFIG in `execv_dashed_external()`. That
call site is arguably wrong, although in a way that is not yet visible,
and will be changed in a slightly different direction in a later patch.

Don't add any users of DELAY_PAGER_CONFIG just yet, one will follow in a
later patch.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin.h: take over documentation from api-builtin.txtMartin Ågren Wed, 2 Aug 2017 19:40:49 +0000 (21:40 +0200)

builtin.h: take over documentation from api-builtin.txt

Delete Documentation/technical/api-builtin.txt and move its content
into builtin.h. Format it as a comment. Remove a '+' which was needed
when the information was formatted for AsciiDoc. Similarly, change
"::" to ":".

Document SUPPORT_SUPER_PREFIX, thereby bringing the documentation up to
date with the available flags.

While at it, correct '3 more things to do' to '4 more things to do'.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revision: do not fallback to default when rev_input_giv... Jeff King Wed, 2 Aug 2017 22:30:19 +0000 (18:30 -0400)

revision: do not fallback to default when rev_input_given is set

If revs->def is set (as it is in "git log") and there are no
pending objects after parsing the user's input, then we show
whatever is in "def". But if the user _did_ ask for some
input that just happened to be empty (e.g., "--glob" that
does not match anything), showing the default revision is
confusing. We should just show nothing, as that is what the
user's request yielded.

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

rev-list: don't show usage when we see empty ref patternsJeff King Wed, 2 Aug 2017 22:26:06 +0000 (18:26 -0400)

rev-list: don't show usage when we see empty ref patterns

If the user gives us no starting point for a traversal, we
want to complain with our normal usage message. But if they
tried to do so with "--all" or "--glob", but that happened
not to match any refs, the usage message isn't helpful. We
should just give them the empty output they asked for
instead.

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

revision: add rev_input_given flagJeff King Wed, 2 Aug 2017 22:25:27 +0000 (18:25 -0400)

revision: add rev_input_given flag

Normally a caller that invokes setup_revisions() has to
check rev.pending to see if anything was actually queued for
the traversal. But they can't tell the difference between
two cases:

1. The user gave us no tip from which to start a
traversal.

2. The user tried to give us tips via --glob, --all, etc,
but their patterns ended up being empty.

Let's set a flag in the rev_info struct that callers can use
to tell the difference. We can set this from the
init_all_refs_cb() function. That's a little funny because
it's not exactly about initializing the "cb" struct itself.
But that function is the common setup place for doing
pattern traversals that is used by --glob, --all, etc.

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

t6018: flesh out empty input/output rev-list testsJeff King Wed, 2 Aug 2017 22:24:51 +0000 (18:24 -0400)

t6018: flesh out empty input/output rev-list tests

In 751a2ac6e (rev-list --exclude: tests, 2013-11-01), we
added a few tests for handling "empty" inputs with rev-list
(i.e., where the user gave us some pattern but it turned out
not to queue any objects for traversal), all of which were
marked as failing.

In preparation for working on this area of the code, let's
give each test a more descriptive name. Let's also include
one more case which we should cover: feeding a --glob
pattern that doesn't match anything.

We can also drop the explanatory comment; we'll be
converting these to expect_success in the next few patches,
so the discussion isn't necessary.

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

cherry-pick/revert: reject --rerere-autoupdate when... Phillip Wood Wed, 2 Aug 2017 10:44:20 +0000 (11:44 +0100)

cherry-pick/revert: reject --rerere-autoupdate when continuing

cherry-pick and revert should not accept --[no-]rerere-autoupdate once
they have started.

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

cherry-pick/revert: remember --rerere-autoupdatePhillip Wood Wed, 2 Aug 2017 10:44:19 +0000 (11:44 +0100)

cherry-pick/revert: remember --rerere-autoupdate

When continuing after conflicts, cherry-pick forgot if the user had specified
'--rerere-autoupdate'.

Redo the cherry-pick rerere tests to check --rerere-autoupdate works
as expected.

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

t3504: use test_commitPhillip Wood Wed, 2 Aug 2017 10:44:18 +0000 (11:44 +0100)

t3504: use test_commit

Using test_commit is simpler than chaining echo && git add &&
test_tick && commit. Also having tags makes it clearer which commit
is being selecting by reset.

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

rebase -i: honor --rerere-autoupdatePhillip Wood Wed, 2 Aug 2017 10:44:17 +0000 (11:44 +0100)

rebase -i: honor --rerere-autoupdate

Interactive rebase was ignoring '--rerere-autoupdate'. Fix this by
reading it appropriate file when restoring the sequencer state for an
interactive rebase and passing '--rerere-autoupdate' to merge and
cherry-pick when rebasing with '--preserve-merges'.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: honor --rerere-autoupdatePhillip Wood Wed, 2 Aug 2017 10:44:16 +0000 (11:44 +0100)

rebase: honor --rerere-autoupdate

Rebase accepts '--rerere-autoupdate' as an option but only honors it
if '-m' is also given. Fix it for a non-interactive rebase by passing
on the option to 'git am' and 'git cherry-pick'. Rework the tests so
that they can be used for each rebase flavor and extend them.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

am: remember --rerere-autoupdate settingPhillip Wood Wed, 2 Aug 2017 10:44:15 +0000 (11:44 +0100)

am: remember --rerere-autoupdate setting

Save the rerere-autoupdate setting so that it is remembered after
stopping for the user to resolve conflicts.

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

grep: recurse in-process using 'struct repository'Brandon Williams Wed, 2 Aug 2017 19:49:23 +0000 (12:49 -0700)

grep: recurse in-process using 'struct repository'

Convert grep to use 'struct repository' which enables recursing into
submodules to be handled in-process.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: merge repo_read_gitmodules and gitmodules_configBrandon Williams Wed, 2 Aug 2017 19:49:22 +0000 (12:49 -0700)

submodule: merge repo_read_gitmodules and gitmodules_config

Since 69aba5329 (submodule: add repo_read_gitmodules) there have been
two ways to load a repository's .gitmodules file:
'repo_read_gitmodules()' is used if you have a repository object you are
working with or 'gitmodules_config()' if you are implicitly working with
'the_repository'. Merge the logic of these two functions to remove
duplicate code.

In addition, 'repo_read_gitmodules()' can segfault by passing in a NULL
pointer to 'git_config_from_file()' if a repository doesn't have a
worktree. Instead check for the existence of a worktree before
attempting to load the .gitmodules file.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: check for unmerged .gitmodules outside of... Brandon Williams Wed, 2 Aug 2017 19:49:21 +0000 (12:49 -0700)

submodule: check for unmerged .gitmodules outside of config parsing

Add 'is_gitmodules_unmerged()' function which can be used to determine
in the '.gitmodules' file is unmerged based on the passed in index
instead of relying on a global variable which is set during the
submodule-config parsing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: check for unstaged .gitmodules outside of... Brandon Williams Wed, 2 Aug 2017 19:49:20 +0000 (12:49 -0700)

submodule: check for unstaged .gitmodules outside of config parsing

Teach 'is_staging_gitmodules_ok()' to be able to determine in the
'.gitmodules' file has unstaged changes based on the passed in index
instead of relying on a global variable which is set during the
submodule-config parsing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: remove fetch.recursesubmodules from submodul... Brandon Williams Wed, 2 Aug 2017 19:49:19 +0000 (12:49 -0700)

submodule: remove fetch.recursesubmodules from submodule-config parsing

Remove the 'fetch.recursesubmodules' configuration option from the
general submodule-config parsing and instead rely on using
'config_from_gitmodules()' in order to maintain backwards compatibility
with this config being placed in the '.gitmodules' file.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: remove submodule.fetchjobs from submodule... Brandon Williams Wed, 2 Aug 2017 19:49:18 +0000 (12:49 -0700)

submodule: remove submodule.fetchjobs from submodule-config parsing

The '.gitmodules' file should only contain information pertinent to
configuring individual submodules (name to path mapping, URL where to
obtain the submodule, etc.) while other configuration like the number of
jobs to use when fetching submodules should be a part of the
repository's config.

Remove the 'submodule.fetchjobs' configuration option from the general
submodule-config parsing and instead rely on using the
'config_from_gitmodules()' in order to maintain backwards compatibility
with this config being placed in the '.gitmodules' file.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config: add config_from_gitmodulesBrandon Williams Wed, 2 Aug 2017 19:49:17 +0000 (12:49 -0700)

config: add config_from_gitmodules

Add 'config_from_gitmodules()' function which can be used by 'fetch' and
'update_clone' in order to maintain backwards compatibility with
configuration being stored in .gitmodules' since a future patch will
remove reading these values in the submodule-config.

This function should not be used anywhere other than in 'fetch' and
'update_clone'.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cache.h: add GITMODULES_FILE macroBrandon Williams Wed, 2 Aug 2017 19:49:16 +0000 (12:49 -0700)

cache.h: add GITMODULES_FILE macro

Add a macro to be used when specifying the '.gitmodules' file and
convert any existing hard coded '.gitmodules' file strings to use the
new macro.

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

Merge tag 'l10n-2.14.0-rnd2' of git://github.com/git... Junio C Hamano Wed, 2 Aug 2017 17:52:33 +0000 (10:52 -0700)

Merge tag 'l10n-2.14.0-rnd2' of git://github.com/git-l10n/git-po

l10n for Git 2.14.0 round 2

* tag 'l10n-2.14.0-rnd2' of git://github.com/git-l10n/git-po:
l10n: zh_CN: review for git v2.14.0 l10n
l10n: ko.po: Update Korean translation
l10n: zh_CN: for git v2.14.0 l10n round 2
l10n: de.po: various fixes in German translation
l10n: ru.po: update Russian translation
l10n: fr.po v2.14.0 rnd 2
l10n: fr.po Fix some french typos
l10n: fr.po Fix typo
l10n: fr.po Fix some translations
l10n: de.po: update German translation
l10n: vi.po (3213t): Updated 9 new strings
l10n: Update Catalan translation
l10n: bg.po: Updated Bulgarian translation (3213t)

l10n: zh_CN: review for git v2.14.0 l10nJiang Xin Wed, 2 Aug 2017 00:02:37 +0000 (08:02 +0800)

l10n: zh_CN: review for git v2.14.0 l10n

Reviewed-by: 依云 <lilydjwg@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Git 2.13.5 v2.13.5Junio C Hamano Tue, 1 Aug 2017 19:30:00 +0000 (12:30 -0700)

Git 2.13.5

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

Merge tag 'v2.12.4' into maintJunio C Hamano Tue, 1 Aug 2017 19:27:31 +0000 (12:27 -0700)

Merge tag 'v2.12.4' into maint

Sync with v2.13.4Junio C Hamano Tue, 1 Aug 2017 18:46:51 +0000 (11:46 -0700)

Sync with v2.13.4

Git 2.13.4 v2.13.4Junio C Hamano Tue, 1 Aug 2017 18:45:17 +0000 (11:45 -0700)

Git 2.13.4

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

l10n: ko.po: Update Korean translationChangwoo Ryu Tue, 1 Aug 2017 03:32:00 +0000 (12:32 +0900)

l10n: ko.po: Update Korean translation

Signed-off-by: Changwoo Ryu <cwryu@debian.org>

l10n: zh_CN: for git v2.14.0 l10n round 2Jiang Xin Sun, 11 Jun 2017 03:28:31 +0000 (11:28 +0800)

l10n: zh_CN: for git v2.14.0 l10n round 2

Translate new l10n messages for git 2.14.0, and update translations on
"stash".

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Sync with maintJunio C Hamano Mon, 31 Jul 2017 20:52:53 +0000 (13:52 -0700)

Sync with maint

* maint:
Preparation for 2.13.4 continues

Preparation for 2.13.4 continuesJunio C Hamano Mon, 31 Jul 2017 20:52:40 +0000 (13:52 -0700)

Preparation for 2.13.4 continues

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

Merge branch 'ks/doc-fixes' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:06 +0000 (13:51 -0700)

Merge branch 'ks/doc-fixes' into maint

Doc clean-up.

* ks/doc-fixes:
doc: reformat the paragraph containing the 'cut-line'
doc: camelCase the i18n config variables to improve readability

Merge branch 'jk/test-copy-bytes-fix' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -0700)

Merge branch 'jk/test-copy-bytes-fix' into maint

A test fix.

* jk/test-copy-bytes-fix:
t: handle EOF in test_copy_bytes()

Merge branch 'pw/unquote-path-in-git-pm' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -0700)

Merge branch 'pw/unquote-path-in-git-pm' into maint

Code refactoring.

* pw/unquote-path-in-git-pm:
t9700: add tests for Git::unquote_path()
Git::unquote_path(): throw an exception on bad path
Git::unquote_path(): handle '\a'
add -i: move unquote_path() to Git.pm

Merge branch 'jk/gc-pre-detach-under-hook' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -0700)

Merge branch 'jk/gc-pre-detach-under-hook' into maint

We run an early part of "git gc" that deals with refs before
daemonising (and not under lock) even when running a background
auto-gc, which caused multiple gc processes attempting to run the
early part at the same time. This is now prevented by running the
early part also under the GC lock.

* jk/gc-pre-detach-under-hook:
gc: run pre-detach operations under lock

Merge branch 'jn/hooks-pre-rebase-sample-fix' into... Junio C Hamano Mon, 31 Jul 2017 20:51:05 +0000 (13:51 -0700)

Merge branch 'jn/hooks-pre-rebase-sample-fix' into maint

Code clean-up, that makes us in sync with Debian by one patch.

* jn/hooks-pre-rebase-sample-fix:
pre-rebase hook: capture documentation in a <<here document

Merge branch 'rs/progress-overall-throughput-at-the... Junio C Hamano Mon, 31 Jul 2017 20:51:04 +0000 (13:51 -0700)

Merge branch 'rs/progress-overall-throughput-at-the-end' into maint

The progress meter did not give a useful output when we haven't had
0.5 seconds to measure the throughput during the interval. Instead
show the overall throughput rate at the end, which is a much more
useful number.

* rs/progress-overall-throughput-at-the-end:
progress: show overall rate in last update

Merge branch 'tb/push-to-cygwin-unc-path' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:04 +0000 (13:51 -0700)

Merge branch 'tb/push-to-cygwin-unc-path' into maint

On Cygwin, similar to Windows, "git push //server/share/repository"
ought to mean a repository on a network share that can be accessed
locally, but this did not work correctly due to stripping the double
slashes at the beginning.

This may need to be heavily tested before it gets unleashed to the
wild, as the change is at a fairly low-level code and would affect
not just the code to decide if the push destination is local. There
may be unexpected fallouts in the path normalization.

* tb/push-to-cygwin-unc-path:
cygwin: allow pushing to UNC paths

Merge branch 'rs/apply-avoid-over-reading' into maintJunio C Hamano Mon, 31 Jul 2017 20:51:04 +0000 (13:51 -0700)

Merge branch 'rs/apply-avoid-over-reading' into maint

Code cleanup.

* rs/apply-avoid-over-reading:
apply: use strcmp(3) for comparing strings in gitdiff_verify_name()
apply: use starts_with() in gitdiff_verify_name()

Merge branch 'js/blame-lib'Junio C Hamano Mon, 31 Jul 2017 20:05:15 +0000 (13:05 -0700)

Merge branch 'js/blame-lib'

A hotfix to a topic already in 'master'.

* js/blame-lib:
blame: fix memory corruption scrambling revision name in error message

diff-options doc: grammar fixAnthony Sottile Mon, 31 Jul 2017 14:00:31 +0000 (07:00 -0700)

diff-options doc: grammar fix

Signed-off-by: Anthony Sottile <asottile@umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.12.4 v2.12.4Junio C Hamano Sun, 30 Jul 2017 22:06:06 +0000 (15:06 -0700)

Git 2.12.4

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

Merge tag 'v2.11.3' into maint-2.12Junio C Hamano Sun, 30 Jul 2017 22:04:22 +0000 (15:04 -0700)

Merge tag 'v2.11.3' into maint-2.12

Git 2.11.3

Merge branch 'jk/lib-proto-disable-cleanup' into maint... Junio C Hamano Sun, 30 Jul 2017 22:03:21 +0000 (15:03 -0700)

Merge branch 'jk/lib-proto-disable-cleanup' into maint-2.12

Git 2.11.3 v2.11.3Junio C Hamano Sun, 30 Jul 2017 22:02:37 +0000 (15:02 -0700)

Git 2.11.3

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

Merge tag 'v2.10.4' into maint-2.11Junio C Hamano Sun, 30 Jul 2017 22:01:31 +0000 (15:01 -0700)

Merge tag 'v2.10.4' into maint-2.11

Git 2.10.4

Git 2.10.4 v2.10.4Junio C Hamano Sun, 30 Jul 2017 22:00:04 +0000 (15:00 -0700)

Git 2.10.4

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

Merge tag 'v2.9.5' into maint-2.10Junio C Hamano Sun, 30 Jul 2017 21:57:33 +0000 (14:57 -0700)

Merge tag 'v2.9.5' into maint-2.10

Git 2.9.5

Git 2.9.5 v2.9.5Junio C Hamano Sun, 30 Jul 2017 21:53:25 +0000 (14:53 -0700)

Git 2.9.5

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