gitweb.git
Merge branch 'tb/push-to-cygwin-unc-path'Junio C Hamano Tue, 18 Jul 2017 19:48:09 +0000 (12:48 -0700)

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

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

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

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

l10n: Update Catalan translationJordi Mas Tue, 18 Jul 2017 19:06:06 +0000 (21:06 +0200)

l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>

doc: camelCase the i18n config variables to improve... Kaartic Sivaraam Mon, 17 Jul 2017 15:39:00 +0000 (21:09 +0530)

doc: camelCase the i18n config variables to improve readability

The i18n config variable used weren't readable as they were in
the crude form of how git stores/uses it's config variables.

Improve it's readability by replacing them with camelCased versions
of config variables as it doesn't have any impact on it's usage.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t: handle EOF in test_copy_bytes()Jeff King Sun, 16 Jul 2017 10:45:32 +0000 (06:45 -0400)

t: handle EOF in test_copy_bytes()

The test_copy_bytes() function claims to read up to N bytes,
or until it gets EOF. But we never handle EOF in our loop,
and a short input will cause perl to go into an infinite
loop of read() getting zero bytes.

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

set FD_CLOEXEC properly when O_CLOEXEC is not supportedEric Wong Sat, 15 Jul 2017 18:55:40 +0000 (18:55 +0000)

set FD_CLOEXEC properly when O_CLOEXEC is not supported

FD_CLOEXEC only applies to the file descriptor, so it needs to be
manipuluated via F_GETFD/F_SETFD. F_GETFL/F_SETFL are for file
description flags.

Verified via strace with o_cloexec set to zero.

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

receive-pack: don't access hash of NULL object_id pointerRené Scharfe Sat, 15 Jul 2017 18:33:54 +0000 (20:33 +0200)

receive-pack: don't access hash of NULL object_id pointer

We set old_oid to NULL if we found out that it's a corrupt reference.
In that case don't try to access the hash member and pass NULL to
ref_transaction_delete() instead.

Found with Clang's UBSan.

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

notes: don't access hash of NULL object_id pointerRené Scharfe Sat, 15 Jul 2017 18:15:26 +0000 (20:15 +0200)

notes: don't access hash of NULL object_id pointer

Check if note is NULL, as we already do for different purposes a few
lines above, and pass a NULL pointer to prepare_note_data() in that
case instead of trying to access the hash member.

Found with Clang's UBSan.

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

Makefile: allow combining UBSan with other sanitizersRené Scharfe Sat, 15 Jul 2017 17:18:56 +0000 (19:18 +0200)

Makefile: allow combining UBSan with other sanitizers

Multiple sanitizers can be specified as a comma-separated list. Set
the flag NO_UNALIGNED_LOADS even if UndefinedBehaviorSanitizer is not
the only sanitizer to build with.

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

tree-diff: don't access hash of NULL object_id pointerRené Scharfe Sat, 15 Jul 2017 17:18:51 +0000 (19:18 +0200)

tree-diff: don't access hash of NULL object_id pointer

The object_id pointers can be NULL for invalid entries. Don't try to
dereference them and pass NULL along to fill_tree_descriptor() instead,
which handles them just fine.

Found with Clang's UBSan.

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

alias: compare alias name *case-insensitively*Johannes Schindelin Fri, 14 Jul 2017 08:39:38 +0000 (10:39 +0200)

alias: compare alias name *case-insensitively*

It is totally legitimate to add CamelCased aliases, but due to the way
config keys are compared, the case does not matter.

Therefore, we must compare the alias name insensitively to the config
keys.

This fixes a regression introduced by a9bcf6586d1 (alias: use
the early config machinery to expand aliases, 2017-06-14).

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

t1300: demonstrate that CamelCased aliases regressedJohannes Schindelin Fri, 14 Jul 2017 08:39:29 +0000 (10:39 +0200)

t1300: demonstrate that CamelCased aliases regressed

It is totally legitimate to add CamelCased aliases, but due to the way
config keys are compared, the case does not matter.

Except that now it does: the alias name is expected to be all
lower-case. This is a regression introduced by a9bcf6586d1 (alias: use
the early config machinery to expand aliases, 2017-06-14).

Noticed by Alejandro Pauly, diagnosed by Kevin Willford.

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

sha1_name: convert uses of 40 to GIT_SHA1_HEXSZbrian m. carlson Thu, 13 Jul 2017 23:49:30 +0000 (23:49 +0000)

sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ

There are several uses of the constant 40 in find_unique_abbrev_r.
Convert them to GIT_SHA1_HEXSZ.

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

sha1_name: convert GET_SHA1* flags to GET_OID*brian m. carlson Thu, 13 Jul 2017 23:49:29 +0000 (23:49 +0000)

sha1_name: convert GET_SHA1* flags to GET_OID*

Convert the flags for get_oid_with_context and friends to use "OID"
instead of "SHA1" in their names.

This transform was made by running the following one-liner on the
affected files:

perl -pi -e 's/GET_SHA1/GET_OID/g'

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

sha1_name: convert get_sha1* to get_oid*brian m. carlson Thu, 13 Jul 2017 23:49:28 +0000 (23:49 +0000)

sha1_name: convert get_sha1* to get_oid*

Now that all the callers of get_sha1 directly or indirectly use struct
object_id, rename the functions starting with get_sha1 to start with
get_oid. Convert the internals in sha1_name.c to use struct object_id
as well, and eliminate explicit length checks where possible. Convert a
use of 40 in get_oid_basic to GIT_SHA1_HEXSZ.

Outside of sha1_name.c and cache.h, this transition was made with the
following semantic patch:

@@
expression E1, E2;
@@
- get_sha1(E1, E2.hash)
+ get_oid(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1(E1, E2->hash)
+ get_oid(E1, E2)

@@
expression E1, E2;
@@
- get_sha1_committish(E1, E2.hash)
+ get_oid_committish(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1_committish(E1, E2->hash)
+ get_oid_committish(E1, E2)

@@
expression E1, E2;
@@
- get_sha1_treeish(E1, E2.hash)
+ get_oid_treeish(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1_treeish(E1, E2->hash)
+ get_oid_treeish(E1, E2)

@@
expression E1, E2;
@@
- get_sha1_commit(E1, E2.hash)
+ get_oid_commit(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1_commit(E1, E2->hash)
+ get_oid_commit(E1, E2)

@@
expression E1, E2;
@@
- get_sha1_tree(E1, E2.hash)
+ get_oid_tree(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1_tree(E1, E2->hash)
+ get_oid_tree(E1, E2)

@@
expression E1, E2;
@@
- get_sha1_blob(E1, E2.hash)
+ get_oid_blob(E1, &E2)

@@
expression E1, E2;
@@
- get_sha1_blob(E1, E2->hash)
+ get_oid_blob(E1, E2)

@@
expression E1, E2, E3, E4;
@@
- get_sha1_with_context(E1, E2, E3.hash, E4)
+ get_oid_with_context(E1, E2, &E3, E4)

@@
expression E1, E2, E3, E4;
@@
- get_sha1_with_context(E1, E2, E3->hash, E4)
+ get_oid_with_context(E1, E2, E3, E4)

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

Convert remaining callers of get_sha1 to get_oid.brian m. carlson Thu, 13 Jul 2017 23:49:27 +0000 (23:49 +0000)

Convert remaining callers of get_sha1 to get_oid.

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

builtin/unpack-file: convert to struct object_idbrian m. carlson Thu, 13 Jul 2017 23:49:25 +0000 (23:49 +0000)

builtin/unpack-file: convert to struct object_id

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

bisect: convert bisect_checkout to struct object_idbrian m. carlson Thu, 13 Jul 2017 23:49:24 +0000 (23:49 +0000)

bisect: convert bisect_checkout to struct object_id

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

builtin/update_ref: convert to struct object_idbrian m. carlson Thu, 13 Jul 2017 23:49:23 +0000 (23:49 +0000)

builtin/update_ref: convert to struct object_id

Convert the uses of unsigned char * to struct object_id.

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

sequencer: convert to struct object_idbrian m. carlson Thu, 13 Jul 2017 23:49:22 +0000 (23:49 +0000)

sequencer: convert to struct object_id

Convert the remaining instances of unsigned char * to struct object_id.
This removes several calls to get_sha1.

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

remote: convert struct push_cas to struct object_idbrian m. carlson Thu, 13 Jul 2017 23:49:21 +0000 (23:49 +0000)

remote: convert struct push_cas to struct object_id

This gets rid of one use of get_sha1.

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

submodule: convert submodule config lookup to use object_idbrian m. carlson Thu, 13 Jul 2017 23:49:20 +0000 (23:49 +0000)

submodule: convert submodule config lookup to use object_id

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

builtin/merge-tree: convert remaining caller of get_sha... brian m. carlson Thu, 13 Jul 2017 23:49:19 +0000 (23:49 +0000)

builtin/merge-tree: convert remaining caller of get_sha1 to object_id

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

builtin/fsck: convert remaining caller of get_sha1... brian m. carlson Thu, 13 Jul 2017 23:49:18 +0000 (23:49 +0000)

builtin/fsck: convert remaining caller of get_sha1 to object_id

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

l10n: bg.po: Updated Bulgarian translation (3206t)Alexander Shopov Wed, 5 Jul 2017 08:17:59 +0000 (11:17 +0300)

l10n: bg.po: Updated Bulgarian translation (3206t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

l10n: vi.po(3206t): Update Vietnamese translationTran Ngoc Quan Sat, 15 Jul 2017 06:53:33 +0000 (13:53 +0700)

l10n: vi.po(3206t): Update Vietnamese translation

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: git.pot: v2.14.0 round 1 (34 new, 23 removed)Jiang Xin Sat, 15 Jul 2017 03:58:14 +0000 (11:58 +0800)

l10n: git.pot: v2.14.0 round 1 (34 new, 23 removed)

Generate po/git.pot from v2.14.0-rc0 for git v2.14.0 l10n round 1.

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

Merge branch 'maint' of git://github.com/git-l10n/git-poJiang Xin Sat, 15 Jul 2017 01:26:40 +0000 (09:26 +0800)

Merge branch 'maint' of git://github.com/git-l10n/git-po

* 'maint' of git://github.com/git-l10n/git-po:
l10n: ru.po: update Russian translation
l10n: Fixes to Catalan translation

Git 2.14-rc0 v2.14.0-rc0Junio C Hamano Thu, 13 Jul 2017 23:22:29 +0000 (16:22 -0700)

Git 2.14-rc0

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

Merge branch 'jk/build-with-asan'Junio C Hamano Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)

Merge branch 'jk/build-with-asan'

The build procedure has been improved to allow building and testing
Git with address sanitizer more easily.

* jk/build-with-asan:
Makefile: disable unaligned loads with UBSan
Makefile: turn off -fomit-frame-pointer with sanitizers
Makefile: add helper for compiling with -fsanitize
test-lib: turn on ASan abort_on_error by default
test-lib: set ASAN_OPTIONS variable before we run git

Merge branch 'sb/pull-rebase-submodule'Junio C Hamano Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)

Merge branch 'sb/pull-rebase-submodule'

"git pull --rebase --recurse-submodules" learns to rebase the
branch in the submodules to an updated base.

* sb/pull-rebase-submodule:
builtin/fetch cleanup: always set default value for submodule recursing
pull: optionally rebase submodules (remote submodule changes only)
builtin/fetch: parse recurse-submodules-default at default options parsing
builtin/fetch: factor submodule recurse parsing out to submodule config

Merge branch 'sb/hashmap-customize-comparison'Junio C Hamano Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)

Merge branch 'sb/hashmap-customize-comparison'

Update the hashmap API so that data to customize the behaviour of
the comparison function can be specified at the time a hashmap is
initialized.

* sb/hashmap-customize-comparison:
hashmap: migrate documentation from Documentation/technical into header
patch-ids.c: use hashmap correctly
hashmap.h: compare function has access to a data field

Merge branch 'ab/grep-lose-opt-regflags'Junio C Hamano Thu, 13 Jul 2017 23:14:54 +0000 (16:14 -0700)

Merge branch 'ab/grep-lose-opt-regflags'

Code cleanup.

* ab/grep-lose-opt-regflags:
grep: remove redundant REG_NEWLINE when compiling fixed regex
grep: remove regflags from the public grep_opt API
grep: remove redundant and verbose re-assignments to 0
grep: remove redundant "fixed" field re-assignment to 0
grep: adjust a redundant grep pattern type assignment
grep: remove redundant double assignment to 0

tag: convert gpg_verify_tag to use struct object_idStefan Beller Thu, 13 Jul 2017 00:44:15 +0000 (17:44 -0700)

tag: convert gpg_verify_tag to use struct object_id

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

commit: convert lookup_commit_graft to struct object_idStefan Beller Thu, 13 Jul 2017 00:44:14 +0000 (17:44 -0700)

commit: convert lookup_commit_graft to struct object_id

With this patch, commit.h doesn't contain the string 'sha1' any more.

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

git-p4: filter for {'code':'info'} in p4CmdListMiguel Torroja Thu, 13 Jul 2017 07:00:35 +0000 (09:00 +0200)

git-p4: filter for {'code':'info'} in p4CmdList

The function p4CmdList accepts a new argument: skip_info. When set to
True it ignores any 'code':'info' entry (skip_info=False by default).

That allows us to fix some of the tests in t9831-git-p4-triggers.sh
known to be broken with verobse p4 triggers

Signed-off-by: Miguel Torroja <miguel.torroja@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: parse marshal output "p4 -G" in p4 changesMiguel Torroja Thu, 13 Jul 2017 07:00:34 +0000 (09:00 +0200)

git-p4: parse marshal output "p4 -G" in p4 changes

The option -G of p4 (python marshal output) gives more context about the
data being output. That's useful when using the command "change -o" as
we can distinguish between warning/error line and real change description.

This fixes the case where a p4 trigger for "p4 change" is set and the command git-p4 submit is run.

Signed-off-by: Miguel Torroja <miguel.torroja@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: git-p4 tests with p4 triggersMiguel Torroja Thu, 13 Jul 2017 07:00:33 +0000 (09:00 +0200)

git-p4: git-p4 tests with p4 triggers

Some p4 triggers in the server side generate some warnings when
executed. Unfortunately those messages are mixed with the output of
p4 commands. A few git-p4 commands don't expect extra messages or output
lines and may fail with verbose triggers.
New tests added are known to be broken.

Signed-off-by: Miguel Torroja <miguel.torroja@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with v2.13.3Junio C Hamano Wed, 12 Jul 2017 22:25:14 +0000 (15:25 -0700)

Sync with v2.13.3

Git 2.13.3 v2.13.3Junio C Hamano Wed, 12 Jul 2017 22:24:15 +0000 (15:24 -0700)

Git 2.13.3

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

Merge branch 'kn/ref-filter-branch-list' into maintJunio C Hamano Wed, 12 Jul 2017 22:23:09 +0000 (15:23 -0700)

Merge branch 'kn/ref-filter-branch-list' into maint

The rewrite of "git branch --list" using for-each-ref's internals
that happened in v2.13 regressed its handling of color.branch.local;
this has been fixed.

* kn/ref-filter-branch-list:
ref-filter.c: drop return from void function
branch: set remote color in ref-filter branch immediately
branch: use BRANCH_COLOR_LOCAL in ref-filter format
branch: only perform HEAD check for local branches

Merge branch 'ks/typofix-commit-c-comment' into maintJunio C Hamano Wed, 12 Jul 2017 22:20:48 +0000 (15:20 -0700)

Merge branch 'ks/typofix-commit-c-comment' into maint

Typofix.

* ks/typofix-commit-c-comment:
builtin/commit.c: fix a typo in the comment

Merge branch 'jk/reflog-walk-maint' into maintJunio C Hamano Wed, 12 Jul 2017 22:20:35 +0000 (15:20 -0700)

Merge branch 'jk/reflog-walk-maint' into maint

After "git branch --move" of the currently checked out branch, the
code to walk the reflog of HEAD via "log -g" and friends
incorrectly stopped at the reflog entry that records the renaming
of the branch.

* jk/reflog-walk-maint:
reflog-walk: include all fields when freeing complete_reflogs
reflog-walk: don't free reflogs added to cache
reflog-walk: duplicate strings in complete_reflogs list
reflog-walk: skip over double-null oid due to HEAD rename

Hopefully the last batch before -rc0Junio C Hamano Wed, 12 Jul 2017 22:19:27 +0000 (15:19 -0700)

Hopefully the last batch before -rc0

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

Merge branch 'ks/fix-rebase-doc-picture'Junio C Hamano Wed, 12 Jul 2017 22:18:24 +0000 (15:18 -0700)

Merge branch 'ks/fix-rebase-doc-picture'

Doc update.

* ks/fix-rebase-doc-picture:
doc: correct a mistake in an illustration

Merge branch 'rs/wt-status-cleanup'Junio C Hamano Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)

Merge branch 'rs/wt-status-cleanup'

Code cleanup.

* rs/wt-status-cleanup:
wt-status: use separate variable for result of shorten_unambiguous_ref

Merge branch 'rs/use-div-round-up'Junio C Hamano Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)

Merge branch 'rs/use-div-round-up'

Code cleanup.

* rs/use-div-round-up:
use DIV_ROUND_UP

Merge branch 'kn/ref-filter-branch-list'Junio C Hamano Wed, 12 Jul 2017 22:18:23 +0000 (15:18 -0700)

Merge branch 'kn/ref-filter-branch-list'

The rewrite of "git branch --list" using for-each-ref's internals
that happened in v2.13 regressed its handling of color.branch.local;
this has been fixed.

* kn/ref-filter-branch-list:
ref-filter.c: drop return from void function
branch: set remote color in ref-filter branch immediately
branch: use BRANCH_COLOR_LOCAL in ref-filter format
branch: only perform HEAD check for local branches

Merge branch 'rs/urlmatch-cleanup'Junio C Hamano Wed, 12 Jul 2017 22:18:22 +0000 (15:18 -0700)

Merge branch 'rs/urlmatch-cleanup'

Code cleanup.

* rs/urlmatch-cleanup:
urlmatch: use hex2chr() in append_normalized_escapes()

Merge branch 'rs/apply-avoid-over-reading'Junio C Hamano Wed, 12 Jul 2017 22:18:22 +0000 (15:18 -0700)

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

Code cleanup.

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

Merge branch 'sb/submodule-doc'Junio C Hamano Wed, 12 Jul 2017 22:18:21 +0000 (15:18 -0700)

Merge branch 'sb/submodule-doc'

Doc update.

* sb/submodule-doc:
submodules: overhaul documentation

hook: add a simple first exampleKaartic Sivaraam Tue, 11 Jul 2017 14:30:54 +0000 (20:00 +0530)

hook: add a simple first example

Add a simple example that replaces an outdated example
that was removed. This ensures that there's at the least
a simple example that illustrates what could be done
using the hook just by enabling it.

Also, update the documentation.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

hook: add sign-off using "interpret-trailers"Kaartic Sivaraam Tue, 11 Jul 2017 14:11:10 +0000 (19:41 +0530)

hook: add sign-off using "interpret-trailers"

The sample hook to prepare the commit message before
a commit allows users to opt-in to add the sign-off
to the commit message. The sign-off is added at a place
that isn't consistent with the "-s" option of "git commit".
Further, it could go out of view in certain cases.

Add the sign-off in a way similar to "-s" option of
"git commit" using git's interpret-trailers command.

It works well in all cases except when the user invokes
"git commit" without any arguments. In that case manually
add a new line after the first line to ensure it's consistent
with the output of "-s" option.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

hook: name the positional variablesKaartic Sivaraam Tue, 11 Jul 2017 14:11:09 +0000 (19:41 +0530)

hook: name the positional variables

It's always nice to have named variables instead of
positional variables as they communicate their purpose
well.

Appropriately name the positional variables of the hook
to make it easier to see what's going on.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

hook: cleanup scriptKaartic Sivaraam Tue, 11 Jul 2017 14:11:08 +0000 (19:41 +0530)

hook: cleanup script

Prepare the 'preare-commit-msg' sample script for
upcoming changes. Preparation includes removal of
an example that has outlived it's purpose. The example
is the one that comments the "Conflicts:" part of a
merge commit message. It isn't relevant anymore as
it's done by default since 261f315b ("merge & sequencer:
turn "Conflicts:" hint into a comment", 2014-08-28).

Further update the relevant comments from the sample script
and update the documentation.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gc: run pre-detach operations under lockJeff King Tue, 11 Jul 2017 09:06:35 +0000 (05:06 -0400)

gc: run pre-detach operations under lock

We normally try to avoid having two auto-gc operations run
at the same time, because it wastes resources. This was done
long ago in 64a99eb47 (gc: reject if another gc is running,
unless --force is given, 2013-08-08).

When we do a detached auto-gc, we run the ref-related
commands _before_ detaching, to avoid confusing lock
contention. This was done by 62aad1849 (gc --auto: do not
lock refs in the background, 2014-05-25).

These two features do not interact well. The pre-detach
operations are run before we check the gc.pid lock, meaning
that on a busy repository we may run many of them
concurrently. Ideally we'd take the lock before spawning any
operations, and hold it for the duration of the program.

This is tricky, though, with the way the pid-file interacts
with the daemonize() process. Other processes will check
that the pid recorded in the pid-file still exists. But
detaching causes us to fork and continue running under a
new pid. So if we take the lock before detaching, the
pid-file will have a bogus pid in it. We'd have to go back
and update it with the new pid after detaching. We'd also
have to play some tricks with the tempfile subsystem to
tweak the "owner" field, so that the parent process does not
clean it up on exit, but the child process does.

Instead, we can do something a bit simpler: take the lock
only for the duration of the pre-detach work, then detach,
then take it again for the post-detach work. Technically,
this means that the post-detach lock could lose to another
process doing pre-detach work. But in the long run this
works out.

That second process would then follow-up by doing
post-detach work. Unless it was in turn blocked by a third
process doing pre-detach work, and so on. This could in
theory go on indefinitely, as the pre-detach work does not
repack, and so need_to_gc() will continue to trigger. But
in each round we are racing between the pre- and post-detach
locks. Eventually, one of the post-detach locks will win the
race and complete the full gc. So in the worst case, we may
racily repeat the pre-detach work, but we would never do so
simultaneously (it would happen via a sequence of serialized
race-wins).

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

pre-rebase hook: capture documentation in a <<here... Jonathan Nieder Mon, 10 Jul 2017 23:35:25 +0000 (16:35 -0700)

pre-rebase hook: capture documentation in a <<here document

Without this change, the sample hook does not pass a syntax check
(sh -n):

$ sh -n hooks--pre-rebase.sample
hooks--pre-rebase.sample: line 101: syntax error near unexpected token `('
hooks--pre-rebase.sample: line 101: ` merged into it again (either directly or indirectly).'

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

use DIV_ROUND_UPRené Scharfe Sat, 8 Jul 2017 10:35:35 +0000 (12:35 +0200)

use DIV_ROUND_UP

Convert code that divides and rounds up to use DIV_ROUND_UP to make the
intent clearer and reduce the number of magic constants.

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

Sync with maintJunio C Hamano Mon, 10 Jul 2017 21:02:45 +0000 (14:02 -0700)

Sync with maint

Prepare for 2.13.3Junio C Hamano Mon, 10 Jul 2017 21:02:07 +0000 (14:02 -0700)

Prepare for 2.13.3

Merge branch 'sb/merge-recursive-code-cleanup' into... Junio C Hamano Mon, 10 Jul 2017 20:59:09 +0000 (13:59 -0700)

Merge branch 'sb/merge-recursive-code-cleanup' into maint

Code clean-up.

* sb/merge-recursive-code-cleanup:
merge-recursive: use DIFF_XDL_SET macro

Merge branch 'jc/utf8-fprintf' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:08 +0000 (13:59 -0700)

Merge branch 'jc/utf8-fprintf' into maint

Code cleanup.

* jc/utf8-fprintf:
submodule--helper: do not call utf8_fprintf() unnecessarily

Merge branch 'js/fsck-name-object' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:08 +0000 (13:59 -0700)

Merge branch 'js/fsck-name-object' into maint

Test fix.

* js/fsck-name-object:
t1450: use egrep for regexp "alternation"

Merge branch 'js/t5534-rev-parse-gives-multi-line-outpu... Junio C Hamano Mon, 10 Jul 2017 20:59:07 +0000 (13:59 -0700)

Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix' into maint

A few tests that tried to verify the contents of push certificates
did not use 'git rev-parse' to formulate the line to look for in
the certificate correctly.

* js/t5534-rev-parse-gives-multi-line-output-fix:
t5534: fix misleading grep invocation

Merge branch 'ab/sha1dc-maint' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:06 +0000 (13:59 -0700)

Merge branch 'ab/sha1dc-maint' into maint

Update the sha1dc again to fix portability glitches.

* ab/sha1dc-maint:
sha1dc: update from upstream

Merge branch 'aw/contrib-subtree-doc-asciidoctor' into... Junio C Hamano Mon, 10 Jul 2017 20:59:06 +0000 (13:59 -0700)

Merge branch 'aw/contrib-subtree-doc-asciidoctor' into maint

The Makefile rule in contrib/subtree for building documentation
learned to honour USE_ASCIIDOCTOR just like the main documentation
set does.

* aw/contrib-subtree-doc-asciidoctor:
subtree: honour USE_ASCIIDOCTOR when set

Merge branch 'cc/shared-index-permfix' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:05 +0000 (13:59 -0700)

Merge branch 'cc/shared-index-permfix' into maint

The split index code did not honor core.sharedrepository setting
correctly.

* cc/shared-index-permfix:
t1700: make sure split-index respects core.sharedrepository
t1301: move modebits() to test-lib-functions.sh
read-cache: use shared perms when writing shared index

Merge branch 'ah/doc-pretty-color-auto-prefix' into... Junio C Hamano Mon, 10 Jul 2017 20:59:05 +0000 (13:59 -0700)

Merge branch 'ah/doc-pretty-color-auto-prefix' into maint

Doc update.

* ah/doc-pretty-color-auto-prefix:
doc: clarify syntax for %C(auto,...) in pretty formats

Merge branch 'mb/reword-autocomplete-message' into... Junio C Hamano Mon, 10 Jul 2017 20:59:04 +0000 (13:59 -0700)

Merge branch 'mb/reword-autocomplete-message' into maint

Message update.

* mb/reword-autocomplete-message:
auto-correct: tweak phrasing

Merge branch 'ks/t7508-indent-fix' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:03 +0000 (13:59 -0700)

Merge branch 'ks/t7508-indent-fix' into maint

Cosmetic update to a test.

* ks/t7508-indent-fix:
t7508: fix a broken indentation

Merge branch 'sb/t4005-modernize' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:02 +0000 (13:59 -0700)

Merge branch 'sb/t4005-modernize' into maint

Test clean-up.

* sb/t4005-modernize:
t4005: modernize style and drop hard coded sha1

Merge branch 'rs/apply-validate-input' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:01 +0000 (13:59 -0700)

Merge branch 'rs/apply-validate-input' into maint

Tighten error checks for invalid "git apply" input.

* rs/apply-validate-input:
apply: check git diffs for mutually exclusive header lines
apply: check git diffs for invalid file modes
apply: check git diffs for missing old filenames

Merge branch 'jc/pack-bitmap-unaligned' into maintJunio C Hamano Mon, 10 Jul 2017 20:59:00 +0000 (13:59 -0700)

Merge branch 'jc/pack-bitmap-unaligned' into maint

An unaligned 32-bit access in pack-bitmap code ahs been corrected.

* jc/pack-bitmap-unaligned:
pack-bitmap: don't perform unaligned memory access

Merge branch 'pw/rebase-i-regression-fix-tests' into... Junio C Hamano Mon, 10 Jul 2017 20:58:59 +0000 (13:58 -0700)

Merge branch 'pw/rebase-i-regression-fix-tests' into maint

Fix a recent regression to "git rebase -i" and add tests that would
have caught it and others.

* pw/rebase-i-regression-fix-tests:
t3420: fix under GETTEXT_POISON build
rebase: add more regression tests for console output
rebase: add regression tests for console output
rebase -i: add test for reflog message
sequencer: print autostash messages to stderr

Merge branch 'jk/add-p-commentchar-fix' into maintJunio C Hamano Mon, 10 Jul 2017 20:58:58 +0000 (13:58 -0700)

Merge branch 'jk/add-p-commentchar-fix' into maint

"git add -p" were updated in 2.12 timeframe to cope with custom
core.commentchar but the implementation was buggy and a
metacharacter like $ and * did not work.

* jk/add-p-commentchar-fix:
add--interactive: quote commentChar regex
add--interactive: handle EOF in prompt_yesno

Merge branch 'js/alias-early-config' into maintJunio C Hamano Mon, 10 Jul 2017 20:58:57 +0000 (13:58 -0700)

Merge branch 'js/alias-early-config' into maint

The code to pick up and execute command alias definition from the
configuration used to switch to the top of the working tree and
then come back when the expanded alias was executed, which was
unnecessarilyl complex. Attempt to simplify the logic by using the
early-config mechanism that does not chdir around.

* js/alias-early-config:
alias: use the early config machinery to expand aliases
t7006: demonstrate a problem with aliases in subdirectories
t1308: relax the test verifying that empty alias values are disallowed
help: use early config when autocorrecting aliases
config: report correct line number upon error
discover_git_directory(): avoid setting invalid git_dir

Merge branch 'rs/pretty-add-again' into maintJunio C Hamano Mon, 10 Jul 2017 20:58:57 +0000 (13:58 -0700)

Merge branch 'rs/pretty-add-again' into maint

The pretty-format specifiers like '%h', '%t', etc. had an
optimization that no longer works correctly. In preparation/hope
of getting it correctly implemented, first discard the optimization
that is broken.

* rs/pretty-add-again:
pretty: recalculate duplicate short hashes

Merge branch 'ah/doc-gitattributes-empty-index' into... Junio C Hamano Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)

Merge branch 'ah/doc-gitattributes-empty-index' into maint

An example in documentation that does not work in multi worktree
configuration has been corrected.

* ah/doc-gitattributes-empty-index:
doc: do not use `rm .git/index` when normalizing line endings

Merge branch 'da/mergetools-meld-output-opt-on-macos... Junio C Hamano Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)

Merge branch 'da/mergetools-meld-output-opt-on-macos' into maint

"git mergetool" learned to work around a wrapper MacOS X adds
around underlying meld.

* da/mergetools-meld-output-opt-on-macos:
mergetools/meld: improve compatibiilty with Meld on macOS X

Merge branch 'jk/diff-highlight-module' into maintJunio C Hamano Mon, 10 Jul 2017 20:58:56 +0000 (13:58 -0700)

Merge branch 'jk/diff-highlight-module' into maint

The 'diff-highlight' program (in contrib/) has been restructured
for easier reuse by an external project 'diff-so-fancy'.

* jk/diff-highlight-module:
diff-highlight: split code into module

Sixteenth batch for 2.14Junio C Hamano Mon, 10 Jul 2017 20:44:30 +0000 (13:44 -0700)

Sixteenth batch for 2.14

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

Merge branch 'jk/reflog-walk-maint'Junio C Hamano Mon, 10 Jul 2017 20:42:52 +0000 (13:42 -0700)

Merge branch 'jk/reflog-walk-maint'

After "git branch --move" of the currently checked out branch, the
code to walk the reflog of HEAD via "log -g" and friends
incorrectly stopped at the reflog entry that records the renaming
of the branch.

* jk/reflog-walk-maint:
reflog-walk: include all fields when freeing complete_reflogs
reflog-walk: don't free reflogs added to cache
reflog-walk: duplicate strings in complete_reflogs list
reflog-walk: skip over double-null oid due to HEAD rename

Merge branch 'bb/unicode-10.0'Junio C Hamano Mon, 10 Jul 2017 20:42:52 +0000 (13:42 -0700)

Merge branch 'bb/unicode-10.0'

Update the character width tables.

* bb/unicode-10.0:
unicode: update the width tables to Unicode 10

Merge branch 'ks/typofix-commit-c-comment'Junio C Hamano Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)

Merge branch 'ks/typofix-commit-c-comment'

Typofix.

* ks/typofix-commit-c-comment:
builtin/commit.c: fix a typo in the comment

Merge branch 'ab/wildmatch'Junio C Hamano Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)

Merge branch 'ab/wildmatch'

Minor code cleanup.

* ab/wildmatch:
wildmatch: remove unused wildopts parameter

Merge branch 'ab/sha1dc'Junio C Hamano Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)

Merge branch 'ab/sha1dc'

The "collission-detecting" implementation of SHA-1 hash we borrowed
from is replaced by directly binding the upstream project as our
submodule. Glitches on minority platforms are still being worked out.

* ab/sha1dc:
sha1collisiondetection: automatically enable when submodule is populated
sha1dc: optionally use sha1collisiondetection as a submodule

Merge branch 'rs/free-and-null'Junio C Hamano Mon, 10 Jul 2017 20:42:51 +0000 (13:42 -0700)

Merge branch 'rs/free-and-null'

Code cleanup.

* rs/free-and-null:
coccinelle: polish FREE_AND_NULL rules

Merge branch 'pw/unquote-path-in-git-pm'Junio C Hamano Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)

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

Code refactoring.

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

Merge branch 'ks/commit-assuming-only-warning-removal'Junio C Hamano Mon, 10 Jul 2017 20:42:50 +0000 (13:42 -0700)

Merge branch 'ks/commit-assuming-only-warning-removal'

An old message shown in the commit log template was removed, as it
has outlived its usefulness.

* ks/commit-assuming-only-warning-removal:
commit-template: distinguish status information unconditionally
commit-template: remove outdated notice about explicit paths

ref-filter.c: drop return from void functionAlejandro R. Sedeño Mon, 10 Jul 2017 19:03:03 +0000 (15:03 -0400)

ref-filter.c: drop return from void function

Sun's C compiler errors out on this pattern:

void foo() { ... }
void bar() { return foo(); }

Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: fix typoRalf Thielow Mon, 10 Jul 2017 16:23:08 +0000 (18:23 +0200)

l10n: de.po: fix typo

Reported-by: Andre Hinrichs <andre.hinrichs@gmx.de>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: disable unaligned loads with UBSanJeff King Mon, 10 Jul 2017 13:24:50 +0000 (09:24 -0400)

Makefile: disable unaligned loads with UBSan

The undefined behavior sanitizer complains about unaligned
loads, even if they're OK for a particular platform in
practice. It's possible that they _are_ a problem, of
course, but since it's a known tradeoff the UBSan errors are
just noise.

Let's quiet it automatically by building with
NO_UNALIGNED_LOADS when SANITIZE=undefined is in use.

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

Makefile: turn off -fomit-frame-pointer with sanitizersJeff King Mon, 10 Jul 2017 13:24:47 +0000 (09:24 -0400)

Makefile: turn off -fomit-frame-pointer with sanitizers

The ASan manual recommends disabling this optimization, as
it can make the backtraces produced by the tool harder to
follow (and since this is a test-debug build, we don't care
about squeezing out every last drop of performance).

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

Makefile: add helper for compiling with -fsanitizeJeff King Mon, 10 Jul 2017 13:24:42 +0000 (09:24 -0400)

Makefile: add helper for compiling with -fsanitize

You can already build and test with ASan by doing:

make CFLAGS=-fsanitize=address test

but there are a few slight annoyances:

1. It's a little long to type.

2. It override your CFLAGS completely. You'd probably
still want -O2, for instance.

3. It's a good idea to also turn off "recovery", which
lets the program keep running after a problem is
detected (with the intention of finding as many bugs as
possible in a given run). Since Git's test suite should
generally run without triggering any problems, it's
better to abort immediately and fail the test when we
do find an issue.

With this patch, all of that happens automatically when you
run:

make SANITIZE=address test

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

test-lib: turn on ASan abort_on_error by defaultJeff King Mon, 10 Jul 2017 13:24:39 +0000 (09:24 -0400)

test-lib: turn on ASan abort_on_error by default

By default, ASan will exit with code 1 when it sees an
error. This means we'll notice a problem when we expected
git to succeed, but not in a test_must_fail block.

Let's ask it to actually raise SIGABRT instead. That will
give us a signal death that test_must_fail will notice. As a
bonus, it may also leave a coredump, which can be handy for
digging into a failure.

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

test-lib: set ASAN_OPTIONS variable before we run gitJeff King Mon, 10 Jul 2017 13:24:35 +0000 (09:24 -0400)

test-lib: set ASAN_OPTIONS variable before we run git

We turn off ASan's leak detection by default in the test
suite because it's too noisy. But we don't do so until
part-way through test-lib. This is before we've run any
tests, but after we do our initial "./git" to see if the
binary has even been built.

When built with clang, this seems to work fine. However,
using "gcc -fsanitize=address", the leak checker seems to
complain more aggressively:

$ ./git
...
==5352==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 2 byte(s) in 1 object(s) allocated from:
#0 0x7f120e7afcf8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1cf8)
#1 0x559fc2a3ce41 in do_xmalloc /home/peff/compile/git/wrapper.c:60
#2 0x559fc2a3cf1a in do_xmallocz /home/peff/compile/git/wrapper.c:100
#3 0x559fc2a3d0ad in xmallocz /home/peff/compile/git/wrapper.c:108
#4 0x559fc2a3d0ad in xmemdupz /home/peff/compile/git/wrapper.c:124
#5 0x559fc2a3d0ad in xstrndup /home/peff/compile/git/wrapper.c:130
#6 0x559fc274535a in main /home/peff/compile/git/common-main.c:39
#7 0x7f120dabd2b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)

This is a leak in the sense that we never free it, but it's
in a global that is meant to last the whole program. So it's
not really interesting or in need of fixing. And at any
rate, mentioning leaks outside of the test_expect blocks is
certainly unwelcome, as it pollutes stderr.

Let's bump the setting of ASAN_OPTIONS higher in test-lib.sh
to catch our initial "can we even run git?" test. While
we're at it, we can add a comment to make it a bit less
inscrutable.

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

doc: correct a mistake in an illustrationKaartic Sivaraam Mon, 10 Jul 2017 14:18:30 +0000 (19:48 +0530)

doc: correct a mistake in an illustration

The first illustration of the "RECOVERING FROM UPSTREAM REBASE"
section in the 'git-rebase' documentation meant to depict that
there are number of commits on the 'master' branch, but it is
longer than the 'master' branch in the following illustrations
by one commit, even though there is no resetting of 'master' to
lose that commit.

Correct it.

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status: use separate variable for result of shorten_... René Scharfe Sat, 8 Jul 2017 10:51:01 +0000 (12:51 +0200)

wt-status: use separate variable for result of shorten_unambiguous_ref

Store the pointer to the string allocated by shorten_unambiguous_ref in
a dedicated variable, short_base, and keep base unchanged. A non-const
variable is more appropriate for such an object. It avoids having to
cast const away on free and stops redefining the meaning of base, making
the code slightly clearer.

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

progress: show overall rate in last updateRené Scharfe Sat, 8 Jul 2017 16:43:42 +0000 (18:43 +0200)

progress: show overall rate in last update

The values in struct throughput are only updated every 0.5 seconds. If
we're all done before that time span then the final update will show a
rate of 0 bytes/s, which is misleading if some bytes had been handled.
Remember the start time and show the total throughput instead.

And avoid division by zero by enforcing a minimum time span value of 1
(unit: 1/1024th of a second). That makes the resulting rate an
underestimation, but it's closer to the actual value than the currently
shown 0 bytes/s.

Reported-by: 積丹尼 Dan Jacobson <jidanni@jidanni.org>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

urlmatch: use hex2chr() in append_normalized_escapes()René Scharfe Sat, 8 Jul 2017 08:59:19 +0000 (10:59 +0200)

urlmatch: use hex2chr() in append_normalized_escapes()

Simplify the code by using hex2chr() to convert and check for invalid
characters at the same time instead of doing that sequentially with
one table lookup for each.

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

apply: use strcmp(3) for comparing strings in gitdiff_v... René Scharfe Sat, 8 Jul 2017 08:58:42 +0000 (10:58 +0200)

apply: use strcmp(3) for comparing strings in gitdiff_verify_name()

We don't know the length of the C string "another". It could be
shorter than "name", which we compare it to using memchr(3). Call
strcmp(3) instead to avoid running over the end of the former, and
get rid of a strlen(3) call as a bonus.

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