gitweb.git
Merge branch 'nd/worktree-lock'Junio C Hamano Thu, 17 Nov 2016 21:45:21 +0000 (13:45 -0800)

Merge branch 'nd/worktree-lock'

Typofix.

* nd/worktree-lock:
git-worktree.txt: fix typo "to"/"two", and add comma

git-worktree.txt: fix typo "to"/"two", and add commaBen North Sat, 12 Nov 2016 08:55:16 +0000 (08:55 +0000)

git-worktree.txt: fix typo "to"/"two", and add comma

Signed-off-by: Ben North <ben@redfrontdoor.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.11.0-rc1 v2.11.0-rc1Junio C Hamano Fri, 11 Nov 2016 22:04:32 +0000 (14:04 -0800)

Git 2.11.0-rc1

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

Merge branch 'rt/fetch-pack-error-message-fix'Junio C Hamano Fri, 11 Nov 2016 21:56:31 +0000 (13:56 -0800)

Merge branch 'rt/fetch-pack-error-message-fix'

An error message in fetch-pack executable that was newly marked for
translation was misspelt, which has been fixed.

* rt/fetch-pack-error-message-fix:
fetch-pack.c: correct command at the beginning of an error message

Merge branch 'ps/common-info-doc'Junio C Hamano Fri, 11 Nov 2016 21:56:31 +0000 (13:56 -0800)

Merge branch 'ps/common-info-doc'

Doc fix.

* ps/common-info-doc:
doc: fix location of 'info/' with $GIT_COMMON_DIR

Merge branch 'js/pwd-var-vs-pwd-cmd-fix'Junio C Hamano Fri, 11 Nov 2016 21:56:30 +0000 (13:56 -0800)

Merge branch 'js/pwd-var-vs-pwd-cmd-fix'

Last minute fixes to two fixups merged to 'master' recently.

* js/pwd-var-vs-pwd-cmd-fix:
t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables

Merge branch 'ls/macos-update'Junio C Hamano Fri, 11 Nov 2016 21:56:30 +0000 (13:56 -0800)

Merge branch 'ls/macos-update'

Portability update and workaround for builds on recent Mac OS X.

* ls/macos-update:
travis-ci: disable GIT_TEST_HTTPD for macOS
Makefile: set NO_OPENSSL on macOS by default

Merge branch 'js/prepare-sequencer'Junio C Hamano Fri, 11 Nov 2016 21:56:30 +0000 (13:56 -0800)

Merge branch 'js/prepare-sequencer'

Silence a clang warning introduced by a recently graduated topic.

* js/prepare-sequencer:
sequencer: silence -Wtautological-constant-out-of-range-compare

Merge branch 'ls/filter-process'Junio C Hamano Fri, 11 Nov 2016 21:56:30 +0000 (13:56 -0800)

Merge branch 'ls/filter-process'

Test portability improvements and optimization for an
already-graduated topic.

* ls/filter-process:
t0021: remove debugging cruft

Merge branch 'as/merge-attr-sleep'Junio C Hamano Fri, 11 Nov 2016 21:56:30 +0000 (13:56 -0800)

Merge branch 'as/merge-attr-sleep'

Fix for a racy false-positive test failure.

* as/merge-attr-sleep:
t6026: clarify the point of "kill $(cat sleep.pid)"
t6026: ensure that long-running script really is
Revert "t6026-merge-attr: don't fail if sleep exits early"
Revert "t6026-merge-attr: ensure that the merge driver was called"
t6026-merge-attr: ensure that the merge driver was called
t6026-merge-attr: don't fail if sleep exits early

fetch-pack.c: correct command at the beginning of an... Ralf Thielow Fri, 11 Nov 2016 17:21:00 +0000 (18:21 +0100)

fetch-pack.c: correct command at the beginning of an error message

One error message in fetch-pack.c uses 'git fetch_pack' at the beginning
which is not a git command. Use 'git fetch-pack' instead.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021: remove debugging cruftJunio C Hamano Fri, 11 Nov 2016 21:07:37 +0000 (13:07 -0800)

t0021: remove debugging cruft

The redirection of the standard error stream to a temporary file is
a leftover cruft during debugging. Remove it.

Besides, it is reported by folks on the Windows that the test is
flaky with this redirection; somebody gets confused and this
merely-redirected-to file gets marked as delete-pending by git.exe
and makes it finish with a non-zero exit status when "git checkout"
finishes. Windows folks may want to figure that one out, but for
the purpose of this test, it shouldn't become a show-stopper.

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

t6026: clarify the point of "kill $(cat sleep.pid)"Johannes Sixt Fri, 11 Nov 2016 20:24:44 +0000 (21:24 +0100)

t6026: clarify the point of "kill $(cat sleep.pid)"

We lengthened the time the leftover process sleeps in the previous
commit to make sure it will be there while 'git merge' runs and
finishes. It therefore needs to be killed before leaving the test.
And it needs to be killed even when 'git merge' fails, so it has to
be triggered via test_when_finished mechanism.

Explain all that in a large comment, and move the use site of
test_when_finished to immediately before 'git merge' invocation,
where the process is spawned.

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

t0021, t5615: use $PWD instead of $(pwd) in PATH-like... Johannes Sixt Fri, 11 Nov 2016 17:31:48 +0000 (18:31 +0100)

t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables

We have to use $PWD instead of $(pwd) because on Windows the latter
would add a C: style path to bash's Unix-style $PATH variable, which
becomes confused by the colon after the drive letter. ($PWD is a
Unix-style path.)

In the case of GIT_ALTERNATE_OBJECT_DIRECTORIES, bash on Windows
assembles a Unix-style path list with the colon as separators. It
converts the value to a Windows-style path list with the semicolon as
path separator when it forwards the variable to git.exe. The same
confusion happens when bash's original value is contaminated with
Windows style paths.

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

doc: fix location of 'info/' with $GIT_COMMON_DIRPatrick Steinhardt Fri, 11 Nov 2016 11:23:32 +0000 (12:23 +0100)

doc: fix location of 'info/' with $GIT_COMMON_DIR

With the introduction of the $GIT_COMMON_DIR variable, the
repository layout manual was changed to reflect the location for
many files in case the variable is set. While adding the new
locations, one typo snuck in regarding the location of the
'info/' folder, which is falsely claimed to reside at
"$GIT_COMMON_DIR/index".

Fix the typo to point to "$GIT_COMMON_DIR/info/" instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6026: ensure that long-running script really isJohannes Schindelin Wed, 9 Nov 2016 13:51:22 +0000 (14:51 +0100)

t6026: ensure that long-running script really is

When making sure that background tasks are cleaned up in 5babb5b
(t6026-merge-attr: clean up background process at end of test case,
2016-09-07), we considered to let the background task sleep longer, just
to be certain that it will still be running when we want to kill it
after the test.

Sadly, the assumption appears not to hold true that the test case passes
quickly enough to kill the background task within a second.

Simply increase it to an hour. No system can be possibly slow enough to
make above-mentioned assumption incorrect.

Reported by Andreas Schwab.

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

Revert "t6026-merge-attr: don't fail if sleep exits... Junio C Hamano Thu, 10 Nov 2016 23:55:13 +0000 (15:55 -0800)

Revert "t6026-merge-attr: don't fail if sleep exits early"

This reverts commit 734fde2d7167e4b20d2ff6062ade3846949b0741.

The point of the test is that the stray process was still running
when 'git merge' did its thing through its completion, so a failure
to "kill" it means we didn't give a condition to the test to trigger
a possible future breakage. Appending "|| :" to the "kill" is
sweeping a test-bug under the rug.

Revert "t6026-merge-attr: ensure that the merge driver... Junio C Hamano Thu, 10 Nov 2016 23:54:12 +0000 (15:54 -0800)

Revert "t6026-merge-attr: ensure that the merge driver was called"

This reverts commit c1e0dc59bddce765761a6f863c66ee0cd4b2ca09.

We are not interested in the stray process in the merge driver
started; we want it to be still around.

Merge branch 'jk/alt-odb-cleanup'Junio C Hamano Thu, 10 Nov 2016 21:17:30 +0000 (13:17 -0800)

Merge branch 'jk/alt-odb-cleanup'

Fix a corner-case regression in a topic that graduated during the
v2.11 cycle.

* jk/alt-odb-cleanup:
alternates: re-allow relative paths from environment

Merge branch 'jk/filter-process-fix'Junio C Hamano Thu, 10 Nov 2016 21:17:30 +0000 (13:17 -0800)

Merge branch 'jk/filter-process-fix'

Test portability improvements and cleanups for t0021.

* jk/filter-process-fix:
t0021: fix filehandle usage on older perl
t0021: use $PERL_PATH for rot13-filter.pl
t0021: put $TEST_ROOT in $PATH
t0021: use write_script to create rot13 shell script

Merge branch 'ls/filter-process'Junio C Hamano Thu, 10 Nov 2016 21:17:30 +0000 (13:17 -0800)

Merge branch 'ls/filter-process'

Test portability improvements and optimization for an
already-graduated topic.

* ls/filter-process:
t0021: compute file size with a single process instead of a pipeline
t0021: expect more variations in the output of uniq -c

t6026-merge-attr: ensure that the merge driver was... Andreas Schwab Thu, 10 Nov 2016 08:31:18 +0000 (09:31 +0100)

t6026-merge-attr: ensure that the merge driver was called

Explicitly check for the existence of the pid file to test that the
merge driver was actually called.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

travis-ci: disable GIT_TEST_HTTPD for macOSLars Schneider Mon, 17 Oct 2016 00:25:50 +0000 (17:25 -0700)

travis-ci: disable GIT_TEST_HTTPD for macOS

TravisCI changed their default macOS image from 10.10 to 10.11 [1].
Unfortunately the HTTPD tests do not run out of the box using the
pre-installed Apache web server anymore. Therefore we enable these
tests only for Linux and disable them for macOS.

[1] https://blog.travis-ci.com/2016-10-04-osx-73-default-image-live/

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

Makefile: set NO_OPENSSL on macOS by defaultLars Schneider Sun, 6 Nov 2016 19:35:04 +0000 (20:35 +0100)

Makefile: set NO_OPENSSL on macOS by default

Apple removed the OpenSSL header files in macOS 10.11 and above. OpenSSL
was deprecated since macOS 10.7.

Set `NO_OPENSSL` and `APPLE_COMMON_CRYPTO` to `YesPlease` as default for
macOS. It is possible to override this and use OpenSSL by defining
`NO_APPLE_COMMON_CRYPTO`.

Original-patch-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: silence -Wtautological-constant-out-of-range... Jeff King Wed, 9 Nov 2016 03:57:28 +0000 (22:57 -0500)

sequencer: silence -Wtautological-constant-out-of-range-compare

When clang compiles sequencer.c, it complains:

sequencer.c:632:14: warning: comparison of constant 2 with
expression of type 'const enum todo_command' is always
true [-Wtautological-constant-out-of-range-compare]
if (command < ARRAY_SIZE(todo_command_strings))

This is because "command" is an enum that may only have two
values (0 and 1) and the array in question has two elements.

As it turns out, clang is actually wrong here, at least
according to its own bug tracker:

https://llvm.org/bugs/show_bug.cgi?id=16154

But it's still worth working around this, as the warning is
present with -Wall, meaning we fail compilation with "make
DEVELOPER=1".

Casting the enum to size_t sufficiently unconfuses clang. As
a bonus, it also catches any possible out-of-bounds access
if the enum takes on a negative value (which shouldn't
happen either, but again, this is a defensive check).

Signed-off-by: Jeff King <peff@peff.net>

t6026-merge-attr: don't fail if sleep exits earlyAndreas Schwab Tue, 8 Nov 2016 17:03:04 +0000 (18:03 +0100)

t6026-merge-attr: don't fail if sleep exits early

Commit 5babb5bdb3 ("t6026-merge-attr: clean up background process at end
of test case") added a kill command to clean up after the test, but this
can fail if the sleep command exits before the cleanup is executed.
Ignore the error from the kill command.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Jeff King <peff@peff.net>

alternates: re-allow relative paths from environmentJeff King Tue, 8 Nov 2016 04:50:17 +0000 (23:50 -0500)

alternates: re-allow relative paths from environment

Commit 670c359da (link_alt_odb_entry: handle normalize_path
errors, 2016-10-03) regressed the handling of relative paths
in the GIT_ALTERNATE_OBJECT_DIRECTORIES variable. It's not
entirely clear this was ever meant to work, but it _has_
worked for several years, so this commit restores the
original behavior.

When we get a path in GIT_ALTERNATE_OBJECT_DIRECTORIES, we
add it the path to the list of alternate object directories
as if it were found in objects/info/alternates, but with one
difference: we do not provide the link_alt_odb_entry()
function with a base for relative paths. That function
doesn't turn it into an absolute path, and we end up feeding
the relative path to the strbuf_normalize_path() function.

Most relative paths break out of the top-level directory
(e.g., "../foo.git/objects"), and thus normalizing fails.
Prior to 670c359da, we simply ignored the error, and due to
the way normalize_path_copy() was implemented it happened to
return the original path in this case. We then accessed the
alternate objects using this relative path.

By storing the relative path in the alt_odb list, the path
is relative to wherever we happen to be at the time we do an
object lookup. That means we look from $GIT_DIR in a bare
repository, and from the top of the worktree in a non-bare
repository.

If this were being designed from scratch, it would make
sense to pick a stable location (probably $GIT_DIR, or even
the object directory) and use that as the relative base,
turning the result into an absolute path. However, given
the history, at this point the minimal fix is to match the
pre-670c359da behavior.

We can do this simply by ignoring the error when we have no
relative base and using the original value (which we now
reliably have, thanks to strbuf_normalize_path()).

That still leaves us with a relative path that foils our
duplicate detection, and may act strangely if we ever
chdir() later in the process. We could solve that by storing
an absolute path based on getcwd(). That may be a good
future direction; for now we'll do just the minimum to fix
the regression.

The new t5615 script demonstrates the fix in its final three
tests. Since we didn't have any tests of the alternates
environment variable at all, it also adds some tests of
absolute paths.

Reported-by: Bryan Turner <bturner@atlassian.com>
Signed-off-by: Jeff King <peff@peff.net>

t0021: compute file size with a single process instead... Johannes Sixt Sun, 6 Nov 2016 19:31:19 +0000 (20:31 +0100)

t0021: compute file size with a single process instead of a pipeline

Avoid unwanted coding patterns (prodigal use of pipelines), and in
particular a useless use of cat.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jeff King <peff@peff.net>

t0021: expect more variations in the output of uniq -cJohannes Sixt Thu, 3 Nov 2016 20:12:13 +0000 (21:12 +0100)

t0021: expect more variations in the output of uniq -c

Some versions of uniq -c write the count left-justified, other version
write it right-justified. Be prepared for both kinds.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jeff King <peff@peff.net>

t0021: fix filehandle usage on older perlJeff King Wed, 2 Nov 2016 18:23:01 +0000 (14:23 -0400)

t0021: fix filehandle usage on older perl

The rot13-filter.pl script calls methods on implicitly
defined filehandles (STDOUT, and the result of an open()
call). Prior to perl 5.13, these methods are not
automatically loaded, and perl will complain with:

Can't locate object method "flush" via package "IO::Handle"

Let's explicitly load IO::File (which inherits from
IO::Handle). That's more than we need for just "flush", but
matches what perl has done since:

http://perl5.git.perl.org/perl.git/commit/15e6cdd91beb4cefae4b65e855d68cf64766965d

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

t0021: use $PERL_PATH for rot13-filter.plJeff King Wed, 2 Nov 2016 18:20:22 +0000 (14:20 -0400)

t0021: use $PERL_PATH for rot13-filter.pl

The rot13-filter.pl script hardcodes "#!/usr/bin/perl", and
does not respect $PERL_PATH at all. That is a problem if the
system does not have perl at that path, or if it has a perl
that is too old to run a complicated script like the
rot13-filter (but PERL_PATH points to a more modern one).

We can fix this by using write_script() to create a new copy
of the script with the correct #!-line. In theory we could
move the whole script inside t0021-conversion.sh rather than
having it as an auxiliary file, but it's long enough that
it just makes things harder to read.

As a bonus, we can stop using the full path to the script in
the filter-process config we add (because the trash
directory is in our PATH). Not only is this shorter, but it
sidesteps any shell-quoting issues. The original was broken
when $TEST_DIRECTORY contained a space, because it was
interpolated in the outer script.

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

t0021: put $TEST_ROOT in $PATHJeff King Wed, 2 Nov 2016 18:18:25 +0000 (14:18 -0400)

t0021: put $TEST_ROOT in $PATH

We create a rot13.sh script in the trash directory, but need
to call it by its full path when we have moved our cwd to
another directory. Let's just put $TEST_ROOT in our $PATH so
that the script is always found.

This is a minor convenience for rot13.sh, but will be a
major one when we switch rot13-filter.pl to a script in the
same directory, as it means we will not have to deal with
shell quoting inside the filter-process config.

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

t0021: use write_script to create rot13 shell scriptJeff King Wed, 2 Nov 2016 18:17:51 +0000 (14:17 -0400)

t0021: use write_script to create rot13 shell script

This avoids us fooling around with $SHELL_PATH and the
executable bit ourselves.

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

A bit of updates post -rc0Junio C Hamano Tue, 1 Nov 2016 19:59:58 +0000 (12:59 -0700)

A bit of updates post -rc0

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

Merge branch 'cc/split-index-typofix'Junio C Hamano Tue, 1 Nov 2016 19:58:49 +0000 (12:58 -0700)

Merge branch 'cc/split-index-typofix'

Typofix in a comment in code

* cc/split-index-typofix:
split-index: s/eith/with/ typo fix

Merge branch 'jk/no-looking-at-dotgit-outside-repo'Junio C Hamano Tue, 1 Nov 2016 19:58:49 +0000 (12:58 -0700)

Merge branch 'jk/no-looking-at-dotgit-outside-repo'

A small code cleanup.

* jk/no-looking-at-dotgit-outside-repo:
sha1_name: make wraparound of the index into ring-buffer explicit

Merge branch 'rs/cocci'Junio C Hamano Tue, 1 Nov 2016 19:58:49 +0000 (12:58 -0700)

Merge branch 'rs/cocci'

Improve the rule to convert "unsigned char [20]" into "struct
object_id *" in contrib/coccinelle/

* rs/cocci:
cocci: avoid self-references in object_id transformations

split-index: s/eith/with/ typo fixChristian Couder Sun, 23 Oct 2016 09:26:30 +0000 (11:26 +0200)

split-index: s/eith/with/ typo fix

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

cocci: avoid self-references in object_id transformationsRené Scharfe Tue, 1 Nov 2016 08:49:12 +0000 (09:49 +0100)

cocci: avoid self-references in object_id transformations

The object_id functions oid_to_hex, oid_to_hex_r, oidclr, oidcmp, and
oidcpy are defined as wrappers of their legacy counterparts sha1_to_hex,
sha1_to_hex_r, hashclr, hashcmp, and hashcpy, respectively. Make sure
that the Coccinelle transformations for converting legacy function calls
are not applied to these wrappers themselves, which would result in
tautological declarations.

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

sha1_name: make wraparound of the index into ring-buffe... René Scharfe Tue, 1 Nov 2016 08:49:07 +0000 (09:49 +0100)

sha1_name: make wraparound of the index into ring-buffer explicit

Overflow is defined for unsigned integers, but not for signed ones.
Wrap around explicitly for the new ring-buffer in find_unique_abbrev()
as we did in bb84735c for the ones in sha1_to_hex() and get_pathname(),
thus avoiding signed overflows and getting rid of the magic number 3.

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

Git 2.11-rc0 v2.11.0-rc0Junio C Hamano Mon, 31 Oct 2016 20:19:53 +0000 (13:19 -0700)

Git 2.11-rc0

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

Merge branch 'nd/test-helpers'Junio C Hamano Mon, 31 Oct 2016 20:15:27 +0000 (13:15 -0700)

Merge branch 'nd/test-helpers'

Update to the test framework made in 2.9 timeframe broke running
the tests under valgrind, which has been fixed.

* nd/test-helpers:
valgrind: support test helpers

Merge branch 'sc/fmt-merge-msg-doc-markup-fix'Junio C Hamano Mon, 31 Oct 2016 20:15:26 +0000 (13:15 -0700)

Merge branch 'sc/fmt-merge-msg-doc-markup-fix'

Documentation fix.

* sc/fmt-merge-msg-doc-markup-fix:
Documentation/fmt-merge-msg: fix markup in example

Merge branch 'ak/sh-setup-dot-source-i18n-fix'Junio C Hamano Mon, 31 Oct 2016 20:15:25 +0000 (13:15 -0700)

Merge branch 'ak/sh-setup-dot-source-i18n-fix'

Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.

* ak/sh-setup-dot-source-i18n-fix:
git-sh-setup: be explicit where to dot-source git-sh-i18n from.

Merge branch 'rs/commit-pptr-simplify'Junio C Hamano Mon, 31 Oct 2016 20:15:25 +0000 (13:15 -0700)

Merge branch 'rs/commit-pptr-simplify'

Code simplification.

* rs/commit-pptr-simplify:
commit: simplify building parents list

Merge branch 'jk/rebase-config-insn-fmt-docfix'Junio C Hamano Mon, 31 Oct 2016 20:15:24 +0000 (13:15 -0700)

Merge branch 'jk/rebase-config-insn-fmt-docfix'

Documentation fix.

* jk/rebase-config-insn-fmt-docfix:
doc: fix missing "::" in config list

Merge branch 'ak/pre-receive-hook-template-modefix'Junio C Hamano Mon, 31 Oct 2016 20:15:23 +0000 (13:15 -0700)

Merge branch 'ak/pre-receive-hook-template-modefix'

A trivial clean-up to a recently graduated topic.

* ak/pre-receive-hook-template-modefix:
pre-receive.sample: mark it executable

Merge branch 'jk/common-main'Junio C Hamano Mon, 31 Oct 2016 20:15:23 +0000 (13:15 -0700)

Merge branch 'jk/common-main'

A trivial clean-up to a recently graduated topic.

* jk/common-main:
git-compat-util: move content inside ifdef/endif guards

Merge branch 'aw/numbered-stash'Junio C Hamano Mon, 31 Oct 2016 20:15:22 +0000 (13:15 -0700)

Merge branch 'aw/numbered-stash'

The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".

* aw/numbered-stash:
stash: allow stashes to be referenced by index only

Merge branch 'jt/trailer-with-cruft'Junio C Hamano Mon, 31 Oct 2016 20:15:22 +0000 (13:15 -0700)

Merge branch 'jt/trailer-with-cruft'

Update "interpret-trailers" machinery and teaches it that people in
real world write all sorts of crufts in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.

* jt/trailer-with-cruft:
trailer: support values folded to multiple lines
trailer: forbid leading whitespace in trailers
trailer: allow non-trailers in trailer block
trailer: clarify failure modes in parse_trailer
trailer: make args have their own struct
trailer: streamline trailer item create and add
trailer: use list.h for doubly-linked list
trailer: improve const correctness

Merge branch 'ls/filter-process'Junio C Hamano Mon, 31 Oct 2016 20:15:21 +0000 (13:15 -0700)

Merge branch 'ls/filter-process'

The smudge/clean filter API expect an external process is spawned
to filter the contents for each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering need is served by this single process for multiple
paths, reducing the process creation overhead.

* ls/filter-process:
contrib/long-running-filter: add long running filter example
convert: add filter.<driver>.process option
convert: prepare filter.<driver>.process option
convert: make apply_filter() adhere to standard Git error handling
pkt-line: add functions to read/write flush terminated packet streams
pkt-line: add packet_write_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_fmt_gently()
pkt-line: extract set_packet_header()
pkt-line: rename packet_write() to packet_write_fmt()
run-command: add clean_on_exit_handler
run-command: move check_pipe() from write_or_die to run_command
convert: modernize tests
convert: quote filter names in error messages

Merge branch 'ls/git-open-cloexec'Junio C Hamano Mon, 31 Oct 2016 20:15:21 +0000 (13:15 -0700)

Merge branch 'ls/git-open-cloexec'

Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.

* ls/git-open-cloexec:
read-cache: make sure file handles are not inherited by child processes
sha1_file: open window into packfiles with O_CLOEXEC
sha1_file: rename git_open_noatime() to git_open()

git-sh-setup: be explicit where to dot-source git-sh... Anders Kaseorg Sun, 30 Oct 2016 02:10:02 +0000 (22:10 -0400)

git-sh-setup: be explicit where to dot-source git-sh-i18n from.

d323c6b641 ("i18n: git-sh-setup.sh: mark strings for translation",
2016-06-17) started to dot-source git-sh-i18n shell script library,
assuming that $PATH is already adjusted for our scripts, namely,
$GIT_EXEC_PATH is at the beginning of $PATH.

Old contrib scripts like contrib/convert-grafts-to-replace-refs.sh
and contrib/rerere-train.sh and third-party scripts like guilt may
however be using this as ". $(git --exec-path)/git-sh-setup",
without satisfying that assumption. Be more explicit by specifying
its path prefixed with "$(git --exec-path)/". to be safe.

While we’re here, move the sourcing of git-sh-i18n below the shell
portability fixes.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: simplify building parents listRené Scharfe Sat, 29 Oct 2016 12:55:36 +0000 (14:55 +0200)

commit: simplify building parents list

Push pptr down into the FROM_MERGE branch of the if/else statement,
where it's actually used, and call commit_list_append() for appending
elements instead of playing tricks with commit_list_insert(). Call
copy_commit_list() in the amend branch instead of open-coding it. Don't
bother setting pptr in the final branch as it's not used thereafter.

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

doc: fix missing "::" in config listJeff King Sun, 30 Oct 2016 18:46:33 +0000 (14:46 -0400)

doc: fix missing "::" in config list

The rebase.instructionFormat option is missing its "::" to
tell AsciiDoc that it's a list entry. As a result, the
option name gets lumped into the description in one big
paragraph.

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

pre-receive.sample: mark it executableAnders Kaseorg Fri, 28 Oct 2016 18:40:41 +0000 (14:40 -0400)

pre-receive.sample: mark it executable

For consistency with other hooks, make the sample hook executable.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 2.10.2Junio C Hamano Fri, 28 Oct 2016 16:03:50 +0000 (09:03 -0700)

Sync with 2.10.2

Git 2.10.2 v2.10.2Junio C Hamano Fri, 28 Oct 2016 16:02:44 +0000 (09:02 -0700)

Git 2.10.2

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

Merge branch 'pb/test-parse-options-expect' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:24 +0000 (09:01 -0700)

Merge branch 'pb/test-parse-options-expect' into maint

Test clean-up.

* pb/test-parse-options-expect:
t0040: convert all possible tests to use `test-parse-options --expect`

Merge branch 'jc/cocci-xstrdup-or-null' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:23 +0000 (09:01 -0700)

Merge branch 'jc/cocci-xstrdup-or-null' into maint

Code cleanup.

* jc/cocci-xstrdup-or-null:
cocci: refactor common patterns to use xstrdup_or_null()

Merge branch 'rs/cocci' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:23 +0000 (09:01 -0700)

Merge branch 'rs/cocci' into maint

Code cleanup.

* rs/cocci:
use strbuf_add_unique_abbrev() for adding short hashes, part 3
remove unnecessary NULL check before free(3)
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
use strbuf_add_unique_abbrev() for adding short hashes, part 2
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
add coccicheck make target
contrib/coccinelle: fix semantic patch for oid_to_hex_r()

Merge branch 'jc/diff-unique-abbrev-comments' into... Junio C Hamano Fri, 28 Oct 2016 16:01:23 +0000 (09:01 -0700)

Merge branch 'jc/diff-unique-abbrev-comments' into maint

A bit more comments in a tricky code.

* jc/diff-unique-abbrev-comments:
diff_unique_abbrev(): document its assumption and limitation

Merge branch 'rs/pretty-format-color-doc-fix' into... Junio C Hamano Fri, 28 Oct 2016 16:01:23 +0000 (09:01 -0700)

Merge branch 'rs/pretty-format-color-doc-fix' into maint

Small doc update.

* rs/pretty-format-color-doc-fix:
pretty: fix document link for color specification

Merge branch 'js/reset-usage' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:22 +0000 (09:01 -0700)

Merge branch 'js/reset-usage' into maint

Message fix-up.

* js/reset-usage:
reset: fix usage

Merge branch 'po/fix-doc-merge-base-illustration' into... Junio C Hamano Fri, 28 Oct 2016 16:01:21 +0000 (09:01 -0700)

Merge branch 'po/fix-doc-merge-base-illustration' into maint

Some AsciiDoc formatter mishandles a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.

* po/fix-doc-merge-base-illustration:
doc: fix the 'revert a faulty merge' ASCII art tab spacing
doc: fix merge-base ASCII art tab spacing

Merge branch 'jk/tap-verbose-fix' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:20 +0000 (09:01 -0700)

Merge branch 'jk/tap-verbose-fix' into maint

The Travis CI configuration we ship ran the tests with --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failure. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.

* jk/tap-verbose-fix:
test-lib: bail out when "-v" used under "prove"
travis: use --verbose-log test option
test-lib: add --verbose-log option
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces

Merge branch 'tg/add-chmod+x-fix' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:19 +0000 (09:01 -0700)

Merge branch 'tg/add-chmod+x-fix' into maint

A hot-fix for a test added by a recent topic that went to both
'master' and 'maint' already.

* tg/add-chmod+x-fix:
t3700: fix broken test under !SANITY

Merge branch 'bw/submodule-branch-dot-doc' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:19 +0000 (09:01 -0700)

Merge branch 'bw/submodule-branch-dot-doc' into maint

Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.

* bw/submodule-branch-dot-doc:
submodules doc: update documentation for "." used for submodule branches

Merge branch 'jk/tighten-alloc' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:18 +0000 (09:01 -0700)

Merge branch 'jk/tighten-alloc' into maint

Protect our code from over-eager compilers.

* jk/tighten-alloc:
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM

Merge branch 'jk/fetch-quick-tag-following' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:17 +0000 (09:01 -0700)

Merge branch 'jk/fetch-quick-tag-following' into maint

When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.

* jk/fetch-quick-tag-following:
fetch: use "quick" has_sha1_file for tag following

Merge branch 'jk/merge-base-fork-point-without-reflog... Junio C Hamano Fri, 28 Oct 2016 16:01:17 +0000 (09:01 -0700)

Merge branch 'jk/merge-base-fork-point-without-reflog' into maint

"git rebase" immediately after "git clone" failed to find the fork
point from the upstream.

* jk/merge-base-fork-point-without-reflog:
merge-base: handle --fork-point without reflog

Merge branch 'dk/worktree-dup-checkout-with-bare-is... Junio C Hamano Fri, 28 Oct 2016 16:01:16 +0000 (09:01 -0700)

Merge branch 'dk/worktree-dup-checkout-with-bare-is-ok' into maint

In a worktree connected to a repository elsewhere, created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch, which is designated as the primary branch of a bare
reopsitory, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.

* dk/worktree-dup-checkout-with-bare-is-ok:
worktree: allow the main brach of a bare repository to be checked out

Merge branch 'sb/submodule-config-doc-drop-path' into... Junio C Hamano Fri, 28 Oct 2016 16:01:16 +0000 (09:01 -0700)

Merge branch 'sb/submodule-config-doc-drop-path' into maint

The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it and submodule.<name>.url next to
each other as if both belong to .git/config. This has been fixed.

* sb/submodule-config-doc-drop-path:
documentation: improve submodule.<name>.{url, path} description

Merge branch 'jk/ref-symlink-loop' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:15 +0000 (09:01 -0700)

Merge branch 'jk/ref-symlink-loop' into maint

A stray symbolic link in $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.

* jk/ref-symlink-loop:
files_read_raw_ref: prevent infinite retry loops in general
files_read_raw_ref: avoid infinite loop on broken symlinks

Merge branch 'nd/commit-p-doc' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:15 +0000 (09:01 -0700)

Merge branch 'nd/commit-p-doc' into maint

Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.

* nd/commit-p-doc:
git-commit.txt: clarify --patch mode with pathspec

Merge branch 'jk/clone-copy-alternates-fix' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:14 +0000 (09:01 -0700)

Merge branch 'jk/clone-copy-alternates-fix' into maint

"git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.

* jk/clone-copy-alternates-fix:
clone: detect errors in normalize_path_copy

Merge branch 'dt/http-empty-auth' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:14 +0000 (09:01 -0700)

Merge branch 'dt/http-empty-auth' into maint

http.emptyauth configuration is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.

* dt/http-empty-auth:
http: http.emptyauth should allow empty (not just NULL) usernames

Merge branch 'dp/autoconf-curl-ssl' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:13 +0000 (09:01 -0700)

Merge branch 'dp/autoconf-curl-ssl' into maint

The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.

* dp/autoconf-curl-ssl:
./configure.ac: detect SSL in libcurl using curl-config

Merge branch 'ak/curl-imap-send-explicit-scheme' into... Junio C Hamano Fri, 28 Oct 2016 16:01:13 +0000 (09:01 -0700)

Merge branch 'ak/curl-imap-send-explicit-scheme' into maint

When we started cURL to talk to imap server when a new enough
version of cURL library is available, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.

* ak/curl-imap-send-explicit-scheme:
imap-send: Tell cURL to use imap:// or imaps://

Merge branch 'jt/fetch-pack-in-vain-count-with-stateles... Junio C Hamano Fri, 28 Oct 2016 16:01:12 +0000 (09:01 -0700)

Merge branch 'jt/fetch-pack-in-vain-count-with-stateless' into maint

When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.

* jt/fetch-pack-in-vain-count-with-stateless:
fetch-pack: do not reset in_vain on non-novel acks

Merge branch 'js/regexec-buf' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:12 +0000 (09:01 -0700)

Merge branch 'js/regexec-buf' into maint

A follow-up to an already graduated topic.

* js/regexec-buf:
configure.ac: improve description of NO_REGEX test

Merge branch 'rs/c-auto-resets-attributes' into maintJunio C Hamano Fri, 28 Oct 2016 16:01:11 +0000 (09:01 -0700)

Merge branch 'rs/c-auto-resets-attributes' into maint

When "%C(auto)" appears at the very beginning of the pretty format
string, it did not need to issue the reset sequence, but it did.
This is a small optimization to already graduated topic.

* rs/c-auto-resets-attributes:
pretty: avoid adding reset for %C(auto) if output is empty
pretty: let %C(auto) reset all attributes

Merge branch 'yk/git-tag-remove-mention-of-old-layout... Junio C Hamano Fri, 28 Oct 2016 16:01:10 +0000 (09:01 -0700)

Merge branch 'yk/git-tag-remove-mention-of-old-layout-in-doc' into maint

Shorten description of auto-following in "git tag" by removing a
mention of historical remotes layout which is not relevant to the
main topic.

* yk/git-tag-remove-mention-of-old-layout-in-doc:
doc: remove reference to the traditional layout in git-tag.txt

Documentation/fmt-merge-msg: fix markup in exampleStefan Christ Fri, 28 Oct 2016 10:01:26 +0000 (12:01 +0200)

Documentation/fmt-merge-msg: fix markup in example

Use at least 4 delimiting dashes that are required for
ListingBlock to get this block rendered as verbatim text.

Signed-off-by: Stefan Christ <contact@stefanchrist.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

valgrind: support test helpersRené Scharfe Thu, 27 Oct 2016 22:14:00 +0000 (00:14 +0200)

valgrind: support test helpers

Tests run with --valgrind call git commands through a wrapper script
that invokes valgrind on them. This script (valgrind.sh) is in turn
invoked through symlinks created for each command in t/valgrind/bin/.

Since e6e7530d (test helpers: move test-* to t/helper/ subdirectory)
these symlinks have been broken for test helpers -- they point to the
old locations in the root of the build directory. Fix that by teaching
the code for creating the links about the new location of the binaries,
and do the same in the wrapper script to allow it to find its payload.

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

Getting ready for 2.11-rc0Junio C Hamano Thu, 27 Oct 2016 22:06:24 +0000 (15:06 -0700)

Getting ready for 2.11-rc0

... but not quite yet. A few more topics to go.

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

Merge branch 'svn-cache' of git://bogomips.org/git-svnJunio C Hamano Thu, 27 Oct 2016 22:04:08 +0000 (15:04 -0700)

Merge branch 'svn-cache' of git://bogomips.org/git-svn

* 'svn-cache' of git://bogomips.org/git-svn:
git-svn: do not reuse caches memoized for a different architecture

Merge branch 'svn-wt' of git://bogomips.org/git-svnJunio C Hamano Thu, 27 Oct 2016 22:03:35 +0000 (15:03 -0700)

Merge branch 'svn-wt' of git://bogomips.org/git-svn

* 'svn-wt' of git://bogomips.org/git-svn:
git-svn: "git worktree" awareness
git-svn: reduce scope of input record separator change

Merge branch 'nd/ita-empty-commit'Junio C Hamano Thu, 27 Oct 2016 21:58:50 +0000 (14:58 -0700)

Merge branch 'nd/ita-empty-commit'

When new paths were added by "git add -N" to the index, it was
enough to circumvent the check by "git commit" to refrain from
making an empty commit without "--allow-empty". The same logic
prevented "git status" to show such a path as "new file" in the
"Changes not staged for commit" section.

* nd/ita-empty-commit:
commit: don't be fooled by ita entries when creating initial commit
commit: fix empty commit creation when there's no changes but ita entries
diff: add --ita-[in]visible-in-index
diff-lib: allow ita entries treated as "not yet exist in index"

Merge branch 'js/prepare-sequencer'Junio C Hamano Thu, 27 Oct 2016 21:58:50 +0000 (14:58 -0700)

Merge branch 'js/prepare-sequencer'

Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.

* js/prepare-sequencer: (27 commits)
sequencer: mark all error messages for translation
sequencer: start error messages consistently with lower case
sequencer: quote filenames in error messages
sequencer: mark action_name() for translation
sequencer: remove overzealous assumption in rebase -i mode
sequencer: teach write_message() to append an optional LF
sequencer: refactor write_message() to take a pointer/length
sequencer: roll back lock file if write_message() failed
sequencer: stop releasing the strbuf in write_message()
sequencer: left-trim lines read from the script
sequencer: support cleaning up commit messages
sequencer: support amending commits
sequencer: allow editing the commit message on a case-by-case basis
sequencer: introduce a helper to read files written by scripts
sequencer: prepare for rebase -i's commit functionality
sequencer: remember the onelines when parsing the todo file
sequencer: get rid of the subcommand field
sequencer: avoid completely different messages for different actions
sequencer: strip CR from the todo script
sequencer: completely revamp the "todo" script parsing
...

Merge branch 'jk/daemon-path-ok-check-truncation'Junio C Hamano Thu, 27 Oct 2016 21:58:50 +0000 (14:58 -0700)

Merge branch 'jk/daemon-path-ok-check-truncation'

"git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes overlong path to be
required to serve.

* jk/daemon-path-ok-check-truncation:
daemon: detect and reject too-long paths

Merge branch 'rs/ring-buffer-wraparound'Junio C Hamano Thu, 27 Oct 2016 21:58:49 +0000 (14:58 -0700)

Merge branch 'rs/ring-buffer-wraparound'

The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.

* rs/ring-buffer-wraparound:
hex: make wraparound of the index into ring-buffer explicit

Merge branch 'sb/submodule-ignore-trailing-slash'Junio C Hamano Thu, 27 Oct 2016 21:58:49 +0000 (14:58 -0700)

Merge branch 'sb/submodule-ignore-trailing-slash'

A minor regression fix for "git submodule".

* sb/submodule-ignore-trailing-slash:
t0060: sidestep surprising path mangling results on Windows
submodule: ignore trailing slash in relative url
submodule: ignore trailing slash on superproject URL

Merge branch 'jk/no-looking-at-dotgit-outside-repo'Junio C Hamano Thu, 27 Oct 2016 21:58:48 +0000 (14:58 -0700)

Merge branch 'jk/no-looking-at-dotgit-outside-repo'

Update "git diff --no-index" codepath not to try to peek into .git/
directory that happens to be under the current directory, when we
know we are operating outside any repository.

* jk/no-looking-at-dotgit-outside-repo:
diff: handle sha1 abbreviations outside of repository
diff_aligned_abbrev: use "struct oid"
diff_unique_abbrev: rename to diff_aligned_abbrev
find_unique_abbrev: use 4-buffer ring
test-*-cache-tree: setup git dir
read info/{attributes,exclude} only when in repository

Merge branch 'jc/abbrev-auto'Junio C Hamano Thu, 27 Oct 2016 21:58:48 +0000 (14:58 -0700)

Merge branch 'jc/abbrev-auto'

"git push" and "git fetch" reports from what old object to what new
object each ref was updated, using abbreviated refnames, and they
attempt to align the columns for this and other pieces of
information. The way these codepaths compute how many display
columns to allocate for the object names portion of this output has
been updated to match the recent "auto scale the default
abbreviation length" change.

* jc/abbrev-auto:
transport: compute summary-width dynamically
transport: allow summary-width to be computed dynamically
fetch: pass summary_width down the callchain
transport: pass summary_width down the callchain

Merge branch 'jk/abbrev-auto'Junio C Hamano Thu, 27 Oct 2016 21:58:47 +0000 (14:58 -0700)

Merge branch 'jk/abbrev-auto'

Updates the way approximate count of total objects is computed
while attempting to come up with a unique abbreviated object name,
which in turn needs to estimate how many hexdigits are necessary to
ensure uniqueness.

* jk/abbrev-auto:
find_unique_abbrev: move logic out of get_short_sha1()

Merge branch 'lt/abbrev-auto'Junio C Hamano Thu, 27 Oct 2016 21:58:47 +0000 (14:58 -0700)

Merge branch 'lt/abbrev-auto'

Allow the default abbreviation length, which has historically been
7, to scale as the repository grows. The logic suggests to use 12
hexdigits for the Linux kernel, and 9 to 10 for Git itself.

* lt/abbrev-auto:
abbrev: auto size the default abbreviation
abbrev: prepare for new world order
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing

git-svn: do not reuse caches memoized for a different... Gavin Lambert Tue, 25 Oct 2016 15:30:11 +0000 (17:30 +0200)

git-svn: do not reuse caches memoized for a different architecture

Reusing cached data speeds up git-svn by quite a fair bit. However, if
the YAML module is unavailable, the caches are written to disk in an
architecture-dependent manner. That leads to problems when upgrading,
say, from 32-bit to 64-bit Git for Windows.

Let's just try to read those caches back if we detect the absence of the
YAML module and the presence of the file, and delete the file if it
could not be read back correctly.

Note that the only way to catch the error when the memoized cache could
not be read back is to put the call inside an `eval { ... }` block
because it would die otherwise; the `eval` block should also return `1`
in case of success explicitly since the function reading back the cached
data does not return an appropriate value to test for success.

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

[ew: import "retrieve" explictly, check unlink result]

Signed-off-by: Gavin Lambert <github@mirality.co.nz>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Eric Wong <e@80x24.org>

git-compat-util: move content inside ifdef/endif guardsJeff King Thu, 27 Oct 2016 17:30:30 +0000 (13:30 -0400)

git-compat-util: move content inside ifdef/endif guards

Commit 3f2e2297b9 (add an extra level of indirection to
main(), 2016-07-01) added a declaration to git-compat-util.h,
but it was accidentally placed after the final #endif that
guards against multiple inclusions.

This doesn't have any actual impact on the code, since it's
not incorrect to repeat a function declaration in C. But
it's a bad habit, and makes it more likely for somebody else
to make the same mistake. It also defeats gcc's optimization
to avoid opening header files whose contents are completely
guarded.

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

diff: handle sha1 abbreviations outside of repositoryJeff King Thu, 20 Oct 2016 06:21:25 +0000 (02:21 -0400)

diff: handle sha1 abbreviations outside of repository

When generating diffs outside a repository (e.g., with "diff
--no-index"), we may write abbreviated sha1s as part of
"--raw" output or the "index" lines of "--patch" output.
Since we have no object database, we never find any
collisions, and these sha1s get whatever static abbreviation
length is configured (typically 7).

However, we do blindly look in ".git/objects" to see if any
objects exist, even though we know we are not in a
repository. This is usually harmless because such a
directory is unlikely to exist, but could be wrong in rare
circumstances.

Let's instead notice when we are not in a repository and
behave as if the object database is empty (i.e., just use
the default abbrev length). It would perhaps make sense to
be conservative and show full sha1s in that case, but
showing the default abbreviation is what we've always done
(and is certainly less ugly).

Note that this does mean that:

cd /not/a/repo
GIT_OBJECT_DIRECTORY=/some/real/objdir git diff --no-index ...

used to look for collisions in /some/real/objdir but now
does not. This could be considered either a bugfix (we do
not look at objects if we have no repository) or a
regression, but it seems unlikely that anybody would care
much either way.

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