gitweb.git
pretty: parse the gpg status lines rather than the... Michael J Gruber Thu, 14 Feb 2013 16:04:45 +0000 (17:04 +0100)

pretty: parse the gpg status lines rather than the output

Currently, parse_signature_lines() parses the gpg output for strings
which depend on LANG so it fails to recognize good commit signatures
(and thus does not fill in %G? and the like) in most locales.

Make it parse the status lines from gpg instead, which are the proper
machine interface. This fixes the problem described above.

There is a change in behavior for "%GS" which we intentionally do not
work around: "%GS" used to put quotes around the signer's uid (or
rather: it inherited from the gpg user output). We output the uid
without quotes now, just like author and committer names.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gpg_interface: allow to request status returnMichael J Gruber Thu, 14 Feb 2013 16:04:44 +0000 (17:04 +0100)

gpg_interface: allow to request status return

Currently, verify_signed_buffer() returns the user facing output only.

Allow callers to request the status output also.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log-tree: rely upon the check in the gpg_interfaceMichael J Gruber Thu, 14 Feb 2013 16:04:43 +0000 (17:04 +0100)

log-tree: rely upon the check in the gpg_interface

It's just so much clearer.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gpg-interface: check good signature in a reliable wayMichael J Gruber Thu, 14 Feb 2013 16:04:42 +0000 (17:04 +0100)

gpg-interface: check good signature in a reliable way

Currently, verify_signed_buffer() only checks the return code of gpg,
and some callers implement additional unreliable checks for "Good
signature" in the gpg output meant for the user.

Use the status output instead and parse for a line beinning with
"[GNUPG:] GOODSIG ". This is the only reliable way of checking for a
good gpg signature.

If needed we can change this easily to "[GNUPG:] VALIDSIG " if we want
to take into account the trust model.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Replace filepattern with pathspec for consistencyMatthieu Moy Tue, 12 Feb 2013 09:24:44 +0000 (10:24 +0100)

Replace filepattern with pathspec for consistency

pathspec is the most widely used term, and is the one defined in
gitglossary.txt. <filepattern> was used only in the synopsys for git-add
and git-commit, and in git-add.txt. Get rid of it.

This patch is obtained with by running:

perl -pi -e 's/filepattern/pathspec/' `git grep -l filepattern`

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

user-manual: Rewrite git-gc section for automatic packingW. Trevor King Sun, 10 Feb 2013 15:10:27 +0000 (10:10 -0500)

user-manual: Rewrite git-gc section for automatic packing

This should have happened back in 2007, when `git gc` learned about
auto (e9831e8, git-gc --auto: add documentation, 2007-09-17).

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

user-manual: Fix 'you - Git' -> 'you--Git' typoW. Trevor King Sun, 10 Feb 2013 15:10:39 +0000 (10:10 -0500)

user-manual: Fix 'you - Git' -> 'you--Git' typo

Use an em-dash, not a hyphen, to join these clauses.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

user-manual: Fix 'http' -> 'HTTP' typosW. Trevor King Sun, 10 Feb 2013 15:10:37 +0000 (10:10 -0500)

user-manual: Fix 'http' -> 'HTTP' typos

HTTP is an acronym which has not (yet) made the transition to word
status (unlike "laser", probably because lasers are inherently cooler
than HTTP ;).

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

user-manual: Fix 'both: so' -> 'both; so' typoW. Trevor King Sun, 10 Feb 2013 15:10:36 +0000 (10:10 -0500)

user-manual: Fix 'both: so' -> 'both; so' typo

The clause "so `git log ...` will return no commits..." is
independent, not a description of "both", so a semicolon is more
appropriate.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.1.3 v1.8.1.3Junio C Hamano Thu, 7 Feb 2013 23:21:10 +0000 (15:21 -0800)

Git 1.8.1.3

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

Merge branch 'mz/pick-unborn' into maintJunio C Hamano Thu, 7 Feb 2013 23:16:04 +0000 (15:16 -0800)

Merge branch 'mz/pick-unborn' into maint

"git cherry-pick" did not replay a root commit to an unborn branch.

* mz/pick-unborn:
learn to pick/revert into unborn branch
tests: move test_cmp_rev to test-lib-functions

Merge branch 'nd/fix-perf-parameters-in-tests' into... Junio C Hamano Thu, 7 Feb 2013 23:16:00 +0000 (15:16 -0800)

Merge branch 'nd/fix-perf-parameters-in-tests' into maint

* nd/fix-perf-parameters-in-tests:
test-lib.sh: unfilter GIT_PERF_*

Merge branch 'jc/do-not-let-random-file-interfere-with... Junio C Hamano Thu, 7 Feb 2013 23:15:23 +0000 (15:15 -0800)

Merge branch 'jc/do-not-let-random-file-interfere-with-completion-tests' into maint

Scripts to test bash completion was inherently flaky as it was
affected by whatever random things the user may have on $PATH.

* jc/do-not-let-random-file-interfere-with-completion-tests:
t9902: protect test from stray build artifacts

Merge branch 'ft/transport-report-segv' into maintJunio C Hamano Thu, 7 Feb 2013 23:15:08 +0000 (15:15 -0800)

Merge branch 'ft/transport-report-segv' into maint

A failure to push due to non-ff while on an unborn branch
dereferenced a NULL pointer when showing an error message.

* ft/transport-report-segv:
push: fix segfault when HEAD points nowhere

Merge branch 'sb/gpg-plug-fd-leak' into maintJunio C Hamano Thu, 7 Feb 2013 23:14:54 +0000 (15:14 -0800)

Merge branch 'sb/gpg-plug-fd-leak' into maint

We forgot to close the file descriptor reading from "gpg" output,
killing "git log --show-signature" on a long history.

* sb/gpg-plug-fd-leak:
gpg: close stderr once finished with it in verify_signed_buffer()

Merge branch 'jc/fake-ancestor-with-non-blobs' into... Junio C Hamano Thu, 7 Feb 2013 23:14:22 +0000 (15:14 -0800)

Merge branch 'jc/fake-ancestor-with-non-blobs' into maint

Rebasing the history of superproject with change in the submodule
has been broken since v1.7.12.

* jc/fake-ancestor-with-non-blobs:
apply: diagnose incomplete submodule object name better
apply: simplify build_fake_ancestor()
git-am: record full index line in the patch used while rebasing

Merge branch 'jn/auto-depend-workaround-buggy-ccache... Junio C Hamano Thu, 7 Feb 2013 23:13:34 +0000 (15:13 -0800)

Merge branch 'jn/auto-depend-workaround-buggy-ccache' into maint

Buggy versions of ccache broke the auto-generation of dependencies.

* jn/auto-depend-workaround-buggy-ccache:
Makefile: explicitly set target name for autogenerated dependencies

Start preparing for 1.8.1.3Junio C Hamano Mon, 4 Feb 2013 18:21:10 +0000 (10:21 -0800)

Start preparing for 1.8.1.3

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

Merge branch 'bc/git-p4-for-python-2.4' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:57 +0000 (10:04 -0800)

Merge branch 'bc/git-p4-for-python-2.4' into maint

* bc/git-p4-for-python-2.4:
INSTALL: git-p4 does not support Python 3
git-p4.py: support Python 2.4
git-p4.py: support Python 2.5

Merge branch 'nd/edit-branch-desc-while-detached' into... Junio C Hamano Mon, 4 Feb 2013 18:04:44 +0000 (10:04 -0800)

Merge branch 'nd/edit-branch-desc-while-detached' into maint

Attempt to "branch --edit-description" an existing branch, while
being on a detached HEAD, errored out.

* nd/edit-branch-desc-while-detached:
branch: no detached HEAD check when editing another branch's description

Merge branch 'jn/do-not-drop-username-when-reading... Junio C Hamano Mon, 4 Feb 2013 18:04:26 +0000 (10:04 -0800)

Merge branch 'jn/do-not-drop-username-when-reading-from-etc-mailname' into maint

We used to stuff "user@" and then append what we read from
/etc/mailname to come up with a default e-mail ident, but a bug lost
the "user@" part.

* jn/do-not-drop-username-when-reading-from-etc-mailname:
ident: do not drop username when reading from /etc/mailname

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3... Junio C Hamano Mon, 4 Feb 2013 18:04:22 +0000 (10:04 -0800)

Merge branch 'jk/cvsimport-does-not-work-with-cvsps3' into maint

* jk/cvsimport-does-not-work-with-cvsps3:
git-cvsimport.txt: cvsps-2 is deprecated

Merge branch 'dl/am-hg-locale' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:10 +0000 (10:04 -0800)

Merge branch 'dl/am-hg-locale' into maint

"git am" did not parse datestamp correctly from Hg generated patch,
when it is run in a locale outside C (or en)

* dl/am-hg-locale:
am: invoke perl's strftime in C locale

Merge branch 'jc/help' into maintJunio C Hamano Mon, 4 Feb 2013 18:04:06 +0000 (10:04 -0800)

Merge branch 'jc/help' into maint

* jc/help:
help: include <common-cmds.h> only in one file

Merge branch 'jc/merge-blobs' into maintJunio C Hamano Mon, 4 Feb 2013 18:03:41 +0000 (10:03 -0800)

Merge branch 'jc/merge-blobs' into maint

* jc/merge-blobs:
Makefile: Replace merge-file.h with merge-blobs.h in LIB_H
merge-tree: fix d/f conflicts
merge-tree: add comments to clarify what these functions are doing
merge-tree: lose unused "resolve_directories"
merge-tree: lose unused "flags" from merge_list
Which merge_file() function do you mean?

Merge branch 'jc/doc-maintainer' into maintJunio C Hamano Mon, 4 Feb 2013 18:03:35 +0000 (10:03 -0800)

Merge branch 'jc/doc-maintainer' into maint

* jc/doc-maintainer:
howto/maintain: document "### match next" convention in jch/pu branch
howto/maintain: mark titles for asciidoc
Documentation: update "howto maintain git"

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion... Junio C Hamano Mon, 4 Feb 2013 18:03:13 +0000 (10:03 -0800)

Merge branch 'bc/fix-array-syntax-for-3.0-in-completion-bash' into maint

Command line completion code was inadvertently made incompatible with
older versions of bash by using a newer array notation.

* bc/fix-array-syntax-for-3.0-in-completion-bash:
git-completion.bash: replace zsh notation that breaks bash 3.X

Makefile: explicitly set target name for autogenerated... Jonathan Nieder Fri, 18 Nov 2011 23:23:24 +0000 (17:23 -0600)

Makefile: explicitly set target name for autogenerated dependencies

"gcc -MF depfile -MMD -MP -c -o path/to/file.o" produces a makefile
snippet named "depfile" describing what files are needed to build the
target given by "-o". When ccache versions before v3.0pre0~187 (Fix
handling of the -MD and -MDD options, 2009-11-01) run, they execute

gcc -MF depfile -MMD -MP -E

instead to get the final content for hashing. Notice that the "-c -o"
combination is replaced by "-E". The result is a target name without
a leading path.

Thus when building git with such versions of ccache with
COMPUTE_HEADER_DEPENDENCIES enabled, the generated makefile snippets
define dependencies for the wrong target:

$ make builtin/add.o
GIT_VERSION = 1.7.8.rc3
* new build flags or prefix
CC builtin/add.o
$ head -1 builtin/.depend/add.o.d
add.o: builtin/add.c cache.h git-compat-util.h compat/bswap.h strbuf.h \

After a change in a header file, object files in a subdirectory are
not automatically rebuilt by "make":

$ touch cache.h
$ make builtin/add.o
$

Luckily we can prevent trouble by explicitly supplying the name of the
target to ccache and gcc, using the -MQ option. Do so.

Reported-and-tested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Reported-by: : 허종만 <jongman.heo@samsung.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: diagnose incomplete submodule object name betterJunio C Hamano Fri, 1 Feb 2013 03:33:27 +0000 (19:33 -0800)

apply: diagnose incomplete submodule object name better

"git am -3" uses this function to build a tree that records how the
preimage the patch was created from would have looked like. An
abbreviated object name on the index line is ordinarily sufficient
for us to figure out the object name the preimage tree would have
contained, but a change to a submodule by definition shows an object
name of a submodule commit which our repository should not have, and
get_sha1_blob() is not an appropriate way to read it (or get_sha1()
for that matter).

Use get_sha1_hex() and complain if we do not find a full object name
there.

We could read from the payload part of the patch to learn the full
object name of the commit, but the primary user "git rebase" has
been fixed to give us a full object name, so this should suffice
for now.

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

apply: simplify build_fake_ancestor()Junio C Hamano Fri, 1 Feb 2013 03:19:44 +0000 (19:19 -0800)

apply: simplify build_fake_ancestor()

The local variable sha1_ptr in the build_fake_ancestor() function
used to either point at the null_sha1[] (if the ancestor did not
have the path) or at sha1[] (if we read the object name into the
local array), but 7a98869 (apply: get rid of --index-info in favor
of --build-fake-ancestor, 2007-09-17) made the "missing in the
ancestor" case unnecessary, hence sha1_ptr, when used, always points
at the local array.

Get rid of the unneeded variable, and restructure the if/else
cascade a bit to make it easier to read. There should be no
behaviour change.

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

git-am: record full index line in the patch used while... Junio C Hamano Fri, 1 Feb 2013 03:26:21 +0000 (19:26 -0800)

git-am: record full index line in the patch used while rebasing

Earlier, a230949 (am --rebasing: get patch body from commit, not
from mailbox, 2012-06-26) learned to regenerate patch body from the
commit object while rebasing, instead of reading from the rebase-am
front-end. While doing so, it used "git diff-tree" but without
giving it the "--full-index" option.

This does not matter for in-repository objects; during rebasing, any
abbreviated object name should uniquely identify them.

But we may be rebasing a commit that contains a change to a gitlink,
in which case we usually should not have the object (it names a
commit in the submodule). A full object name is necessary to later
reconstruct a fake ancestor index for them.

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

gpg: close stderr once finished with it in verify_signe... Stephen Boyd Thu, 31 Jan 2013 18:18:40 +0000 (10:18 -0800)

gpg: close stderr once finished with it in verify_signed_buffer()

Failing to close the stderr pipe in verify_signed_buffer() causes
git to run out of file descriptors if there are many calls to
verify_signed_buffer(). An easy way to trigger this is to run

git log --show-signature --merges | grep "key"

on the linux kernel git repo. Eventually it will fail with

error: cannot create pipe for gpg: Too many open files
error: could not run gpg.

Close the stderr pipe so that this can't happen.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push: fix segfault when HEAD points nowhereFraser Tweedale Thu, 31 Jan 2013 12:22:51 +0000 (22:22 +1000)

push: fix segfault when HEAD points nowhere

After a push of a branch other than the current branch fails in
a no-ff error and if you are still on an unborn branch, the code
recently added to report the failure dereferenced a null pointer
while checking the name of the current branch.

Signed-off-by: Fraser Tweedale <frase@frase.id.au>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

INSTALL: git-p4 does not support Python 3Junio C Hamano Wed, 30 Jan 2013 19:17:59 +0000 (11:17 -0800)

INSTALL: git-p4 does not support Python 3

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

branch: no detached HEAD check when editing another... Nguyễn Thái Ngọc Duy Mon, 28 Jan 2013 01:18:13 +0000 (08:18 +0700)

branch: no detached HEAD check when editing another branch's description

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

Merge branch 'tb/t0050-maint' into maintJunio C Hamano Wed, 30 Jan 2013 15:47:46 +0000 (07:47 -0800)

Merge branch 'tb/t0050-maint' into maint

Update tests that were expecting to fail due to a bug that was
fixed earlier.

* tb/t0050-maint:
t0050: Use TAB for indentation
t0050: honor CASE_INSENSITIVE_FS in add (with different case)
t0050: known breakage vanished in merge (case change)

Merge branch 'nd/fix-directory-attrs-off-by-one' into... Junio C Hamano Tue, 29 Jan 2013 19:18:54 +0000 (11:18 -0800)

Merge branch 'nd/fix-directory-attrs-off-by-one' into maint

The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does. The initial implementation of this that was
merged to 'maint' and 1.8.1.1 had severe performance degradations.

* nd/fix-directory-attrs-off-by-one:
attr: avoid calling find_basename() twice per path
attr: fix off-by-one directory component length calculation

Merge branch 'ph/rebase-preserve-all-merges' into maintJunio C Hamano Tue, 29 Jan 2013 19:18:31 +0000 (11:18 -0800)

Merge branch 'ph/rebase-preserve-all-merges' into maint

"git rebase --preserve-merges" lost empty merges in recent versions
of Git.

* ph/rebase-preserve-all-merges:
rebase --preserve-merges: keep all merge commits including empty ones

README: update stale and/or incorrect informationJunio C Hamano Tue, 29 Jan 2013 19:10:58 +0000 (11:10 -0800)

README: update stale and/or incorrect information

Ramkumar Ramachandra noticed that the old address for the marc
archive no longer works. Update it to its marc.info address,
and also refer to the gmane site.

Remove the reference to "note from the maintainer", which is not
usually followed by any useful discussion on status, direction nor
tasks.

Also replace the reference to "What's in git.git" with "What's
cooking".

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

Git 1.8.1.2 v1.8.1.2Junio C Hamano Mon, 28 Jan 2013 19:17:54 +0000 (11:17 -0800)

Git 1.8.1.2

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

Merge branch 'ss/help-htmlpath-config-doc' into maintJunio C Hamano Mon, 28 Jan 2013 19:13:31 +0000 (11:13 -0800)

Merge branch 'ss/help-htmlpath-config-doc' into maint

* ss/help-htmlpath-config-doc:
config.txt: Document help.htmlpath config parameter

Merge branch 'nd/attr-debug-fix' into maintJunio C Hamano Mon, 28 Jan 2013 19:13:07 +0000 (11:13 -0800)

Merge branch 'nd/attr-debug-fix' into maint

* nd/attr-debug-fix:
attr: make it build with DEBUG_ATTR again

Merge branch 'ds/completion-silence-in-tree-path-probe... Junio C Hamano Mon, 28 Jan 2013 19:12:47 +0000 (11:12 -0800)

Merge branch 'ds/completion-silence-in-tree-path-probe' into maint

* ds/completion-silence-in-tree-path-probe:
git-completion.bash: silence "not a valid object" errors

Merge branch 'jn/maint-trim-vim-contrib' into maintJunio C Hamano Mon, 28 Jan 2013 19:12:36 +0000 (11:12 -0800)

Merge branch 'jn/maint-trim-vim-contrib' into maint

* jn/maint-trim-vim-contrib:
contrib/vim: simplify instructions for old vim support

Merge branch 'pe/doc-email-env-is-trumped-by-config... Junio C Hamano Mon, 28 Jan 2013 19:12:31 +0000 (11:12 -0800)

Merge branch 'pe/doc-email-env-is-trumped-by-config' into maint

* pe/doc-email-env-is-trumped-by-config:
git-commit-tree(1): correct description of defaults

Merge branch 'mk/complete-tcsh' into maintJunio C Hamano Mon, 28 Jan 2013 19:11:51 +0000 (11:11 -0800)

Merge branch 'mk/complete-tcsh' into maint

Command line completion for "tcsh" emitted an unwanted space
after completing a single directory name.

* mk/complete-tcsh:
Prevent space after directories in tcsh completion

Merge branch 'ap/status-ignored-in-ignored-directory... Junio C Hamano Mon, 28 Jan 2013 19:10:25 +0000 (11:10 -0800)

Merge branch 'ap/status-ignored-in-ignored-directory' into maint

Output from "git status --ignored" did not work well when used with
"--untracked".

* ap/status-ignored-in-ignored-directory:
status: always report ignored tracked directories
git-status: Test --ignored behavior
dir.c: Make git-status --ignored more consistent

Merge branch 'er/stop-recommending-parsecvs' into maintJunio C Hamano Mon, 28 Jan 2013 19:09:37 +0000 (11:09 -0800)

Merge branch 'er/stop-recommending-parsecvs' into maint

* er/stop-recommending-parsecvs:
Remove the suggestion to use parsecvs, which is currently broken.

Merge branch 'mh/ceiling' into maintJunio C Hamano Mon, 28 Jan 2013 19:07:18 +0000 (11:07 -0800)

Merge branch 'mh/ceiling' into maint

An element on GIT_CEILING_DIRECTORIES list that does not name the
real path to a directory (i.e. a symbolic link) could have caused
the GIT_DIR discovery logic to escape the ceiling.

* mh/ceiling:
string_list_longest_prefix(): remove function
setup_git_directory_gently_1(): resolve symlinks in ceiling paths
longest_ancestor_length(): require prefix list entries to be normalized
longest_ancestor_length(): take a string_list argument for prefixes
longest_ancestor_length(): use string_list_split()
Introduce new function real_path_if_valid()
real_path_internal(): add comment explaining use of cwd
Introduce new static function real_path_internal()

git-p4.py: support Python 2.4Brandon Casey Sat, 26 Jan 2013 19:14:33 +0000 (11:14 -0800)

git-p4.py: support Python 2.4

Python 2.4 lacks the following features:

subprocess.check_call
struct.pack_into

Take a cue from 460d1026 and provide an implementation of the
CalledProcessError exception. Then replace the calls to
subproccess.check_call with calls to subprocess.call that check the return
status and raise a CalledProcessError exception if necessary.

The struct.pack_into in t/9802 can be converted into a single struct.pack
call which is available in Python 2.4.

Signed-off-by: Brandon Casey <bcasey@nvidia.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4.py: support Python 2.5Brandon Casey Sat, 26 Jan 2013 19:14:32 +0000 (11:14 -0800)

git-p4.py: support Python 2.5

Python 2.5 and older do not accept None as the first argument to
translate() and complain with:

TypeError: expected a character buffer object

As suggested by Pete Wyckoff, let's just replace the call to translate()
with a regex search which should be more clear and more portable.

This allows git-p4 to be used with Python 2.5.

Signed-off-by: Brandon Casey <bcasey@nvidia.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

howto/maintain: document "### match next" convention... Junio C Hamano Fri, 25 Jan 2013 20:33:57 +0000 (12:33 -0800)

howto/maintain: document "### match next" convention in jch/pu branch

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

ident: do not drop username when reading from /etc... Jonathan Nieder Thu, 24 Jan 2013 23:21:46 +0000 (15:21 -0800)

ident: do not drop username when reading from /etc/mailname

An earlier conversion from fgets() to strbuf_getline() in the
codepath to read from /etc/mailname to learn the default host-part
of the ident e-mail address forgot that strbuf_getline() stores the
line at the beginning of the buffer just like fgets().

The "username@" the caller has prepared in the strbuf, expecting the
function to append the host-part to it, was lost because of this.

Reported-by: Mihai Rusu <dizzy@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9902: protect test from stray build artifactsJunio C Hamano Thu, 24 Jan 2013 23:08:37 +0000 (15:08 -0800)

t9902: protect test from stray build artifacts

When you have random build artifacts in your build directory, left
behind by running "make" while on another branch, the "git help -a"
command run by __git_list_all_commands in the completion script that
is being tested does not have a way to know that they are not part
of the subcommands this build will ship. Such extra subcommands may
come from the user's $PATH. They will interfere with the tests that
expect a certain prefix to uniquely expand to a known completion.

Instrument the completion script and give it a way for us to tell
what (subset of) subcommands we are going to ship.

Also add a test to "git --help <prefix><TAB>" expansion. It needs
to show not just commands but some selected documentation pages.

Based on an idea by Jeff King.

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

git-cvsimport.txt: cvsps-2 is deprecatedJohn Keeping Thu, 24 Jan 2013 19:18:45 +0000 (19:18 +0000)

git-cvsimport.txt: cvsps-2 is deprecated

git-cvsimport relies on version 2 of cvsps and does not work with the
new version 3. Since cvsps 3.x does not currently work as well as
version 2 for incremental import, document this fact.

Specifically, there is no way to make new git-cvsimport that supports
cvsps 3.x and have a seamless transition for existing users since cvsps
3.x needs a time from which to continue importing and git-cvsimport does
not save the time of the last import or import into a specific namespace
so there is no safe way to calculate the time of the last import.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: Replace merge-file.h with merge-blobs.h in... Ramsay Jones Tue, 22 Jan 2013 16:47:47 +0000 (16:47 +0000)

Makefile: Replace merge-file.h with merge-blobs.h in LIB_H

Commit fa2364ec ("Which merge_file() function do you mean?", 06-12-2012)
renamed the files merge-file.[ch] to merge-blobs.[ch], but forgot to
rename the header file in the definition of the LIB_H macro.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0050: Use TAB for indentationTorsten Bögershausen Mon, 21 Jan 2013 16:46:31 +0000 (17:46 +0100)

t0050: Use TAB for indentation

Use one TAB for indentation and remove empty lines

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0050: honor CASE_INSENSITIVE_FS in add (with different... Torsten Bögershausen Mon, 21 Jan 2013 16:46:15 +0000 (17:46 +0100)

t0050: honor CASE_INSENSITIVE_FS in add (with different case)

The test case "add (with different case)" indicates a
known breakage when run on a case insensitive file system.

The test is invalid for case sensitive file system, it will always fail.

Check the precondition CASE_INSENSITIVE_FS before running it.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0050: known breakage vanished in merge (case change)Torsten Bögershausen Mon, 21 Jan 2013 16:45:43 +0000 (17:45 +0100)

t0050: known breakage vanished in merge (case change)

This test case has passed since this commit:

commit 0047dd2fd1fc1980913901c5fa098357482c2842
Author: Steffen Prohaska <prohaska@zib.de>
Date: Thu May 15 07:19:54 2008 +0200

t0050: Fix merge test on case sensitive file systems

Remove the known breakage by using test_expect_success

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-for-each-ref.txt: 'raw' is a supported date formatJohn Keeping Mon, 21 Jan 2013 16:22:06 +0000 (16:22 +0000)

git-for-each-ref.txt: 'raw' is a supported date format

Commit 7dff9b3 (Support 'raw' date format) added a raw date format.
Update the git-for-each-ref documentation to include this.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Start preparing for 1.8.1.2Junio C Hamano Mon, 21 Jan 2013 01:26:04 +0000 (17:26 -0800)

Start preparing for 1.8.1.2

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

Merge branch 'nz/send-email-headers-are-case-insensitiv... Junio C Hamano Mon, 21 Jan 2013 01:22:49 +0000 (17:22 -0800)

Merge branch 'nz/send-email-headers-are-case-insensitive' into maint

When users spell "cc:" in lowercase in the fake "header" in the
trailer part, "git send-email" failed to pick up the addresses from
there. As e-mail headers field names are case insensitive, this
script should follow suit and treat "cc:" and "Cc:" the same way.

* nz/send-email-headers-are-case-insensitive:
git-send-email: treat field names as case-insensitively

Merge branch 'rs/zip-with-uncompressed-size-in-the... Junio C Hamano Mon, 21 Jan 2013 01:22:27 +0000 (17:22 -0800)

Merge branch 'rs/zip-with-uncompressed-size-in-the-header' into maint

"git archive" did not record uncompressed size in the header when
streaming a zip archive, which confused some implementations of
unzip.

* rs/zip-with-uncompressed-size-in-the-header:
archive-zip: write uncompressed size into header even with streaming

Merge branch 'rs/zip-tests' into maintJunio C Hamano Mon, 21 Jan 2013 01:22:22 +0000 (17:22 -0800)

Merge branch 'rs/zip-tests' into maint

* rs/zip-tests:
t5003: check if unzip supports symlinks
t5000, t5003: move ZIP tests into their own script
t0024, t5000: use test_lazy_prereq for UNZIP
t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead

help: include <common-cmds.h> only in one fileJunio C Hamano Sat, 19 Jan 2013 06:35:04 +0000 (22:35 -0800)

help: include <common-cmds.h> only in one file

This header not only declares but also defines the contents of the
array that holds the list of command names and help text. Do not
include it in multiple places to waste text space.

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

am: invoke perl's strftime in C localeDmitry V. Levin Mon, 14 Jan 2013 20:59:33 +0000 (00:59 +0400)

am: invoke perl's strftime in C locale

We used to convert timestamps in metadata comment of Hg patch to
mbox-looking Date: field using strftime, without making sure the
resulting string is not translated. Always use C locale for this.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-completion.bash: replace zsh notation that breaks... Brandon Casey Fri, 18 Jan 2013 19:24:01 +0000 (11:24 -0800)

git-completion.bash: replace zsh notation that breaks bash 3.X

When commit d8b45314 began separating the zsh completion from the bash
completion, it introduced a zsh completion "bridge" section into the bash
completion script for zsh users to use until they migrated to the zsh
script. The zsh '+=()' append-to-array notation prevents bash 3.00.15 on
CentOS 4.x from loading the completion script and breaks test 9902. We can
easily work around this by using standard Bash array notation.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

attr: avoid calling find_basename() twice per pathDuy Nguyen Wed, 16 Jan 2013 06:02:38 +0000 (13:02 +0700)

attr: avoid calling find_basename() twice per path

find_basename() is only used inside collect_all_attrs(), called once
in prepare_attr_stack, then again after prepare_attr_stack()
returns. Both calls return exact same value. Reorder the code to do
the same task once. Also avoid strlen() because we knows the length
after finding basename.

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

config.txt: Document help.htmlpath config parameterSebastian Staudt Tue, 15 Jan 2013 20:56:21 +0000 (21:56 +0100)

config.txt: Document help.htmlpath config parameter

Signed-off-by: Sebastian Staudt <koraktor@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib.sh: unfilter GIT_PERF_*Nguyễn Thái Ngọc Duy Tue, 15 Jan 2013 13:50:56 +0000 (20:50 +0700)

test-lib.sh: unfilter GIT_PERF_*

These variables are user parameters to control how to run the perf
tests. Allow users to do so.

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

attr: make it build with DEBUG_ATTR againNguyễn Thái Ngọc Duy Tue, 15 Jan 2013 02:49:26 +0000 (09:49 +0700)

attr: make it build with DEBUG_ATTR again

Commit 82dce99 (attr: more matching optimizations from .gitignore -
2012-10-15) changed match_attr structure but it did not update
DEBUG_ATTR-specific code. This fixes it.

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

attr: fix off-by-one directory component length calculationNguyễn Thái Ngọc Duy Tue, 15 Jan 2013 13:35:24 +0000 (20:35 +0700)

attr: fix off-by-one directory component length calculation

94bc671 (Add directory pattern matching to attributes - 2012-12-08)
uses find_basename() to calculate the length of directory part in
prepare_attr_stack. This function expects the directory without the
trailing slash (as "origin" field in match_attr struct is without the
trailing slash). find_basename() includes the trailing slash and
confuses push/pop algorithm.

Consider path = "abc/def" and the push down code:

while (1) {
len = strlen(attr_stack->origin);
if (dirlen <= len)
break;
cp = memchr(path + len + 1, '/', dirlen - len - 1);
if (!cp)
cp = path + dirlen;

dirlen is 4, not 3, without this patch. So when attr_stack->origin is
"abc", it'll miss the exit condition because 4 <= 3 is wrong. It'll
then try to push "abc/" down the attr stack (because "cp" would be
NULL). So we have both "abc" and "abc/" in the stack.

Next time when "abc/ghi" is checked, "abc/" is popped out because of
the off-by-one dirlen, only to be pushed back in again by the above
code. This repeats for all files in the same directory. Which means
at least one failed open syscall per file, or more if .gitattributes
exists.

This is the perf result with 10 runs on git.git:

Test 94bc671^ 94bc671 HEAD
----------------------------------------------------------------------------------------------------------
7810.1: grep worktree, cheap regex 0.02(0.01+0.04) 0.05(0.03+0.05) +150.0% 0.02(0.01+0.04) +0.0%
7810.2: grep worktree, expensive regex 0.25(0.94+0.01) 0.26(0.94+0.02) +4.0% 0.25(0.93+0.02) +0.0%
7810.3: grep --cached, cheap regex 0.11(0.10+0.00) 0.12(0.10+0.02) +9.1% 0.10(0.10+0.00) -9.1%
7810.4: grep --cached, expensive regex 0.61(0.60+0.01) 0.62(0.61+0.01) +1.6% 0.61(0.60+0.00) +0.0%

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

rebase --preserve-merges: keep all merge commits includ... Phil Hord Sat, 12 Jan 2013 20:46:01 +0000 (15:46 -0500)

rebase --preserve-merges: keep all merge commits including empty ones

Since 90e1818f9a (git-rebase: add keep_empty flag, 2012-04-20)
'git rebase --preserve-merges' fails to preserve empty merge commits
unless --keep-empty is also specified. Merge commits should be
preserved in order to preserve the structure of the rebased graph,
even if the merge commit does not introduce changes to the parent.

Teach rebase not to drop merge commits only because they are empty.

A special case which is not handled by this change is for a merge commit
whose parents are now the same commit because all the previous different
parents have been dropped as a result of this rebase or some previous
operation.

Signed-off-by: Phil Hord <hordp@cisco.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.1.1 v1.8.1.1Junio C Hamano Mon, 14 Jan 2013 16:04:50 +0000 (08:04 -0800)

Git 1.8.1.1

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

Merge branch 'jk/complete-commit-c' into maintJunio C Hamano Mon, 14 Jan 2013 16:02:35 +0000 (08:02 -0800)

Merge branch 'jk/complete-commit-c' into maint

* jk/complete-commit-c:
completion: complete refs for "git commit -c"

Merge branch 'jk/unify-exit-code-by-receiving-signal... Junio C Hamano Mon, 14 Jan 2013 16:01:27 +0000 (08:01 -0800)

Merge branch 'jk/unify-exit-code-by-receiving-signal' into maint

* jk/unify-exit-code-by-receiving-signal:
run-command: encode signal death as a positive integer

Merge branch 'jn/xml-depends-on-asciidoc-conf' into... Junio C Hamano Mon, 14 Jan 2013 16:01:00 +0000 (08:01 -0800)

Merge branch 'jn/xml-depends-on-asciidoc-conf' into maint

* jn/xml-depends-on-asciidoc-conf:
docs: manpage XML depends on asciidoc.conf

Merge branch 'jk/maint-fast-import-doc-reorder' into... Junio C Hamano Mon, 14 Jan 2013 15:59:46 +0000 (07:59 -0800)

Merge branch 'jk/maint-fast-import-doc-reorder' into maint

* jk/maint-fast-import-doc-reorder:
git-fast-import(1): reorganise options
git-fast-import(1): combine documentation of --[no-]relative-marks

Merge branch 'jk/shortlog-no-wrap-doc' into maintJunio C Hamano Mon, 14 Jan 2013 15:59:03 +0000 (07:59 -0800)

Merge branch 'jk/shortlog-no-wrap-doc' into maint

* jk/shortlog-no-wrap-doc:
git-shortlog(1): document behaviour of zero-width wrap

Merge branch 'jk/maint-fast-import-doc-dedup-done'... Junio C Hamano Mon, 14 Jan 2013 15:48:39 +0000 (07:48 -0800)

Merge branch 'jk/maint-fast-import-doc-dedup-done' into maint

* jk/maint-fast-import-doc-dedup-done:
git-fast-import(1): remove duplicate '--done' option

Merge branch 'jc/comment-cygwin-win32api-in-makefile... Junio C Hamano Mon, 14 Jan 2013 15:34:37 +0000 (07:34 -0800)

Merge branch 'jc/comment-cygwin-win32api-in-makefile' into maint

* jc/comment-cygwin-win32api-in-makefile:
Makefile: add comment on CYGWIN_V15_WIN32API

Merge branch 'rs/leave-base-name-in-name-field-of-tar... Junio C Hamano Mon, 14 Jan 2013 15:34:12 +0000 (07:34 -0800)

Merge branch 'rs/leave-base-name-in-name-field-of-tar' into maint

A tar archive created by "git archive" recorded a directory in a
way that made NetBSD's implementation of "tar" sometimes unhappy.

* rs/leave-base-name-in-name-field-of-tar:
archive-tar: split long paths more carefully

Merge branch 'jl/interrupt-clone-remove-separate-git... Junio C Hamano Mon, 14 Jan 2013 15:33:48 +0000 (07:33 -0800)

Merge branch 'jl/interrupt-clone-remove-separate-git-dir' into maint

When "git clone --separate-git-dir=$over_there" is interrupted, it
failed to remove the real location of the $GIT_DIR it created. This
was most visible when interrupting a submodule update.

* jl/interrupt-clone-remove-separate-git-dir:
clone: support atomic operation with --separate-git-dir

Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credi... Junio C Hamano Mon, 14 Jan 2013 15:33:30 +0000 (07:33 -0800)

Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit' into maint

"git merge --no-edit" computed who were involved in the work done
on the side branch, even though that information is to be discarded
without getting seen in the editor.

* jc/maint-fmt-merge-msg-no-edit-lose-credit:
merge --no-edit: do not credit people involved in the side branch

Merge branch 'jc/apply-trailing-blank-removal' into... Junio C Hamano Mon, 14 Jan 2013 15:33:08 +0000 (07:33 -0800)

Merge branch 'jc/apply-trailing-blank-removal' into maint

"git apply" misbehaved when fixing whitespace breakages by removing
excess trailing blank lines.

* jc/apply-trailing-blank-removal:
apply.c:update_pre_post_images(): the preimage can be truncated

Merge branch 'pf/editor-ignore-sigint' into maintJunio C Hamano Mon, 14 Jan 2013 15:32:25 +0000 (07:32 -0800)

Merge branch 'pf/editor-ignore-sigint' into maint

The behaviour visible to the end users was confusing, when they
attempt to kill a process spawned in the editor that was in turn
launched by Git with SIGINT (or SIGQUIT), as Git would catch that
signal and die. We ignore these signals now.

* pf/editor-ignore-sigint:
fix compilation with NO_PTHREADS
launch_editor: propagate signals from editor to git
run-command: do not warn about child death from terminal
launch_editor: ignore terminal signals while editor has control
launch_editor: refactor to use start/finish_command
run-command: drop silent_exec_failure arg from wait_or_whine

Merge branch 'mk/maint-graph-infinity-loop' into maintJunio C Hamano Mon, 14 Jan 2013 15:32:18 +0000 (07:32 -0800)

Merge branch 'mk/maint-graph-infinity-loop' into maint

* mk/maint-graph-infinity-loop:
graph.c: infinite loop in git whatchanged --graph -m

Merge branch 'as/api-allocation-doc' into maintJunio C Hamano Sat, 12 Jan 2013 00:51:01 +0000 (16:51 -0800)

Merge branch 'as/api-allocation-doc' into maint

* as/api-allocation-doc:
api-allocation-growing.txt: encourage better variable naming

Merge branch 'jk/enable-test-lint-by-default' into... Junio C Hamano Sat, 12 Jan 2013 00:49:37 +0000 (16:49 -0800)

Merge branch 'jk/enable-test-lint-by-default' into maint

We have two simple and quick tests to catch common mistakes when
writing test scripts, but we did not run them by default when
running tests.

* jk/enable-test-lint-by-default:
tests: turn on test-lint by default

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failu... Junio C Hamano Sat, 12 Jan 2013 00:49:01 +0000 (16:49 -0800)

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure' into maint

"git merge" started calling prepare-commit-msg hook like "git
commit" does some time ago, but forgot to pay attention to the exit
status of the hook.

* ap/merge-stop-at-prepare-commit-msg-failure:
merge: Honor prepare-commit-msg return code

Merge branch 'jc/submittingpatches' into maintJunio C Hamano Sat, 12 Jan 2013 00:48:54 +0000 (16:48 -0800)

Merge branch 'jc/submittingpatches' into maint

* jc/submittingpatches:
SubmittingPatches: give list and maintainer addresses
SubmittingPatches: remove overlong checklist
SubmittingPatches: mention subsystems with dedicated repositories
SubmittingPatches: who am I and who cares?

Merge branch 'os/gitweb-highlight-uncaptured' into... Junio C Hamano Sat, 12 Jan 2013 00:48:30 +0000 (16:48 -0800)

Merge branch 'os/gitweb-highlight-uncaptured' into maint

"gitweb", when sorting by age to show repositories with new
activities first, used to sort repositories with absolutely nothing
in it early, which was not very useful.

* os/gitweb-highlight-uncaptured:
gitweb: fix error in sanitize when highlight is enabled

Merge branch 'jn/less-reconfigure' into maintJunio C Hamano Sat, 12 Jan 2013 00:48:03 +0000 (16:48 -0800)

Merge branch 'jn/less-reconfigure' into maint

When autoconf is used, any build on a different commit always ran
"config.status --recheck" even when unnecessary.

* jn/less-reconfigure:
build: do not automatically reconfigure unless configure.ac changed

Merge branch 'kb/maint-bundle-doc' into maintJunio C Hamano Sat, 12 Jan 2013 00:47:56 +0000 (16:47 -0800)

Merge branch 'kb/maint-bundle-doc' into maint

* kb/maint-bundle-doc:
Documentation: full-ness of a bundle is significant for cloning
Documentation: correct example restore from bundle

Merge branch 'as/test-name-alias-uniquely' into maintJunio C Hamano Sat, 12 Jan 2013 00:47:34 +0000 (16:47 -0800)

Merge branch 'as/test-name-alias-uniquely' into maint

* as/test-name-alias-uniquely:
Use longer alias names in subdirectory tests

Merge branch 'jn/warn-on-inaccessible-loosen' into... Junio C Hamano Sat, 12 Jan 2013 00:47:07 +0000 (16:47 -0800)

Merge branch 'jn/warn-on-inaccessible-loosen' into maint

When attempting to read the XDG-style $HOME/.config/git/config and
finding that $HOME/.config/git is a file, we gave a wrong error
message, instead of treating the case as "a custom config file does
not exist there" and moving on.

* jn/warn-on-inaccessible-loosen:
config: exit on error accessing any config file
doc: advertise GIT_CONFIG_NOSYSTEM
config: treat user and xdg config permission problems as errors
config, gitignore: failure to access with ENOTDIR is ok

Merge branch 'ja/directory-attrs' into maintJunio C Hamano Sat, 12 Jan 2013 00:46:46 +0000 (16:46 -0800)

Merge branch 'ja/directory-attrs' into maint

The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does.

* ja/directory-attrs:
Add directory pattern matching to attributes

Merge branch 'jc/fetch-ignore-symref' into maintJunio C Hamano Sat, 12 Jan 2013 00:45:44 +0000 (16:45 -0800)

Merge branch 'jc/fetch-ignore-symref' into maint

"git fetch --mirror" and fetch that uses other forms of refspec with
wildcard used to attempt to update a symbolic ref that match the
wildcard on the receiving end, which made little sense (the real ref
that is pointed at by the symbolic ref would be updated anyway).

Symbolic refs no longer are affected by such a fetch.

* jc/fetch-ignore-symref:
fetch: ignore wildcarded refspecs that update local symbolic refs

Merge branch 'ss/svn-prompt' into maintJunio C Hamano Sat, 12 Jan 2013 00:45:06 +0000 (16:45 -0800)

Merge branch 'ss/svn-prompt' into maint

The way "git svn" asked for password using SSH_ASKPASS and
GIT_ASKPASS was not in line with the rest of the system.

* ss/svn-prompt:
git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
git-svn, perl/Git.pm: add central method for prompting passwords

git-completion.bash: silence "not a valid object" errorsDylan Smith Fri, 11 Jan 2013 08:06:22 +0000 (03:06 -0500)

git-completion.bash: silence "not a valid object" errors

Trying to complete the command

git show master:./file

would cause a "Not a valid object name" error to be output on standard
error. Silence the error so it won't appear on the command line.

Signed-off-by: Dylan Smith <dylan.ah.smith@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>