gitweb.git
relink: retire the commandJohannes Schindelin Wed, 25 Jan 2017 16:58:57 +0000 (17:58 +0100)

relink: retire the command

Back in the olden days, when all objects were loose and rubber boots were
made out of wood, it made sense to try to share (immutable) objects
between repositories.

Ever since the arrival of pack files, it is but an anachronism.

Let's move the script to the contrib/examples/ directory and no longer
offer it.

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

difftool: hack around -Wzero-length-format warningJeff King Wed, 25 Jan 2017 18:35:42 +0000 (13:35 -0500)

difftool: hack around -Wzero-length-format warning

Building with "gcc -Wall" will complain that the format in:

warning("")

is empty. Which is true, but the warning is over-eager. We
are calling the function for its side effect of printing
"warning:", even with an empty string.

Our DEVELOPER Makefile knob disables the warning, but not
everybody uses it. Let's silence the warning in the code so
that nobody reports it or tries to "fix" it.

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

unpack-trees: support super-prefix optionStefan Beller Wed, 18 Jan 2017 01:05:20 +0000 (17:05 -0800)

unpack-trees: support super-prefix option

In the future we want to support working tree operations within submodules,
e.g. "git checkout --recurse-submodules", which will update the submodule
to the commit as recorded in its superproject. In the submodule the
unpack-tree operation is carried out as usual, but the reporting to the
user needs to prefix any path with the superproject. The mechanism for
this is the super-prefix. (see 74866d757, git: make super-prefix option)

Add support for the super-prefix option for commands that unpack trees
by wrapping any path output in unpacking trees in the newly introduced
super_prefixed function. This new function prefixes any path with the
super-prefix if there is one. Assuming the submodule case doesn't happen
in the majority of the cases, we'd want to have a fast behavior for no
super prefix, i.e. no reallocation/copying, but just returning path.

Another aspect of introducing the `super_prefixed` function is to consider
who owns the memory and if this is the right place where the path gets
modified. As the super prefix ought to change the output behavior only and
not the actual unpack tree part, it is fine to be that late in the line.
As we get passed in 'const char *path', we cannot change the path itself,
which means in case of a super prefix we have to copy over the path.
We need two static buffers in that function as the error messages
contain at most two paths.

For testing purposes enable it in read-tree, which has no output
of paths other than an unpack-trees.c. These are all converted in
this patch.

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

t1450: use "mv -f" within loose object directoryJeff King Tue, 24 Jan 2017 13:27:49 +0000 (08:27 -0500)

t1450: use "mv -f" within loose object directory

The loose objects are created with mode 0444. That doesn't
prevent them being overwritten by rename(), but some
versions of "mv" will be extra careful and prompt the user,
even without "-i".

Reportedly macOS does this, at least in the Travis builds.
The prompt reads from /dev/null, defaulting to "no", and the
object isn't moved. Then to make matters even more
interesting, it still returns "0" and the rest of the test
proceeds, but with a broken setup.

We can work around it by using "mv -f" to override the
prompt. This should work as it's already used in t5504 for
the same purpose.

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

Merge branch 'master' of https://github.com/Softcatala... Jiang Xin Wed, 25 Jan 2017 12:57:52 +0000 (20:57 +0800)

Merge branch 'master' of https://github.com/Softcatala/git-po

* 'master' of https://github.com/Softcatala/git-po:
l10n: fixes to Catalan translation

show-ref: remove a stale commentJunio C Hamano Tue, 24 Jan 2017 02:51:56 +0000 (18:51 -0800)

show-ref: remove a stale comment

When cf0adba788 ("Store peeled refs in packed-refs file.",
2006-11-19) made the command to die with a message on error even
when --quiet is passed, it left the comment to say it changed the
semantics. But that kind of information belongs to the log message,
not in-code comment. Besides, the behaviour after the change has
been the established one for the past 10 years ;-)

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

log --graph: customize the graph lines with config... Nguyễn Thái Ngọc Duy Thu, 19 Jan 2017 11:41:23 +0000 (18:41 +0700)

log --graph: customize the graph lines with config log.graphColors

If you have a 256 colors terminal (or one with true color support), then
the predefined 12 colors seem limited. On the other hand, you don't want
to draw graph lines with every single color in this mode because the two
colors could look extremely similar. This option allows you to hand pick
the colors you want.

Even with standard terminal, if your background color is neither black
or white, then the graph line may match your background and become
hidden. You can exclude your background color (or simply the colors you
hate) with this.

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

Seventh batch for 2.12Junio C Hamano Tue, 24 Jan 2017 00:00:40 +0000 (16:00 -0800)

Seventh batch for 2.12

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

Merge branch 'ws/request-pull-code-cleanup'Junio C Hamano Mon, 23 Jan 2017 23:59:23 +0000 (15:59 -0800)

Merge branch 'ws/request-pull-code-cleanup'

Code clean-up.

* ws/request-pull-code-cleanup:
request-pull: drop old USAGE stuff

Merge branch 'rh/diff-orderfile-doc'Junio C Hamano Mon, 23 Jan 2017 23:59:23 +0000 (15:59 -0800)

Merge branch 'rh/diff-orderfile-doc'

Documentation fix.

* rh/diff-orderfile-doc:
diff: document the format of the -O (diff.orderFile) file
diff: document behavior of relative diff.orderFile

Merge branch 'sb/cd-then-git-can-be-written-as-git-c'Junio C Hamano Mon, 23 Jan 2017 23:59:22 +0000 (15:59 -0800)

Merge branch 'sb/cd-then-git-can-be-written-as-git-c'

Test clean-up.

* sb/cd-then-git-can-be-written-as-git-c:
lib-submodule-update.sh: reduce use of subshell by using "git -C"

Merge branch 'ad/bisect-terms'Junio C Hamano Mon, 23 Jan 2017 23:59:22 +0000 (15:59 -0800)

Merge branch 'ad/bisect-terms'

Documentation fix.

* ad/bisect-terms:
Documentation/bisect: improve on (bad|new) and (good|bad)

Merge branch 'sg/fix-versioncmp-with-common-suffix'Junio C Hamano Mon, 23 Jan 2017 23:59:21 +0000 (15:59 -0800)

Merge branch 'sg/fix-versioncmp-with-common-suffix'

The prereleaseSuffix feature of version comparison that is used in
"git tag -l" did not correctly when two or more prereleases for the
same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2
are there and the code needs to compare 2.0-beta1 and 2.0-beta2).

* sg/fix-versioncmp-with-common-suffix:
versioncmp: generalize version sort suffix reordering
versioncmp: factor out helper for suffix matching
versioncmp: use earliest-longest contained suffix to determine sorting order
versioncmp: cope with common part overlapping with prerelease suffix
versioncmp: pass full tagnames to swap_prereleases()
t7004-tag: add version sort tests to show prerelease reordering issues
t7004-tag: use test_config helper
t7004-tag: delete unnecessary tags with test_when_finished

Merge branch 'vn/diff-ihc-config'Junio C Hamano Mon, 23 Jan 2017 23:59:21 +0000 (15:59 -0800)

Merge branch 'vn/diff-ihc-config'

"git diff" learned diff.interHunkContext configuration variable
that gives the default value for its --inter-hunk-context option.

* vn/diff-ihc-config:
diff: add interhunk context config option

Merge branch 'sb/submodule-init'Junio C Hamano Mon, 23 Jan 2017 23:59:21 +0000 (15:59 -0800)

Merge branch 'sb/submodule-init'

Error message fix.

* sb/submodule-init:
submodule update --init: display correct path from submodule

Merge branch 'sb/submodule-embed-gitdir'Junio C Hamano Mon, 23 Jan 2017 23:59:20 +0000 (15:59 -0800)

Merge branch 'sb/submodule-embed-gitdir'

Help-text fix.

* sb/submodule-embed-gitdir:
submodule absorbgitdirs: mention in docstring help

Merge branch 'sb/submodule-config-tests'Junio C Hamano Mon, 23 Jan 2017 23:59:20 +0000 (15:59 -0800)

Merge branch 'sb/submodule-config-tests'

Test updates.

* sb/submodule-config-tests:
t7411: test lookup of uninitialized submodules
t7411: quote URLs

Merge branch 'jk/grep-e-could-be-extended-beyond-posix'Junio C Hamano Mon, 23 Jan 2017 23:59:20 +0000 (15:59 -0800)

Merge branch 'jk/grep-e-could-be-extended-beyond-posix'

Tighten a test to avoid mistaking an extended ERE regexp engine as
a PRE regexp engine.

* jk/grep-e-could-be-extended-beyond-posix:
t7810: avoid assumption about invalid regex syntax

Merge branch 'bw/read-blob-data-does-not-modify-index... Junio C Hamano Mon, 23 Jan 2017 23:59:19 +0000 (15:59 -0800)

Merge branch 'bw/read-blob-data-does-not-modify-index-state'

Code clean-up.

* bw/read-blob-data-does-not-modify-index-state:
index: improve constness for reading blob data

show-ref: remove dead `if (verify)' checkVladimir Panteleev Mon, 23 Jan 2017 18:00:59 +0000 (18:00 +0000)

show-ref: remove dead `if (verify)' check

As show_ref() is only ever called on the path where --verify is not
specified, `verify' can never possibly be true here.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

show-ref: detect dangling refs under --verify as wellVladimir Panteleev Mon, 23 Jan 2017 18:00:58 +0000 (18:00 +0000)

show-ref: detect dangling refs under --verify as well

Move detection of dangling refs into show_one(), so that they are
detected when --verify is present as well as when it is absent.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

show-ref: move --quiet handling into show_one()Vladimir Panteleev Mon, 23 Jan 2017 18:00:57 +0000 (18:00 +0000)

show-ref: move --quiet handling into show_one()

Do the same with --quiet as was done with -d, to remove the need to
perform this check at show_one()'s call site from the --verify branch.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

show-ref: allow -d to work with --verifyVladimir Panteleev Mon, 23 Jan 2017 18:00:56 +0000 (18:00 +0000)

show-ref: allow -d to work with --verify

Move handling of -d into show_one(), so that it takes effect when
--verify is present as well as when it is absent. This is useful when
the user wishes to avoid the costly iteration of refs.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

show-ref: accept HEAD with --verifyVladimir Panteleev Mon, 23 Jan 2017 18:00:55 +0000 (18:00 +0000)

show-ref: accept HEAD with --verify

Previously, when --verify was specified, show-ref would use a separate
code path which did not handle HEAD and treated it as an invalid
ref. Thus, "git show-ref --verify HEAD" (where "--verify" is used
because the user is not interested in seeing refs/remotes/origin/HEAD)
did not work as expected.

Instead of insisting that the input begins with "refs/", allow "HEAD"
as well in the codepath that handles "--verify", so that all valid
full refnames including HEAD are passed to the same output machinery.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: use QSORT_S in ref_array_sort()René Scharfe Sun, 22 Jan 2017 17:58:07 +0000 (18:58 +0100)

ref-filter: use QSORT_S in ref_array_sort()

Pass the array of sort keys to compare_refs() via the context parameter
of qsort_s() instead of using a global variable; that's cleaner and
simpler. If ref_array_sort() is to be called from multiple parallel
threads then care still needs to be taken that the global variable
used_atom is not modified concurrently.

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

string-list: use QSORT_S in string_list_sort()René Scharfe Sun, 22 Jan 2017 17:57:09 +0000 (18:57 +0100)

string-list: use QSORT_S in string_list_sort()

Pass the comparison function to cmp_items() via the context parameter of
qsort_s() instead of using a global variable. That allows calling
string_list_sort() from multiple parallel threads.

Our qsort_s() in compat/ is slightly slower than qsort(1) from glibc
2.24 for sorting lots of lines:

Test HEAD^ HEAD
---------------------------------------------------------------------
0071.2: sort(1) 0.10(0.22+0.01) 0.09(0.21+0.00) -10.0%
0071.3: string_list_sort() 0.16(0.15+0.01) 0.17(0.15+0.00) +6.3%

GNU sort(1) version 8.26 is significantly faster because it uses
multiple parallel threads; with the unportable option --parallel=1 it
becomes slower:

Test HEAD^ HEAD
--------------------------------------------------------------------
0071.2: sort(1) 0.21(0.18+0.01) 0.20(0.18+0.01) -4.8%
0071.3: string_list_sort() 0.16(0.13+0.02) 0.17(0.15+0.01) +6.3%

There is some instability -- the numbers for the sort(1) check shouldn't
be affected by this patch. Anyway, the performance of our qsort_s()
implementation is apparently good enough, at least for this test.

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

perf: add basic sort performance testRené Scharfe Sun, 22 Jan 2017 17:53:57 +0000 (18:53 +0100)

perf: add basic sort performance test

Add a sort command to test-string-list that reads lines from stdin,
stores them in a string_list and then sorts it. Use it in a simple
perf test script to measure the performance of string_list_sort().

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

add QSORT_SRené Scharfe Sun, 22 Jan 2017 17:52:13 +0000 (18:52 +0100)

add QSORT_S

Add the macro QSORT_S, a convenient wrapper for qsort_s() that infers
the size of the array elements and dies on error.

Basically all possible errors are programming mistakes (passing NULL as
base of a non-empty array, passing NULL as comparison function,
out-of-bounds accesses), so terminating the program should be acceptable
for most callers.

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

compat: add qsort_s()René Scharfe Sun, 22 Jan 2017 17:51:11 +0000 (18:51 +0100)

compat: add qsort_s()

The function qsort_s() was introduced with C11 Annex K; it provides the
ability to pass a context pointer to the comparison function, supports
the convention of using a NULL pointer for an empty array and performs a
few safety checks.

Add an implementation based on compat/qsort.c for platforms that lack a
native standards-compliant qsort_s() (i.e. basically everyone). It
doesn't perform the full range of possible checks: It uses size_t
instead of rsize_t and doesn't check nmemb and size against RSIZE_MAX
because we probably don't have the restricted size type defined. For
the same reason it returns int instead of errno_t.

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

Makefile: add a knob to enable the use of Asciidoctorbrian m. carlson Sun, 22 Jan 2017 02:41:56 +0000 (02:41 +0000)

Makefile: add a knob to enable the use of Asciidoctor

While Git has traditionally built its documentation using AsciiDoc, some
people wish to use Asciidoctor for speed or other reasons. Add a
Makefile knob, USE_ASCIIDOCTOR, that sets various options in order to
produce acceptable output. For HTML output, XHTML5 was chosen, since
the AsciiDoc options also produce XHTML, albeit XHTML 1.1.

Asciidoctor does not have built-in support for the linkgit macro, but it
is available using the Asciidoctor Extensions Lab. Add a macro to
enable the use of this extension if it is available. Without it, the
linkgit macros are emitted into the output.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: move dblatex arguments into variablebrian m. carlson Sun, 22 Jan 2017 02:41:55 +0000 (02:41 +0000)

Documentation: move dblatex arguments into variable

Our dblatex invocation uses several style components from the AsciiDoc
distribution, but those components are not available when building with
Asciidoctor. Move the command line arguments into a variable so it can
be overridden by the user or makefile configuration options.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: add XSLT to fix DocBook for Texinfobrian m. carlson Sun, 22 Jan 2017 02:41:54 +0000 (02:41 +0000)

Documentation: add XSLT to fix DocBook for Texinfo

There are two ways to create a section in a reference document (i.e.,
manpage) in DocBook 4: refsection elements and refsect, refsect2, and
refsect3 elements. Either form is acceptable as of DocBook 4.2, but
they cannot be mixed. Prior to DocBook 4.2, only the numbered forms
were acceptable.

docbook2texi only accepts the numbered forms, and this has not generally
been a problem, since AsciiDoc produces the numbered forms.
Asciidoctor, on the other hand, uses a shared backend for DocBook 4 and
5, and uses the unnumbered refsection elements instead.

If we don't convert the unnumbered form to the numbered form,
docbook2texi omits section headings, which is undesirable. Add an XSLT
stylesheet to transform the unnumbered forms to the numbered forms
automatically, and preprocess the DocBook XML as part of the
transformation to Texinfo format.

Note that this transformation is only necessary for Texinfo, since
docbook2texi provides its own stylesheets. The DocBook stylesheets,
which we use for other formats, provide the full range of DocBook 4 and
5 compatibility, and don't have this issue.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: sort sources for gitman.texibrian m. carlson Sun, 22 Jan 2017 02:41:53 +0000 (02:41 +0000)

Documentation: sort sources for gitman.texi

Sorting the sources makes it easier to compare the output using diff.
In addition, it aids groups creating reproducible builds, as the order
of the files is no longer dependent on the file system or other
irrelevant factors.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: remove unneeded argument in cat-texi... brian m. carlson Sun, 22 Jan 2017 02:41:52 +0000 (02:41 +0000)

Documentation: remove unneeded argument in cat-texi.perl

The newly-added use of the warnings pragma exposes that the $menu[0]
argument to printf has long been silently ignored, since there is no
format specifier for it. It doesn't appear that the argument is
actually needed, either: there is no reason to insert the name of one
particular documentation page anywhere in the header that's being
generated.

Remove the unused argument, and since the format specification
functionality is no longer needed, convert the printf to a simple print.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: modernize cat-texi.perlbrian m. carlson Sun, 22 Jan 2017 02:41:51 +0000 (02:41 +0000)

Documentation: modernize cat-texi.perl

Good style for Perl includes using the strict and warnings pragmas, and
preferring lexical file handles over bareword file handles. Using
lexical file handles necessitates being explicit when $_ is printed, so
that Perl does not get confused and instead print the glob ref.

The benefit of this modernization is that a formerly obscured bug is now
visible, which will be fixed in a followup patch.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: fix warning in cat-texi.perlbrian m. carlson Sun, 22 Jan 2017 02:41:50 +0000 (02:41 +0000)

Documentation: fix warning in cat-texi.perl

Newer versions of Perl produce the warning "Unescaped left brace in
regex is deprecated, passed through in regex" when an unescaped left
brace occurs in a regex. Escape the brace to avoid this warning.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

travis-ci: fix Perforce install on macOSLars Schneider Sun, 22 Jan 2017 22:55:50 +0000 (23:55 +0100)

travis-ci: fix Perforce install on macOS

The `perforce` and `perforce-server` package were moved from brew [1][2]
to cask [3]. Teach TravisCI the new location.

Perforce updates their binaries without version bumps. That made the
brew install (legitimately!) fail due to checksum mismatches. The
workaround is not necessary anymore as Cask [4] allows to disable the
checksum test for individual formulas.

[1] https://github.com/Homebrew/homebrew-binary/commit/1394e42de04d07445f82f9512627e864ff4ca4c6
[2] https://github.com/Homebrew/homebrew-binary/commit/f8da22d6b8dbcfcfdb2dfa9ac1a5e5d8e05aac2b
[3] https://github.com/caskroom/homebrew-cask/pull/29180
[4] https://caskroom.github.io/

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib: remove git-convert-objectsStefan Beller Thu, 19 Jan 2017 20:29:41 +0000 (12:29 -0800)

contrib: remove git-convert-objects

git-convert-objects, originally named git-convert-cache was used in
early 2005 to convert ancient repositories where objects are named
after the hash of their compressed contents to the current object
naming sheme where they are named after the hash of their pre-compression
contents.

By now the need for conversion of the very early repositories is
less relevant, we no longer need to keep it in contrib; remove it.

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

remote rename: more carefully determine whether a remot... Johannes Schindelin Thu, 19 Jan 2017 21:20:02 +0000 (22:20 +0100)

remote rename: more carefully determine whether a remote is configured

One of the really nice features of the ~/.gitconfig file is that users
can override defaults by their own preferred settings for all of their
repositories.

One such default that some users like to override is whether the
"origin" remote gets auto-pruned or not. The user would simply call

git config --global remote.origin.prune true

and from now on all "origin" remotes would be pruned automatically when
fetching into the local repository.

There is just one catch: now Git thinks that the "origin" remote is
configured, even if the repository config has no [remote "origin"]
section at all, as it does not realize that the "prune" setting was
configured globally and that there really is no "origin" remote
configured in this repository.

That is a problem e.g. when renaming a remote to a new name, when Git
may be fooled into thinking that there is already a remote of that new
name.

Let's fix this by paying more attention to *where* the remote settings
came from: if they are configured in the local repository config, we
must not overwrite them. If they were configured elsewhere, we cannot
overwrite them to begin with, as we only write the repository config.

There is only one caller of remote_is_configured() (in `git fetch`) that
may want to take remotes into account even if they were configured
outside the repository config; all other callers essentially try to
prevent the Git command from overwriting settings in the repository
config.

To accommodate that fact, the remote_is_configured() function now
requires a parameter that states whether the caller is interested in all
remotes, or only in those that were configured in the repository config.

Many thanks to Jeff King whose tireless review helped with settling for
nothing less than the current strategy.

This fixes https://github.com/git-for-windows/git/issues/888

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

remote rename: demonstrate a bogus "remote exists" bugJohannes Schindelin Thu, 19 Jan 2017 21:19:58 +0000 (22:19 +0100)

remote rename: demonstrate a bogus "remote exists" bug

Some users like to set `remote.origin.prune = true` in their ~/.gitconfig
so that all of their repositories use that default.

However, our code is ill-prepared for this, mistaking that single entry to
mean that there is already a remote of the name "origin", even if there is
not.

This patch adds a test case demonstrating this issue.

Reported by Andrew Arnott.

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

difftool: retire the scripted versionJohannes Schindelin Thu, 19 Jan 2017 20:30:40 +0000 (21:30 +0100)

difftool: retire the scripted version

It served its purpose, but now we have a builtin difftool. Time for the
Perl script to enjoy Florida.

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

difftool: implement the functionality in the builtinJohannes Schindelin Thu, 19 Jan 2017 20:30:36 +0000 (21:30 +0100)

difftool: implement the functionality in the builtin

This patch gives life to the skeleton added in the previous patch.

The motivation for converting the difftool is that Perl scripts are not at
all native on Windows, and that `git difftool` therefore is pretty slow on
that platform, when there is no good reason for it to be slow.

In addition, Perl does not really have access to Git's internals. That
means that any script will always have to jump through unnecessary
hoops, and it will often need to perform unnecessary work (e.g. when
reading the entire config every time `git config` is called to query a
single config value).

The current version of the builtin difftool does not, however, make full
use of the internals but instead chooses to spawn a couple of Git
processes, still, to make for an easier conversion. There remains a lot
of room for improvement, left later.

Note: to play it safe, the original difftool is still called unless the
config setting difftool.useBuiltin is set to true.

The reason: this new, experimental, builtin difftool was shipped as part
of Git for Windows v2.11.0, to allow for easier large-scale testing, but
of course as an opt-in feature.

The speedup is actually more noticable on Linux than on Windows: a quick
test shows that t7800-difftool.sh runs in (2.183s/0.052s/0.108s)
(real/user/sys) in a Linux VM, down from (6.529s/3.112s/0.644s), while on
Windows, it is (36.064s/2.730s/7.194s), down from (47.637s/2.407s/6.863s).
The culprit is most likely the overhead incurred from *still* having to
shell out to mergetool-lib.sh and difftool--helper.sh.

Still, it is an improvement.

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

documentation: retire unfinished documentationStefan Beller Thu, 19 Jan 2017 03:18:54 +0000 (19:18 -0800)

documentation: retire unfinished documentation

When looking for documentation for a specific function, you may be tempted
to run

git -C Documentation grep index_name_pos

only to find the file technical/api-in-core-index.txt, which doesn't
help for understanding the given function. It would be better to not find
these functions in the documentation, such that people directly dive into
the code instead.

In the previous patches we have documented
* index_name_pos()
* remove_index_entry_at()
* add_[file_]to_index()
in cache.h

We already have documentation for:
* add_index_entry()
* read_index()

Which leaves us with a TODO for:
* cache -> the_index macros
* refresh_index()
* discard_index()
* ie_match_stat() and ie_modified(); how they are different and when to
use which.
* write_index() that was renamed to write_locked_index
* cache_tree_invalidate_path()
* cache_tree_update()

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

cache.h: document add_[file_]to_indexStefan Beller Thu, 19 Jan 2017 03:18:53 +0000 (19:18 -0800)

cache.h: document add_[file_]to_index

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>

cache.h: document remove_index_entry_atStefan Beller Thu, 19 Jan 2017 03:18:52 +0000 (19:18 -0800)

cache.h: document remove_index_entry_at

Do this by moving the existing documentation from
read-cache.c to cache.h.

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

cache.h: document index_name_posStefan Beller Thu, 19 Jan 2017 03:18:51 +0000 (19:18 -0800)

cache.h: document index_name_pos

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

color.c: trim leading spaces in color_parse_mem()Nguyễn Thái Ngọc Duy Thu, 19 Jan 2017 11:41:22 +0000 (18:41 +0700)

color.c: trim leading spaces in color_parse_mem()

Normally color_parse_mem() is called from config parser which trims the
leading spaces already. The new caller in the next patch won't. Let's be
tidy and trim leading spaces too (we already trim trailing spaces
after a word).

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

color.c: fix color_parse_mem() with value_len == 0Nguyễn Thái Ngọc Duy Thu, 19 Jan 2017 11:41:21 +0000 (18:41 +0700)

color.c: fix color_parse_mem() with value_len == 0

In this code we want to match the word "reset". If len is zero,
strncasecmp() will return zero and we incorrectly assume it's "reset" as
a result.

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

clear_delta_base_cache(): don't modify hashmap while... Jeff King Thu, 19 Jan 2017 16:33:50 +0000 (11:33 -0500)

clear_delta_base_cache(): don't modify hashmap while iterating

On Thu, Jan 19, 2017 at 03:03:46PM +0100, Ulrich Spörlein wrote:

> > I suspect the patch below may fix things for you. It works around it by
> > walking over the lru list (either is fine, as they both contain all
> > entries, and since we're clearing everything, we don't care about the
> > order).
>
> Confirmed. With the patch applied, I can import the whole 55G in one go
> without any crashes or aborts. Thanks much!

Thanks. Here it is rolled up with a commit message.

-- >8 --
Subject: clear_delta_base_cache(): don't modify hashmap while iterating

Removing entries while iterating causes fast-import to
access an already-freed `struct packed_git`, leading to
various confusing errors.

What happens is that clear_delta_base_cache() drops the
whole contents of the cache by iterating over the hashmap,
calling release_delta_base_cache() on each entry. That
function removes the item from the hashmap. The hashmap code
may then shrink the table, but the hashmap_iter struct
retains an offset from the old table.

As a result, the next call to hashmap_iter_next() may claim
that the iteration is done, even though some items haven't
been visited.

The only caller of clear_delta_base_cache() is fast-import,
which wants to clear the cache because it is discarding the
packed_git struct for its temporary pack. So by failing to
remove all of the entries, we still have references to the
freed packed_git.

To make things even more confusing, this doesn't seem to
trigger with the test suite, because it depends on
complexities like the size of the hash table, which entries
got cleared, whether we try to access them before they're
evicted from the cache, etc.

So I've been able to identify the problem with large
imports like freebsd's svn import, or a fast-export of
linux.git. But nothing that would be reasonable to run as
part of the normal test suite.

We can fix this easily by iterating over the lru linked list
instead of the hashmap. They both contain the same entries,
and we can use the "safe" variant of the list iterator,
which exists for exactly this case.

Let's also add a warning to the hashmap API documentation to
reduce the chances of getting bit by this again.

Reported-by: Ulrich Spörlein <uqs@freebsd.org>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sixth batch for 2.12Junio C Hamano Wed, 18 Jan 2017 23:15:36 +0000 (15:15 -0800)

Sixth batch for 2.12

Merge branch 'sb/remove-gitview'Junio C Hamano Wed, 18 Jan 2017 23:12:18 +0000 (15:12 -0800)

Merge branch 'sb/remove-gitview'

Retire long unused/unmaintained gitview from the contrib/ area.

* sb/remove-gitview:
doc: git-gui browser does not default to HEAD
doc: gitk: add the upstream repo location
doc: gitk: remove gitview reference
contrib: remove gitview

Merge branch 'js/asciidoctor-tweaks'Junio C Hamano Wed, 18 Jan 2017 23:12:17 +0000 (15:12 -0800)

Merge branch 'js/asciidoctor-tweaks'

Adjust documentation to help AsciiDoctor render better while not
breaking the rendering done by AsciiDoc.

* js/asciidoctor-tweaks:
asciidoctor: fix user-manual to be built by `asciidoctor`
giteveryday: unbreak rendering with AsciiDoctor

Merge branch 'sb/unpack-trees-cleanup'Junio C Hamano Wed, 18 Jan 2017 23:12:17 +0000 (15:12 -0800)

Merge branch 'sb/unpack-trees-cleanup'

Code cleanup.

* sb/unpack-trees-cleanup:
unpack-trees: factor progress setup out of check_updates
unpack-trees: remove unneeded continue
unpack-trees: move checkout state into check_updates

Merge branch 'rh/mergetool-regression-fix'Junio C Hamano Wed, 18 Jan 2017 23:12:16 +0000 (15:12 -0800)

Merge branch 'rh/mergetool-regression-fix'

"git mergetool" without any pathspec on the command line that is
run from a subdirectory became no-op in Git v2.11 by mistake, which
has been fixed.

* rh/mergetool-regression-fix:
mergetool: fix running in subdir when rerere enabled
mergetool: take the "-O" out of $orderfile
t7610: add test case for rerere+mergetool+subdir bug
t7610: spell 'git reset --hard' consistently
t7610: don't assume the checked-out commit
t7610: always work on a test-specific branch
t7610: delete some now-unnecessary 'git reset --hard' lines
t7610: run 'git reset --hard' after each test to clean up
t7610: don't rely on state from previous test
t7610: use test_when_finished for cleanup tasks
t7610: move setup code to the 'setup' test case
t7610: update branch names to match test number
rev-parse doc: pass "--" to rev-parse in the --prefix example
.mailmap: record canonical email for Richard Hansen

Merge branch 'bw/realpath-wo-chdir'Junio C Hamano Wed, 18 Jan 2017 23:12:16 +0000 (15:12 -0800)

Merge branch 'bw/realpath-wo-chdir'

The implementation of "real_path()" was to go there with chdir(2)
and call getcwd(3), but this obviously wouldn't be usable in a
threaded environment. Rewrite it to manually resolve relative
paths including symbolic links in path components.

* bw/realpath-wo-chdir:
real_path: set errno when max number of symlinks is exceeded
real_path: prevent redefinition of MAXSYMLINKS

Merge branch 'jk/execv-dashed-external'Junio C Hamano Wed, 18 Jan 2017 23:12:16 +0000 (15:12 -0800)

Merge branch 'jk/execv-dashed-external'

Typing ^C to pager, which usually does not kill it, killed Git and
took the pager down as a collateral damage in certain process-tree
structure. This has been fixed.

* jk/execv-dashed-external:
execv_dashed_external: wait for child on signal death
execv_dashed_external: stop exiting with negative code
execv_dashed_external: use child_process struct

Merge branch 'sp/cygwin-build-fixes'Junio C Hamano Wed, 18 Jan 2017 23:12:15 +0000 (15:12 -0800)

Merge branch 'sp/cygwin-build-fixes'

Build updates for Cygwin.

* sp/cygwin-build-fixes:
Makefile: put LIBS after LDFLAGS for imap-send
Makefile: POSIX windres

Merge branch 'sb/pathspec-errors'Junio C Hamano Wed, 18 Jan 2017 23:12:15 +0000 (15:12 -0800)

Merge branch 'sb/pathspec-errors'

Running "git add a/b" when "a" is a submodule correctly errored
out, but without a meaningful error message.

* sb/pathspec-errors:
pathspec: give better message for submodule related pathspec error

Merge branch 'pb/test-must-fail-is-for-git'Junio C Hamano Wed, 18 Jan 2017 23:12:15 +0000 (15:12 -0800)

Merge branch 'pb/test-must-fail-is-for-git'

Test cleanup.

* pb/test-must-fail-is-for-git:
t9813: avoid using pipes
don't use test_must_fail with grep

Merge branch 'bw/pathspec-cleanup'Junio C Hamano Wed, 18 Jan 2017 23:12:14 +0000 (15:12 -0800)

Merge branch 'bw/pathspec-cleanup'

Code clean-up in the pathspec API.

* bw/pathspec-cleanup:
pathspec: rename prefix_pathspec to init_pathspec_item
pathspec: small readability changes
pathspec: create strip submodule slash helpers
pathspec: create parse_element_magic helper
pathspec: create parse_long_magic function
pathspec: create parse_short_magic function
pathspec: factor global magic into its own function
pathspec: simpler logic to prefix original pathspec elements
pathspec: always show mnemonic and name in unsupported_magic
pathspec: remove unused variable from unsupported_magic
pathspec: copy and free owned memory
pathspec: remove the deprecated get_pathspec function
ls-tree: convert show_recursive to use the pathspec struct interface
dir: convert fill_directory to use the pathspec struct interface
dir: remove struct path_simplify
mv: remove use of deprecated 'get_pathspec()'

Merge branch 'js/mingw-test-push-unc-path'Junio C Hamano Wed, 18 Jan 2017 23:12:14 +0000 (15:12 -0800)

Merge branch 'js/mingw-test-push-unc-path'

"git push \\server\share\dir" has recently regressed and then
fixed. A test has retroactively been added for this breakage.

* js/mingw-test-push-unc-path:
mingw: add a regression test for pushing to UNC paths

Merge branch 'sb/submodule-cleanup-export-git-dir-env'Junio C Hamano Wed, 18 Jan 2017 23:12:14 +0000 (15:12 -0800)

Merge branch 'sb/submodule-cleanup-export-git-dir-env'

Code cleanup.

* sb/submodule-cleanup-export-git-dir-env:
submodule.c: use GIT_DIR_ENVIRONMENT consistently

Merge branch 'km/branch-get-push-while-detached'Junio C Hamano Wed, 18 Jan 2017 23:12:14 +0000 (15:12 -0800)

Merge branch 'km/branch-get-push-while-detached'

"git <cmd> @{push}" on a detached HEAD used to segfault; it has
been corrected to error out with a message.

* km/branch-get-push-while-detached:
branch_get_push: do not segfault when HEAD is detached

Merge branch 'jk/rebase-i-squash-count-fix'Junio C Hamano Wed, 18 Jan 2017 23:12:13 +0000 (15:12 -0800)

Merge branch 'jk/rebase-i-squash-count-fix'

"git rebase -i" with a recent update started showing an incorrect
count when squashing more than 10 commits.

* jk/rebase-i-squash-count-fix:
rebase--interactive: count squash commits above 10 correctly

Merge branch 'jk/blame-fixes'Junio C Hamano Wed, 18 Jan 2017 23:12:13 +0000 (15:12 -0800)

Merge branch 'jk/blame-fixes'

"git blame --porcelain" misidentified the "previous" <commit, path>
pair (aka "source") when contents came from two or more files.

* jk/blame-fixes:
blame: output porcelain "previous" header for each file
blame: handle --no-abbrev
blame: fix alignment with --abbrev=40

Merge branch 'jk/archive-zip-userdiff-config'Junio C Hamano Wed, 18 Jan 2017 23:12:12 +0000 (15:12 -0800)

Merge branch 'jk/archive-zip-userdiff-config'

"git archive" did not read the standard configuration files, and
failed to notice a file that is marked as binary via the userdiff
driver configuration.

* jk/archive-zip-userdiff-config:
archive-zip: load userdiff config

Merge branch 'dt/disable-bitmap-in-auto-gc'Junio C Hamano Wed, 18 Jan 2017 23:12:12 +0000 (15:12 -0800)

Merge branch 'dt/disable-bitmap-in-auto-gc'

It is natural that "git gc --auto" may not attempt to pack
everything into a single pack, and there is no point in warning
when the user has configured the system to use the pack bitmap,
leading to disabling further "gc".

* dt/disable-bitmap-in-auto-gc:
repack: die on incremental + write-bitmap-index
auto gc: don't write bitmaps for incremental repacks

Merge branch 'ls/p4-retry-thrice'Junio C Hamano Wed, 18 Jan 2017 23:12:12 +0000 (15:12 -0800)

Merge branch 'ls/p4-retry-thrice'

A recent updates to "git p4" was not usable for older p4 but it
could be made to work with minimum changes. Do so.

* ls/p4-retry-thrice:
git-p4: do not pass '-r 0' to p4 commands

Merge branch 'sb/submodule-rm-absorb'Junio C Hamano Wed, 18 Jan 2017 23:12:11 +0000 (15:12 -0800)

Merge branch 'sb/submodule-rm-absorb'

"git rm" used to refuse to remove a submodule when it has its own
git repository embedded in its working tree. It learned to move
the repository away to $GIT_DIR/modules/ of the superproject
instead, and allow the submodule to be deleted (as long as there
will be no loss of local modifications, that is).

* sb/submodule-rm-absorb:
rm: absorb a submodules git dir before deletion
submodule: rename and add flags to ok_to_remove_submodule
submodule: modernize ok_to_remove_submodule to use argv_array
submodule.h: add extern keyword to functions

Merge branch 'bw/grep-recurse-submodules'Junio C Hamano Wed, 18 Jan 2017 23:12:11 +0000 (15:12 -0800)

Merge branch 'bw/grep-recurse-submodules'

"git grep" has been taught to optionally recurse into submodules.

* bw/grep-recurse-submodules:
grep: search history of moved submodules
grep: enable recurse-submodules to work on <tree> objects
grep: optionally recurse into submodules
grep: add submodules as a grep source type
submodules: load gitmodules file from commit sha1
submodules: add helper to determine if a submodule is initialized
submodules: add helper to determine if a submodule is populated
real_path: canonicalize directory separators in root parts
real_path: have callers use real_pathdup and strbuf_realpath
real_path: create real_pathdup
real_path: convert real_path_internal to strbuf_realpath
real_path: resolve symlinks by hand

mingw: follow-up to "replace isatty() hack"Johannes Schindelin Wed, 18 Jan 2017 12:14:35 +0000 (13:14 +0100)

mingw: follow-up to "replace isatty() hack"

The version of the "replace isatty() hack" that got merged a few
weeks ago did not actually reflect the latest iteration of the patch
series: v3 was sent out with these changes, as requested by the
reviewer Johannes Sixt:

- reworded the comment about "recycling handles"

- moved the reassignment of the `console` variable before the dup2()
call so that it is valid at all times

- removed the "handle = INVALID_HANDLE_VALUE" assignment, as the local
variable `handle` is not used afterwards anyway

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

t/t7004-tag: Add --format specifier testsSantiago Torres Tue, 17 Jan 2017 23:37:23 +0000 (18:37 -0500)

t/t7004-tag: Add --format specifier tests

tag -v now supports --format specifiers to inspect the contents of a tag
upon verification. Add two tests to ensure this behavior is respected in
future changes.

Signed-off-by: Santiago Torres <santiago@nyu.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t7030-verify-tag: Add --format specifier testsSantiago Torres Tue, 17 Jan 2017 23:37:22 +0000 (18:37 -0500)

t/t7030-verify-tag: Add --format specifier tests

Verify-tag now provides --format specifiers to inspect and ensure the
contents of the tag are proper. We add two tests to ensure this
functionality works as expected: the return value should indicate if
verification passed, and the format specifiers must be respected.

Signed-off-by: Santiago Torres <santiago@nyu.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/tag: add --format argument for tag -vLukas Puehringer Tue, 17 Jan 2017 23:37:21 +0000 (18:37 -0500)

builtin/tag: add --format argument for tag -v

Adding --format to git tag -v mutes the default output of the GPG
verification and instead prints the formatted tag object.
This allows callers to cross-check the tagname from refs/tags with
the tagname from the tag object header upon GPG verification.

The callback function for for_each_tag_name() didn't allow callers to
pass custom data to their callback functions. Add a new opaque pointer
to each_tag_name_fn's parameter to allow this.

Signed-off-by: Lukas Puehringer <luk.puehringer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://ozlabs.org/~paulus/gitkJunio C Hamano Wed, 18 Jan 2017 18:27:59 +0000 (10:27 -0800)

Merge git://ozlabs.org/~paulus/gitk

* 'master' of git://ozlabs.org/~paulus/gitk:
gitk: Remove translated message from comments
gitk: ru.po: Update Russian translation
gitk: Update copyright notice to 2016
gitk: Clear array 'commitinfo' on reload
gitk: Remove closed file descriptors from $blobdifffd
gitk: Turn off undo manager in the text widget
gitk: Fix Japanese translation for "marked commit"
gitk: Fix missing commits when using -S or -G
gitk: Use explicit RGB green instead of "lime"
gitk: Add Portuguese translation
gitk: Makefile: create install bin directory
gitk: Include commit title in branch dialog
gitk: Allow checking out a remote branch
gitk: Add a 'rename' option to the branch context menu

gitk: Remove translated message from commentsDavid Aguilar Wed, 18 Jan 2017 03:52:45 +0000 (19:52 -0800)

gitk: Remove translated message from comments

"make update-po" fails because a previously untranslated string
has now been translated:

Updating po/sv.po
po/sv.po:1388: duplicate message definition...
po/sv.po:380: ...this is the location of the first definition

Remove the duplicate message definition.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>

builtin/verify-tag: add --format to verify-tagSantiago Torres Tue, 17 Jan 2017 23:37:20 +0000 (18:37 -0500)

builtin/verify-tag: add --format to verify-tag

Callers of verify-tag may want to cross-check the tagname from refs/tags
with the tagname from the tag object header upon GPG verification. This
is to avoid tag refs that point to an incorrect object.

Add a --format parameter to git verify-tag to print the formatted tag
object header in addition to or instead of the --verbose or --raw GPG
verification output.

Signed-off-by: Santiago Torres <santiago@nyu.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: add function to print single ref_array_itemLukas Puehringer Tue, 17 Jan 2017 23:37:19 +0000 (18:37 -0500)

ref-filter: add function to print single ref_array_item

ref-filter functions are useful for printing git object information
using a format specifier. However, some other modules may not want to use
this functionality on a ref-array but only print a single item.

Expose a pretty_print_ref function to create, pretty print and free
individual ref-items.

Signed-off-by: Lukas Puehringer <luk.puehringer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flagLukas Puehringer Tue, 17 Jan 2017 23:37:18 +0000 (18:37 -0500)

gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag

Functions that print git object information may require that the
gpg-interface functions be silent. Add GPG_VERIFY_OMIT_STATUS flag and
prevent print_signature_buffer from being called if flag is set.

Signed-off-by: Lukas Puehringer <luk.puehringer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes: drop merge-later comments for maintJunio C Hamano Tue, 17 Jan 2017 23:27:13 +0000 (15:27 -0800)

RelNotes: drop merge-later comments for maint

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

Merge branch 'maint'Junio C Hamano Tue, 17 Jan 2017 23:20:01 +0000 (15:20 -0800)

Merge branch 'maint'

Almost ready for 2.11.1Junio C Hamano Tue, 17 Jan 2017 22:48:44 +0000 (14:48 -0800)

Almost ready for 2.11.1

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

Merge branch 'mm/gc-safety-doc' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:11 +0000 (15:19 -0800)

Merge branch 'mm/gc-safety-doc' into maint

Doc update.

* mm/gc-safety-doc:
git-gc.txt: expand discussion of races with other processes

Merge branch 'mm/push-social-engineering-attack-doc... Junio C Hamano Tue, 17 Jan 2017 23:19:10 +0000 (15:19 -0800)

Merge branch 'mm/push-social-engineering-attack-doc' into maint

Doc update on fetching and pushing.

* mm/push-social-engineering-attack-doc:
doc: mention transfer data leaks in more places

Merge branch 'jt/fetch-no-redundant-tag-fetch-map'... Junio C Hamano Tue, 17 Jan 2017 23:19:09 +0000 (15:19 -0800)

Merge branch 'jt/fetch-no-redundant-tag-fetch-map' into maint

Code cleanup to avoid using redundant refspecs while fetching with
the --tags option.

* jt/fetch-no-redundant-tag-fetch-map:
fetch: do not redundantly calculate tag refmap

Merge branch 'ls/filter-process' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:08 +0000 (15:19 -0800)

Merge branch 'ls/filter-process' into maint

Doc update.

* ls/filter-process:
t0021: fix flaky test
docs: warn about possible '=' in clean/smudge filter process values

Merge branch 'kh/tutorial-grammofix' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:08 +0000 (15:19 -0800)

Merge branch 'kh/tutorial-grammofix' into maint

* kh/tutorial-grammofix:
doc: omit needless "for"
doc: make the intent of sentence clearer
doc: add verb in front of command to run
doc: add articles (grammar)

Merge branch 'lr/doc-fix-cet' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:07 +0000 (15:19 -0800)

Merge branch 'lr/doc-fix-cet' into maint

* lr/doc-fix-cet:
date-formats.txt: Typo fix

Merge branch 'sb/t3600-cleanup' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:06 +0000 (15:19 -0800)

Merge branch 'sb/t3600-cleanup' into maint

Code cleanup.

* sb/t3600-cleanup:
t3600: slightly modernize style
t3600: remove useless redirect

Merge branch 'jk/readme-gmane-is-no-more' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:05 +0000 (15:19 -0800)

Merge branch 'jk/readme-gmane-is-no-more' into maint

* jk/readme-gmane-is-no-more:
README: replace gmane link with public-inbox

Merge branch 'sb/unpack-trees-grammofix' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:05 +0000 (15:19 -0800)

Merge branch 'sb/unpack-trees-grammofix' into maint

* sb/unpack-trees-grammofix:
unpack-trees: fix grammar for untracked files in directories

Merge branch 'ls/t0021-fixup' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:04 +0000 (15:19 -0800)

Merge branch 'ls/t0021-fixup' into maint

* ls/t0021-fixup:
t0021: minor filter process test cleanup

Merge branch 'ak/lazy-prereq-mktemp' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:04 +0000 (15:19 -0800)

Merge branch 'ak/lazy-prereq-mktemp' into maint

Test code clean-up.

* ak/lazy-prereq-mktemp:
t7610: clean up foo.XXXXXX tmpdir

Merge branch 'nd/qsort-in-merge-recursive' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:03 +0000 (15:19 -0800)

Merge branch 'nd/qsort-in-merge-recursive' into maint

Code simplification.

* nd/qsort-in-merge-recursive:
merge-recursive.c: use string_list_sort instead of qsort

Merge branch 'dt/smart-http-detect-server-going-away... Junio C Hamano Tue, 17 Jan 2017 23:19:03 +0000 (15:19 -0800)

Merge branch 'dt/smart-http-detect-server-going-away' into maint

When the http server gives an incomplete response to a smart-http
rpc call, it could lead to client waiting for a full response that
will never come. Teach the client side to notice this condition
and abort the transfer.

An improvement counterproposal has failed.
cf. <20161114194049.mktpsvgdhex2f4zv@sigill.intra.peff.net>

* dt/smart-http-detect-server-going-away:
upload-pack: optionally allow fetching any sha1
remote-curl: don't hang when a server dies before any output

Merge branch 'mk/mingw-winansi-ttyname-termination... Junio C Hamano Tue, 17 Jan 2017 23:19:03 +0000 (15:19 -0800)

Merge branch 'mk/mingw-winansi-ttyname-termination-fix' into maint

A potential but unlikely buffer overflow in Windows port has been
fixed.

* mk/mingw-winansi-ttyname-termination-fix:
mingw: consider that UNICODE_STRING::Length counts bytes

Merge branch 'gv/p4-multi-path-commit-fix' into maintJunio C Hamano Tue, 17 Jan 2017 23:19:02 +0000 (15:19 -0800)

Merge branch 'gv/p4-multi-path-commit-fix' into maint

"git p4" that tracks multile p4 paths imported a single changelist
that touches files in these multiple paths as one commit, followed
by many empty commits. This has been fixed.

* gv/p4-multi-path-commit-fix:
git-p4: fix multi-path changelist empty commits

Merge branch 'jk/difftool-in-subdir' into maintJunio C Hamano Tue, 17 Jan 2017 23:11:08 +0000 (15:11 -0800)

Merge branch 'jk/difftool-in-subdir' into maint

Even though an fix was attempted in Git 2.9.3 days, but running
"git difftool --dir-diff" from a subdirectory never worked. This
has been fixed.

* jk/difftool-in-subdir:
difftool: rename variables for consistency
difftool: chdir as early as possible
difftool: sanitize $workdir as early as possible
difftool: fix dir-diff index creation when in a subdirectory

Merge branch 'ld/p4-compare-dir-vs-symlink' into maintJunio C Hamano Tue, 17 Jan 2017 23:11:07 +0000 (15:11 -0800)

Merge branch 'ld/p4-compare-dir-vs-symlink' into maint

"git p4" misbehaved when swapping a directory and a symbolic link.

* ld/p4-compare-dir-vs-symlink:
git-p4: avoid crash adding symlinked directory

Merge branch 'jc/push-default-explicit' into maintJunio C Hamano Tue, 17 Jan 2017 23:11:07 +0000 (15:11 -0800)

Merge branch 'jc/push-default-explicit' into maint

A lazy "git push" without refspec did not internally use a fully
specified refspec to perform 'current', 'simple', or 'upstream'
push, causing unnecessary "ambiguous ref" errors.

* jc/push-default-explicit:
push: test pushing ambiguously named branches
push: do not use potentially ambiguous default refspec