gitweb.git
Merge branch 'svn/bad-ref' of git://bogomips.org/git-svnJunio C Hamano Tue, 10 May 2016 20:40:57 +0000 (13:40 -0700)

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

* 'svn/bad-ref' of git://bogomips.org/git-svn:
Git/SVN: die when there is no commit metadata

Merge branch 'sk/gitweb-highlight-encoding'Junio C Hamano Tue, 10 May 2016 20:40:33 +0000 (13:40 -0700)

Merge branch 'sk/gitweb-highlight-encoding'

Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.

* sk/gitweb-highlight-encoding:
gitweb: apply fallback encoding before highlight

Merge branch 'sb/clean-test-fix'Junio C Hamano Tue, 10 May 2016 20:40:32 +0000 (13:40 -0700)

Merge branch 'sb/clean-test-fix'

* sb/clean-test-fix:
t7300: mark test with SANITY

Merge branch 'rn/glossary-typofix'Junio C Hamano Tue, 10 May 2016 20:40:31 +0000 (13:40 -0700)

Merge branch 'rn/glossary-typofix'

* rn/glossary-typofix:
Documentation: fix typo 'In such these cases'

Merge branch 'ls/travis-submitting-patches'Junio C Hamano Tue, 10 May 2016 20:40:30 +0000 (13:40 -0700)

Merge branch 'ls/travis-submitting-patches'

* ls/travis-submitting-patches:
Documentation: add setup instructions for Travis CI

Merge branch 'js/close-packs-before-gc'Junio C Hamano Tue, 10 May 2016 20:40:30 +0000 (13:40 -0700)

Merge branch 'js/close-packs-before-gc'

* js/close-packs-before-gc:
t5510: run auto-gc in the foreground

Merge branch 'ew/normal-to-e'Junio C Hamano Tue, 10 May 2016 20:40:29 +0000 (13:40 -0700)

Merge branch 'ew/normal-to-e'

* ew/normal-to-e:
.mailmap: update to my shorter email address

Merge branch 'ls/p4-lfs'Junio C Hamano Tue, 10 May 2016 20:40:29 +0000 (13:40 -0700)

Merge branch 'ls/p4-lfs'

Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.

* ls/p4-lfs:
git-p4: fix Git LFS pointer parsing
travis-ci: express Linux/OS X dependency versions more clearly
travis-ci: update Git-LFS and P4 to the latest version

Merge branch 'sb/misc-cleanups'Junio C Hamano Tue, 10 May 2016 20:40:29 +0000 (13:40 -0700)

Merge branch 'sb/misc-cleanups'

* sb/misc-cleanups:
submodule-config: don't shadow `cache`
config.c: drop local variable

Merge branch 'ew/doc-split-pack-disables-bitmap'Junio C Hamano Tue, 10 May 2016 20:40:28 +0000 (13:40 -0700)

Merge branch 'ew/doc-split-pack-disables-bitmap'

Doc update.

* ew/doc-split-pack-disables-bitmap:
pack-objects: warn on split packs disabling bitmaps

wrap-for-bin.sh: regenerate bin-wrappers when switching... Duy Nguyen Tue, 10 May 2016 11:58:56 +0000 (18:58 +0700)

wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Commit e6e7530 (test helpers: move test-* to t/helper/ subdirectory -
2016-04-13) moves test-* to t/helper. However because bin-wrappers/*
only depend on wrap-for-bin.sh, when switching between a branch that has
this commit and one that does not, bin-wrappers/* may not be regenerated
and point to the old/outdated test programs.

This commit makes a non-functional change in wrap-for-bin.sh, just
enough for 'make' to detect and re-execute wrap-for-bin.sh. When
switching between a branch containing both this commit and e6e7530 and
one containing neither, bin-wrappers/*, we should get fresh bin-wrappers/*.

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

t0040: convert a few tests to use test-parse-options... Junio C Hamano Fri, 6 May 2016 18:17:05 +0000 (11:17 -0700)

t0040: convert a few tests to use test-parse-options --expect

As a small example of using "test-parse-options --expect",
rewrite the "check" helper using it, instead of comparing
the whole variable dump.

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

t0040: remove unused test helpersJunio C Hamano Fri, 6 May 2016 17:52:34 +0000 (10:52 -0700)

t0040: remove unused test helpers

9a001381 (Fix tests under GETTEXT_POISON on parseopt, 2012-08-27)
introduced check_i18n, but the helper was never used from the
beginning.

The same commit also introduced check_unknown_i18n to replace the
helper check_unknown and changed all users of the latter to use the
former, but failed to remove check_unknown itself.

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

test-parse-options: --expect=<string> option to simplif... Junio C Hamano Thu, 5 May 2016 21:36:55 +0000 (14:36 -0700)

test-parse-options: --expect=<string> option to simplify tests

Existing tests in t0040 follow a rather verbose pattern:

cat >expect <<\EOF
boolean: 0
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: 0
quiet: 3
dry run: no
file: (not set)
EOF

test_expect_success 'multiple quiet levels' '
test-parse-options -q -q -q >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
'

But the only thing this test cares about is if "quiet: 3" is in the
output. We should be able to write the above 18 lines with just
four lines, like this:

test_expect_success 'multiple quiet levels' '
test-parse-options --expect="quiet: 3" -q -q -q
'

Teach the new --expect=<string> option to test-parse-options helper.

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

test-parse-options: fix output when callback option... Junio C Hamano Thu, 5 May 2016 20:30:10 +0000 (13:30 -0700)

test-parse-options: fix output when callback option fails

When test-parse-options detects an error on the command line, it
gives the usage string just like any parse-options API users do,
without showing any "variable dump". An exception is the callback
test, where a "variable dump" for the option is done before the
command line options are fully parsed.

Do not expose this implementation detail by separating the handling
of callback test into two phases, one to capture the fact that an
option was given during the option parsing phase, and the other to
show that fact as a part of normal "variable dump".

The effect of this fix is seen in the patch to t/t0040 where it
tried "test-parse-options --no-length" where "--length" is a callback
that does not take a negative form.

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

submodule: ensure that -c http.extraheader is heededJohannes Schindelin Tue, 10 May 2016 07:08:56 +0000 (09:08 +0200)

submodule: ensure that -c http.extraheader is heeded

To support this developer's use case of allowing build agents token-based
access to private repositories, we introduced the http.extraheader
feature, allowing extra HTTP headers to be sent along with every HTTP
request.

This patch verifies that we can configure these extra HTTP headers via the
command-line for use with `git submodule update`, too. Example: git -c
http.extraheader="Secret: Sauce" submodule update --init

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

t3404: fix typoJohannes Schindelin Tue, 10 May 2016 14:05:58 +0000 (16:05 +0200)

t3404: fix typo

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

travis-ci: build documentationLars Schneider Wed, 4 May 2016 08:38:36 +0000 (10:38 +0200)

travis-ci: build documentation

Build documentation as separate Travis CI job to check for
documentation errors.

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

ci: validate "linkgit:" in documentationJunio C Hamano Wed, 4 May 2016 21:34:23 +0000 (14:34 -0700)

ci: validate "linkgit:" in documentation

It is easy to add incorrect "linkgit:<page>[<section>]" references
to our documentation suite. Catch these common classes of errors:

* Referring to Documentation/<page>.txt that does not exist.

* Referring to a <page> outside the Git suite. In general, <page>
must begin with "git".

* Listing the manual <section> incorrectly. The first line of the
Documentation/<page>.txt must end with "(<section>)".

with a new script "ci/lint-gitlink", and drive it from "make check-docs".

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

Merge branch 'jk/submodule-c-credential' into js/http... Junio C Hamano Tue, 10 May 2016 17:38:31 +0000 (10:38 -0700)

Merge branch 'jk/submodule-c-credential' into js/http-custom-headers

* jk/submodule-c-credential:
submodule: stop sanitizing config options
submodule: use prepare_submodule_repo_env consistently
submodule--helper: move config-sanitizing to submodule.c
submodule: export sanitized GIT_CONFIG_PARAMETERS
t5550: break submodule config test into multiple sub-tests
t5550: fix typo in $HTTPD_URL
git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
git: submodule honor -c credential.* from command line
quote: implement sq_quotef()
submodule: fix segmentation fault in submodule--helper clone
submodule: fix submodule--helper clone usage
submodule: check argc count for git submodule--helper clone
submodule: don't pass empty string arguments to submodule--helper clone

t5551: make the test for extra HTTP headers more robustJohannes Schindelin Mon, 9 May 2016 06:19:00 +0000 (08:19 +0200)

t5551: make the test for extra HTTP headers more robust

To test that extra HTTP headers are passed correctly, t5551 verifies that
a fetch succeeds when two required headers are passed, and that the fetch
does not succeed when those headers are not passed.

However, this test would also succeed if the configuration required only
one header. As Apache's configuration is notoriously tricky (this
developer frequently requires StackOverflow's help to understand Apache's
documentation), especially when still supporting the 2.2 line, let's just
really make sure that the test verifies what we want it to verify.

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

tests: adjust the configuration for Apache 2.2Johannes Schindelin Mon, 9 May 2016 05:59:16 +0000 (07:59 +0200)

tests: adjust the configuration for Apache 2.2

Lars Schneider noticed that the configuration introduced to test the
extra HTTP headers cannot be used with Apache 2.2 (which is still
actively maintained, as pointed out by Junio Hamano).

To let the tests pass with Apache 2.2 again, let's substitute the
offending <RequireAll> and `expr` by using old school RewriteCond
statements.

As RewriteCond does not allow testing for *non*-matches, we simply match
the desired case first and let it pass by marking the RewriteRule as
'[L]' ("last rule, do not process any other matching RewriteRules after
this"), and then have another RewriteRule that matches all other cases
and lets them fail via '[F]' ("fail").

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

commit: add a commit.verbose config variablePranit Bauva Thu, 5 May 2016 09:50:02 +0000 (15:20 +0530)

commit: add a commit.verbose config variable

Add commit.verbose configuration variable as a convenience for those
who always prefer --verbose.

Add tests to check the behavior introduced by this commit and also to
verify that behavior of status doesn't break because of this commit.

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsck: detect and warn a commit with embedded NULJunio C Hamano Thu, 14 Apr 2016 17:58:22 +0000 (10:58 -0700)

fsck: detect and warn a commit with embedded NUL

Even though a Git commit object is designed to be capable of storing
any binary data as its payload, in practice people use it to describe
the changes in textual form, and tools like "git log" are designed to
treat the payload as text.

Detect and warn when we see any commit object with a NUL byte in
it.

Note that a NUL byte in the header part is already detected as a
grave error. This change is purely about the message part.

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

Documentation: fix linkgit referencesJunio C Hamano Wed, 4 May 2016 17:36:24 +0000 (10:36 -0700)

Documentation: fix linkgit references

There are a handful of incorrect "linkgit:<page>[<section>]"
instances in our documentation set.

* Some have an extra colon after "linkgit:"; fix them by removing
the extra colon;

* Some refer to a page outside the Git suite, namely curl(1); fix
them by using the `curl(1)` that already appears on the same page
for the same purpose of referring the readers to its manual page.

* Some spell the name of the page incorrectly, e.g. "rev-list" when
they mean "git-rev-list"; fix them.

* Some list the manual section incorrectly; fix them to make sure
they match what is at the top of the target of the link.

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

t6036: remove pointless test that expects failureJunio C Hamano Wed, 27 Apr 2016 22:05:57 +0000 (15:05 -0700)

t6036: remove pointless test that expects failure

One test in t6036 prepares a file whose contents contain these
lines:

<<<<<<< Temporary merge branch 1
C
=======
B
>>>>>>> Temporary merge branch 2

and uses recursive merge strategy to run criss-cross merge with it.

Manual merge resolution by users fundamentally depends on being able
to distinguish the tracked contents from the separator lines added
by "git merge" in order to allow users to tell which block of lines
came from where. You can deliberately craft a file with lines that
resemble conflict marker lines to make it impossible for the user
(the outer merge of merge-recursive counts as a user of the result
of "virtual parent" merge) to tell which part is which, and write a
test to demonstrate that with such a file that "git merge" cannot
fundamentally work well and has to fail.

It however is pointless and waste of time and resource to run such a
test that asserts the obvious.

In real life, people who do need to track files with such lines that
have <<<< ==== >>>> as their prefixes set the conflict-marker-size
attribute to make sure they will be able to tell between the tracked
lines that happen to begin with these (confusing) prefixes and the
marker lines that are added by "git merge".

Remove the test as pointless waste of resource.

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

ll-merge: use a longer conflict marker for internal... Junio C Hamano Thu, 14 Apr 2016 22:35:09 +0000 (15:35 -0700)

ll-merge: use a longer conflict marker for internal merge

The primary use of conflict markers is to help the user who resolves
the final (outer) merge by hand to show which part came from which
branch by separating the blocks of lines apart. When the conflicted
parts from a "virtual ancestor" merge created by merge-recursive
remains in the common ancestor part in the final result, however,
the conflict markers that are the same size as the final merge
become harder to see.

Increase the conflict marker size slightly for these inner merges so
that the markers from the final merge and cruft from internal merge
can be distinguished more easily.

This would help reduce the common issue that prevents "rerere" from
being used on a really complex conflict.

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

test-lib-functions.sh: rewrite test_seq without PerlJunio C Hamano Mon, 9 May 2016 19:37:01 +0000 (12:37 -0700)

test-lib-functions.sh: rewrite test_seq without Perl

Rewrite the 'seq' imitation using only commands and features that
are typically found built into modern POSIX shells, instead of
relying on Perl to run a single-liner script.

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

t4151: make sure argument to 'test -z' is givenArmin Kunaschik Mon, 9 May 2016 18:57:25 +0000 (11:57 -0700)

t4151: make sure argument to 'test -z' is given

88d50724 (am --skip: revert changes introduced by failed 3way merge,
2015-06-06), unlike all the other patches in the series, forgot to
quote the output from "$(git ls-files -u)" when using it as the
argument to "test -z", leading to a syntax error on platforms whose
test does not interpret "test -z" (no other arguments) as testing if
a string "-z" is the null string (which GNU test and test that is
built into bash and dash seem to do).

Note that $(git ls-files -u | wc -l) is deliberately left unquoted,
as some implementations of "wc -l" includes extra blank characters
in its output and cannot be compared as string, i.e. "test 0 = $(...)".

Signed-off-by: Armin Kunaschik <megabreit@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib-functions.sh: remove misleading comment on... Junio C Hamano Mon, 9 May 2016 18:36:09 +0000 (11:36 -0700)

test-lib-functions.sh: remove misleading comment on test_seq

We never used the "letters" form since we came up with "test_seq" to
replace use of non-portable "seq" in our test script, which we
introduced it at d17cf5f3 (tests: Introduce test_seq, 2012-08-04).

We use this helper to either iterate for N times (i.e. the values on
the lines do not even matter), or just to get N distinct strings
(i.e. the values on the lines themselves do not really matter, but
we care that they are different from each other and reproducible).

Stop promising that we may allow using "letters"; this would open an
easier reimplementation that does not rely on $PERL, if somebody
later wants to.

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

wrapper.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:48:01 +0000 (16:48 +0700)

wrapper.c: use warning_errno()

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

vcs-svn: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:48:00 +0000 (16:48 +0700)

vcs-svn: use error_errno()

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

upload-pack.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:59 +0000 (16:47 +0700)

upload-pack.c: use error_errno()

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

unpack-trees.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:58 +0000 (16:47 +0700)

unpack-trees.c: use error_errno()

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

transport-helper.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:57 +0000 (16:47 +0700)

transport-helper.c: use error_errno()

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

sha1_file.c: use {error,die,warning}_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:56 +0000 (16:47 +0700)

sha1_file.c: use {error,die,warning}_errno()

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

server-info.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:55 +0000 (16:47 +0700)

server-info.c: use error_errno()

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

sequencer.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:54 +0000 (16:47 +0700)

sequencer.c: use error_errno()

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

run-command.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:53 +0000 (16:47 +0700)

run-command.c: use error_errno()

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

rerere.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:52 +0000 (16:47 +0700)

rerere.c: use error_errno() and warning_errno()

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

reachable.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:51 +0000 (16:47 +0700)

reachable.c: use error_errno()

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

mailmap.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:50 +0000 (16:47 +0700)

mailmap.c: use error_errno()

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

ident.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:49 +0000 (16:47 +0700)

ident.c: use warning_errno()

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

http.c: use error_errno() and warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:48 +0000 (16:47 +0700)

http.c: use error_errno() and warning_errno()

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

grep.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:47 +0000 (16:47 +0700)

grep.c: use error_errno()

While at there, improve the error message a bit (what operation failed?)

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

gpg-interface.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:46 +0000 (16:47 +0700)

gpg-interface.c: use error_errno()

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

fast-import.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:45 +0000 (16:47 +0700)

fast-import.c: use error_errno()

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

entry.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:44 +0000 (16:47 +0700)

entry.c: use error_errno()

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

editor.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:43 +0000 (16:47 +0700)

editor.c: use error_errno()

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

diff-no-index.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:42 +0000 (16:47 +0700)

diff-no-index.c: use error_errno()

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

credential-cache--daemon.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:41 +0000 (16:47 +0700)

credential-cache--daemon.c: use warning_errno()

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

copy.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:40 +0000 (16:47 +0700)

copy.c: use error_errno()

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

connected.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:39 +0000 (16:47 +0700)

connected.c: use error_errno()

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

config.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:38 +0000 (16:47 +0700)

config.c: use error_errno()

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

compat/win32/syslog.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:37 +0000 (16:47 +0700)

compat/win32/syslog.c: use warning_errno()

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

combine-diff.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:36 +0000 (16:47 +0700)

combine-diff.c: use error_errno()

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

check-racy.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:35 +0000 (16:47 +0700)

check-racy.c: use error_errno()

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

builtin/worktree.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:34 +0000 (16:47 +0700)

builtin/worktree.c: use error_errno()

While at there, improve the error message to say _what_ failed to
remove.

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

builtin/upload-archive.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:33 +0000 (16:47 +0700)

builtin/upload-archive.c: use error_errno()

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

builtin/update-index.c: prefer "err" to "errno" in... Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:32 +0000 (16:47 +0700)

builtin/update-index.c: prefer "err" to "errno" in process_lstat_error

"errno" is already passed in as "err". Here we should use err instead of
errno. errno is probably a copy/paste mistake in e011054 (Teach
git-update-index about gitlinks - 2007-04-12)

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

builtin/rm.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:31 +0000 (16:47 +0700)

builtin/rm.c: use warning_errno()

While at there, improve the message a bit (what operation failed?) and
mark it for translation since the format string is now a sentence.

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

builtin/pack-objects.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:30 +0000 (16:47 +0700)

builtin/pack-objects.c: use die_errno() and warning_errno()

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

builtin/merge-file.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:29 +0000 (16:47 +0700)

builtin/merge-file.c: use error_errno()

All these error() calls do not print error message previously, but
because when they are called, errno should be set. Use error_errno()
instead to give more information.

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

builtin/mailsplit.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:28 +0000 (16:47 +0700)

builtin/mailsplit.c: use error_errno()

There's one change, in split_mbox(), where an error() without strerror()
as argument is converted to error_errno(). This is correct because the
previous call is fopen (not shown in the context lines), which should
set errno if it returns NULL.

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

builtin/help.c: use warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:27 +0000 (16:47 +0700)

builtin/help.c: use warning_errno()

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

builtin/fetch.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:26 +0000 (16:47 +0700)

builtin/fetch.c: use error_errno()

A couple of newlines are also removed, because both error() and
error_errno() automatically append a newline.

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

builtin/branch.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:25 +0000 (16:47 +0700)

builtin/branch.c: use error_errno()

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

builtin/am.c: use error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:24 +0000 (16:47 +0700)

builtin/am.c: use error_errno()

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

bisect.c: use die_errno() and warning_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:23 +0000 (16:47 +0700)

bisect.c: use die_errno() and warning_errno()

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

usage.c: add warning_errno() and error_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:22 +0000 (16:47 +0700)

usage.c: add warning_errno() and error_errno()

Similar to die_errno(), these functions will append strerror()
automatically.

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

usage.c: move format processing out of die_errno()Nguyễn Thái Ngọc Duy Sun, 8 May 2016 09:47:21 +0000 (16:47 +0700)

usage.c: move format processing out of die_errno()

fmt_with_err() will be shared with the coming error_errno() and
warning_errno().

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

i18n: remote: add comment for translatorsVasco Almeida Sun, 8 May 2016 20:00:18 +0000 (20:00 +0000)

i18n: remote: add comment for translators

Add comment drawing translator attention in order to align "Push
URL:" and "Fetch URL:" fields translation of git remote show output.

Aligning both fields makes the output more appealing and easier to
grasp.

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

t6302: simplify non-gpg casesJeff King Mon, 9 May 2016 16:49:00 +0000 (12:49 -0400)

t6302: simplify non-gpg cases

When commit 618310a taught t6302 to run without the GPG
prerequisite, it did so by conditionally creating the signed
tags only when gpg is available. As a result, further tests
need to take this into account, which they can do with the
test_prepare_expect helper. This is a minor hassle, though,
as the helper cannot easily cover all cases (it just matches
"signed" in the output, so all output must include the
actual refname).

Instead, let's take a different approach. We'll always
create the tags, and only conditionally sign them. This does
mean our tag-names are a minor lie, but it lets the tests
which do not care about signing easily behave the same in
all settings. We'll include a comment to document our lie
and avoid confusing further test-writers.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6041: do not compress backup tar fileStefan Beller Mon, 9 May 2016 17:09:08 +0000 (10:09 -0700)

t6041: do not compress backup tar file

The test uses the 'z' option, i.e. "compress the output while at
it", which is GNUism and not portable.

Reported-by: Armin Kunaschik <megabreit@googlemail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3513: do not compress backup tar fileStefan Beller Fri, 6 May 2016 18:37:05 +0000 (11:37 -0700)

t3513: do not compress backup tar file

The test uses the 'z' option, i.e. "compress the output while at
it", which is GNUism and not portable.

Reported-by: Armin Kunaschik <megabreit@googlemail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5601: Remove trailing space in sed expressionTorsten Bögershausen Mon, 9 May 2016 17:53:12 +0000 (19:53 +0200)

t5601: Remove trailing space in sed expression

The sed expression for IPv6, "Tested User And Host" or "tuah" used a wrong
sed expression, which doesn't work under all versions of sed.

Reported-By: Armin Kunaschik <megabreit@googlemail.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git/SVN: die when there is no commit metadataChristian Couder Sat, 7 May 2016 06:58:43 +0000 (08:58 +0200)

Git/SVN: die when there is no commit metadata

When passing a bad --trunk option to `git svn clone`, like for example the
same URL that we are cloning:

C:\Windows\system32>git svn clone
https://mycompany.svn.beanstalkapp.com/myproject --no-metadata -A
c:\temp\svn_to_git_users.txt
--trunk=https://mycompany.svn.beanstalkapp.com/myproject
--tags=https://mycompany.svn.beanstalkapp.com/myproject/tags
--branches=https://mycompany.svn.beanstalkapp.com/myproject/branches
c:\code\Git_myproject

One gets an "Use of uninitialized value $u in substitution (s///)" error:

[...]
W: +empty_dir: branches/20080918_DBDEPLOY/vendor/src/csharp/MS WCSF
Contrib/src/Services
W: +empty_dir: branches/20080918_DBDEPLOY/vendor/src/csharp/RealWorldControls/References
r530 = c276e3b039d8e38759c6fb17443349732552d7a2 (refs/remotes/origin/trunk)
Found possible branch point:
https://mycompany.svn.beanstalkapp.com/myproject/trunk =>
https://mycompany.svn.beanstalkapp.com/myproject/branches/20080918_DBDEPLOY,
529
Use of uninitialized value $u in substitution (s///) at
/mingw32/share/perl5/site_perl/Git/SVN.pm line 101.
Use of uninitialized value $u in concatenation (.) or string at
/mingw32/share/perl5/site_perl/Git/SVN.pm line 101.
refs/remotes/origin/trunk:
'https://mycompany.svn.beanstalkapp.com/myproject' not found in ''
C:\Windows\system32>

Let's fix that by just die()ing when we have an uninitialized value because we
cannot get commit metadata from a ref.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Eric Wong <e@80x24.org>

Sync with maintJunio C Hamano Fri, 6 May 2016 21:53:45 +0000 (14:53 -0700)

Sync with maint

* maint:
Almost ready for 2.8.3

Almost ready for 2.8.3Junio C Hamano Fri, 6 May 2016 21:53:36 +0000 (14:53 -0700)

Almost ready for 2.8.3

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

Merge branch 'sb/submodule-path-misc-bugs' into maintJunio C Hamano Fri, 6 May 2016 21:53:24 +0000 (14:53 -0700)

Merge branch 'sb/submodule-path-misc-bugs' into maint

"git submodule" reports the paths of submodules the command
recurses into, but this was incorrect when the command was not run
from the root level of the superproject.

* sb/submodule-path-misc-bugs:
t7407: make expectation as clear as possible
submodule update: test recursive path reporting from subdirectory
submodule update: align reporting path for custom command execution
submodule status: correct path handling in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule foreach: correct path display in recursive submodules

Merge branch 'ky/imap-send-openssl-1.1.0' into maintJunio C Hamano Fri, 6 May 2016 21:53:24 +0000 (14:53 -0700)

Merge branch 'ky/imap-send-openssl-1.1.0' into maint

Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
we use in imap-send, which has been adjusted for the change.

* ky/imap-send-openssl-1.1.0:
configure: remove checking for HMAC_CTX_cleanup
imap-send: avoid deprecated TLSv1_method()
imap-send: check NULL return of SSL_CTX_new()
imap-send: use HMAC() function provided by OpenSSL

Merge branch 'js/replace-edit-use-editor-configuration... Junio C Hamano Fri, 6 May 2016 21:53:24 +0000 (14:53 -0700)

Merge branch 'js/replace-edit-use-editor-configuration' into maint

"git replace -e" did not honour "core.editor" configuration.

* js/replace-edit-use-editor-configuration:
replace --edit: respect core.editor

Merge branch 'cc/apply' into maintJunio C Hamano Fri, 6 May 2016 21:53:23 +0000 (14:53 -0700)

Merge branch 'cc/apply' into maint

Minor code clean-up.

* cc/apply:
builtin/apply: free patch when parse_chunk() fails
builtin/apply: handle parse_binary() failure
apply: remove unused call to free() in gitdiff_{old,new}name()
builtin/apply: get rid of useless 'name' variable

Merge branch 'kn/for-each-tag-branch' into maintJunio C Hamano Fri, 6 May 2016 21:53:23 +0000 (14:53 -0700)

Merge branch 'kn/for-each-tag-branch' into maint

A minor documentation update.

* kn/for-each-tag-branch:
for-each-ref: fix description of '--contains' in manpage

Tenth batch for 2.9Junio C Hamano Fri, 6 May 2016 21:48:26 +0000 (14:48 -0700)

Tenth batch for 2.9

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

Merge branch 'jk/diff-compact-heuristic'Junio C Hamano Fri, 6 May 2016 21:45:46 +0000 (14:45 -0700)

Merge branch 'jk/diff-compact-heuristic'

Patch output from "git diff" and friends has been tweaked to be
more readable by using a blank line as a strong hint that the
contents before and after it belong to a logically separate unit.

* jk/diff-compact-heuristic:
diff: undocument the compaction heuristic knobs for experimentation
xdiff: implement empty line chunk heuristic
xdiff: add recs_match helper function

Merge branch 'ls/p4-lfs-test-fix-2.7.0'Junio C Hamano Fri, 6 May 2016 21:45:45 +0000 (14:45 -0700)

Merge branch 'ls/p4-lfs-test-fix-2.7.0'

Fix a broken test.

* ls/p4-lfs-test-fix-2.7.0:
t9824: fix wrong reference value
t9824: fix broken &&-chain in a subshell

Merge branch 'bc/object-id'Junio C Hamano Fri, 6 May 2016 21:45:44 +0000 (14:45 -0700)

Merge branch 'bc/object-id'

Move from unsigned char[20] to struct object_id continues.

* bc/object-id:
match-trees: convert several leaf functions to use struct object_id
tree-walk: convert tree_entry_extract() to use struct object_id
struct name_entry: use struct object_id instead of unsigned char sha1[20]
match-trees: convert shift_tree() and shift_tree_by() to use object_id
test-match-trees: convert to use struct object_id
sha1-name: introduce a get_oid() function

Merge branch 'bw/rebase-merge-entire-branch'Junio C Hamano Fri, 6 May 2016 21:45:44 +0000 (14:45 -0700)

Merge branch 'bw/rebase-merge-entire-branch'

"git rebase -m" could be asked to rebase an entire branch starting
from the root, but failed by assuming that there always is a parent
commit to the first commit on the branch.

* bw/rebase-merge-entire-branch:
git-rebase--merge: don't include absent parent as a base

Merge branch 'jc/drop-git-spec-in'Junio C Hamano Fri, 6 May 2016 21:45:44 +0000 (14:45 -0700)

Merge branch 'jc/drop-git-spec-in'

As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".

* jc/drop-git-spec-in:
Makefile: remove dependency on git.spec
Makefile: stop pretending to support rpmbuild

Merge branch 'js/http-custom-headers'Junio C Hamano Fri, 6 May 2016 21:45:43 +0000 (14:45 -0700)

Merge branch 'js/http-custom-headers'

HTTP transport clients learned to throw extra HTTP headers at the
server, specified via http.extraHeader configuration variable.

* js/http-custom-headers:
http: support sending custom HTTP headers

Merge branch 'sb/clone-shallow-passthru'Junio C Hamano Fri, 6 May 2016 21:45:43 +0000 (14:45 -0700)

Merge branch 'sb/clone-shallow-passthru'

"git clone" learned "--shallow-submodules" option.

* sb/clone-shallow-passthru:
clone: add `--shallow-submodules` flag

Merge branch 'ld/p4-test-py3'Junio C Hamano Fri, 6 May 2016 21:45:42 +0000 (14:45 -0700)

Merge branch 'ld/p4-test-py3'

The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.

* ld/p4-test-py3:
git-p4 tests: time_in_seconds should use $PYTHON_PATH
git-p4 tests: work with python3 as well as python2
git-p4 tests: cd to / before running python

Merge branch 'sb/config-exit-status-list'Junio C Hamano Fri, 6 May 2016 21:45:42 +0000 (14:45 -0700)

Merge branch 'sb/config-exit-status-list'

Doc update.

* sb/config-exit-status-list:
config doc: improve exit code listing

typofix: assorted typofixes in comments, documentation... Li Peng Fri, 6 May 2016 12:36:46 +0000 (20:36 +0800)

typofix: assorted typofixes in comments, documentation and messages

Many instances of duplicate words (e.g. "the the path") and
a few typoes are fixed, originally in multiple patches.

wildmatch: fix duplicate words of "the"
t: fix duplicate words of "output"
transport-helper: fix duplicate words of "read"
Git.pm: fix duplicate words of "return"
path: fix duplicate words of "look"
pack-protocol.txt: fix duplicate words of "the"
precompose-utf8: fix typo of "sequences"
split-index: fix typo
worktree.c: fix typo
remote-ext: fix typo
utf8: fix duplicate words of "the"
git-cvsserver: fix duplicate words

Signed-off-by: Li Peng <lip@dtdream.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: stop sanitizing config optionsJeff King Thu, 5 May 2016 01:22:19 +0000 (21:22 -0400)

submodule: stop sanitizing config options

The point of having a whitelist of command-line config
options to pass to submodules was two-fold:

1. It prevented obvious nonsense like using core.worktree
for multiple repos.

2. It could prevent surprise when the user did not mean
for the options to leak to the submodules (e.g.,
http.sslverify=false).

For case 1, the answer is mostly "if it hurts, don't do
that". For case 2, we can note that any such example has a
matching inverted surprise (e.g., a user who meant
http.sslverify=true to apply everywhere, but it didn't).

So this whitelist is probably not giving us any benefit, and
is already creating a hassle as people propose things to put
on it. Let's just drop it entirely.

Note that we still need to keep a special code path for
"prepare the submodule environment", because we still have
to take care to pass through $GIT_CONFIG_PARAMETERS (and
block the rest of the repo-specific environment variables).

We can do this easily from within the submodule shell
script, which lets us drop the submodule--helper option
entirely (and it's OK to do so because as a "--" program, it
is entirely a private implementation detail).

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

remote.c: specify correct plural form in "commit diverg... Nguyễn Thái Ngọc Duy Tue, 3 May 2016 00:12:30 +0000 (07:12 +0700)

remote.c: specify correct plural form in "commit diverge" message

We need to count both "ours" and "theirs" commits when selecting plural
form for this message. Note that even though in this block, both ours
and theirs must be positive (i.e. can't be in singular form), we still
keep Q_(singular, plural) because languages other than English may have
more than one plural form.

Reported-by: Alfonsogonzalez, Ernesto (GE Digital) <ernesto.alfonsogonzalez@ge.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config: consistently format $variables in monospaced... Brian Norris Wed, 4 May 2016 19:24:48 +0000 (12:24 -0700)

config: consistently format $variables in monospaced font

We don't consistently use `backticks` for formatting shell variables.
This patch improves the consistency on shell variables (and a few nearby
mentions of "gpg" commands), though it still doesn't straighten out the
use of "quotes."

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule deinit: require '--all' instead of '.' for... Stefan Beller Thu, 5 May 2016 19:52:32 +0000 (12:52 -0700)

submodule deinit: require '--all' instead of '.' for all submodules

The discussion in [1] pointed out that '.' is a faulty suggestion as
there is a corner case where it fails:

> "submodule deinit ." may have "worked" in the sense that you would
> have at least one path in your tree and avoided this "nothing
> matches" most of the time. It would have still failed with the
> exactly same error if run in an empty repository, i.e.
>
> $ E=/var/tmp/x/empty && rm -fr "$E" && mkdir -p "$E" && cd "$E"
> $ git init
> $ rungit v2.6.6 submodule deinit .
> error: pathspec '.' did not match any file(s) known to git.
> Did you forget to 'git add'?
> $ >file && git add file
> $ rungit v2.6.6 submodule deinit .
> $ echo $?
> 0

So instead of a pathspec add the '--all' option to deinit all submodules
and add a test to check for the corner case of an empty repository.

The code only needs to learn about the '--all' option and doesn't
require further changes as `git submodule--helper list "$@"` will list
all submodules when "$@" is empty.

[1] http://news.gmane.org/gmane.comp.version-control.git/289535

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

t7507-commit-verbose: improve test coverage by testing... Pranit Bauva Thu, 5 May 2016 09:50:01 +0000 (15:20 +0530)

t7507-commit-verbose: improve test coverage by testing number of diffs

Make the fake "editor" store output of grep in a file so that we can
see how many diffs were contained in the message and use them in
individual tests where ever it is required. A subsequent commit will
introduce scenarios where it is important to be able to exactly
determine how many diffs were present.

The fake "editor" is always made to succeed regardless of whether grep
found diff headers or not so that we don't have to use 'test_must_fail'
for which 'test_line_count = 0' is an easy substitute and also helps in
maintaining the consistency.

Also use write_script() to create the fake "editor".

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>