git.git
15 years agoreplace direct calls to unlink(2) with unlink_or_warn
Alex Riesen [Wed, 29 Apr 2009 21:22:56 +0000 (23:22 +0200)]
replace direct calls to unlink(2) with unlink_or_warn

This helps to notice when something's going wrong, especially on
systems which lock open files.

I used the following criteria when selecting the code for replacement:
- it was already printing a warning for the unlink failures
- it is in a function which already printing something or is
  called from such a function
- it is in a static function, returning void and the function is only
  called from a builtin main function (cmd_)
- it is in a function which handles emergency exit (signal handlers)
- it is in a function which is obvously cleaning up the lockfiles

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoIntroduce an unlink(2) wrapper which gives warning if unlink failed
Alex Riesen [Wed, 29 Apr 2009 21:21:46 +0000 (23:21 +0200)]
Introduce an unlink(2) wrapper which gives warning if unlink failed

This seem to be a very common pattern in the current code.

The function prints a generic removal failure message, the file name
which failed and readable errno presentation. The function preserves
errno and always returns the value unlink(2) returned, but prints
no message for ENOENT, as it was the most often filtered out in the
code calling unlink. Besides, removing a file is anyway the purpose of
calling unlink.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Wed, 29 Apr 2009 23:50:31 +0000 (16:50 -0700)]
Merge branch 'maint'

* maint:
  diff -c -p: do not die on submodules

Conflicts:
combine-diff.c

15 years agodaemon.c: fix segfault on OS X
Benjamin Kramer [Mon, 27 Apr 2009 13:59:49 +0000 (15:59 +0200)]
daemon.c: fix segfault on OS X

On OS X (and maybe other unices), getaddrinfo(3) returns NULL
in the ai_canonname field if it's called with an IP address for
the hostname. We'll now use the IP address for the hostname if
ai_canonname was NULL, this also matches the behaviour on Linux.

steps to reproduce:
$ git daemon --export-all
$ git clone git://127.0.0.1/frotz
=> git daemon's fork (silently) segfaults.

Remove the pointless loop while at it. There is only one iteration
because of the break; on the last line and there are no continues.

Signed-off-by: Benjamin Kramer <benny.kra@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomerge-recursive: do not die on a conflicting submodule
Junio C Hamano [Wed, 29 Apr 2009 18:08:18 +0000 (11:08 -0700)]
merge-recursive: do not die on a conflicting submodule

We cannot represent the 3-way conflicted state in the work tree
for these entries, but it is normal not to have commit objects
for them in our repository.  Just update the index and the life
will be good.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit config: error when editing a repo config and not being in one
Felipe Contreras [Wed, 29 Apr 2009 22:49:47 +0000 (01:49 +0300)]
git config: error when editing a repo config and not being in one

Let's throw an error on this specific case. If the user specifies the
config file, he must know what he is doing.

Teemu Likonen pointed this out.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoparseopt: fix documentation for --keep-dashdash
Uwe Kleine-König [Tue, 28 Apr 2009 20:29:24 +0000 (22:29 +0200)]
parseopt: fix documentation for --keep-dashdash

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoRename core.unreliableHardlinks to core.createObject
Johannes Schindelin [Mon, 27 Apr 2009 22:32:25 +0000 (00:32 +0200)]
Rename core.unreliableHardlinks to core.createObject

"Unreliable hardlinks" is a misleading description for what is happening.
So rename it to something less misleading.

Suggested by Linus Torvalds.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint-1.6.1' into maint
Junio C Hamano [Wed, 29 Apr 2009 22:40:33 +0000 (15:40 -0700)]
Merge branch 'maint-1.6.1' into maint

* maint-1.6.1:
  diff -c -p: do not die on submodules

15 years agoMerge branch 'maint-1.6.0' into maint-1.6.1
Junio C Hamano [Wed, 29 Apr 2009 20:43:13 +0000 (13:43 -0700)]
Merge branch 'maint-1.6.0' into maint-1.6.1

* maint-1.6.0:
  diff -c -p: do not die on submodules

15 years agodiff -c -p: do not die on submodules
Junio C Hamano [Wed, 29 Apr 2009 19:49:52 +0000 (12:49 -0700)]
diff -c -p: do not die on submodules

The combine diff logic knew only about blobs (and their checked-out form
in the work tree, either regular files or symlinks), and barfed when fed
submodules.  This "externalizes" gitlinks in the same way as the normal
patch generation codepath does (i.e. "Subproject commit Xxx\n") to fix the
issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agodoc: consistently use ASCIIDOC_EXTRA
Eric Blake [Tue, 28 Apr 2009 12:28:32 +0000 (06:28 -0600)]
doc: consistently use ASCIIDOC_EXTRA

For all uses of $(ASCIIDOC) in Documentation/Makefile, supply the same
options via $(ASCIIDOC_EXTRA).

Signed-off-by: Eric Blake <ebb9@byu.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: installing git in cygwin 1.7.0
Eric Blake [Tue, 28 Apr 2009 12:28:31 +0000 (06:28 -0600)]
Makefile: installing git in cygwin 1.7.0

On platforms with $X, make removes any leftover scripts 'a' from
earlier builds if a new binary 'a.exe' is now built.  However, on
cygwin 1.7.0, 'git' and 'git.exe' now consistently name the same file.
Test for file equality before attempting a remove, in order to avoid
nuking just-built binaries.

This repeats commit 0d768f7 for the installation destdir.

Signed-off-by: Eric Blake <ebb9@byu.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Tue, 28 Apr 2009 07:46:39 +0000 (00:46 -0700)]
Merge branch 'maint'

* maint:
  grep: fix segfault when "git grep '('" is given
  Documentation: fix a grammatical error in api-builtin.txt
  builtin-merge: fix a typo in an error message

15 years agoMerge branch 'maint-1.6.1' into maint
Junio C Hamano [Tue, 28 Apr 2009 07:46:25 +0000 (00:46 -0700)]
Merge branch 'maint-1.6.1' into maint

* maint-1.6.1:
  grep: fix segfault when "git grep '('" is given
  Documentation: fix a grammatical error in api-builtin.txt
  builtin-merge: fix a typo in an error message

15 years agoMerge branch 'maint-1.6.0' into maint-1.6.1
Junio C Hamano [Tue, 28 Apr 2009 07:46:20 +0000 (00:46 -0700)]
Merge branch 'maint-1.6.0' into maint-1.6.1

* maint-1.6.0:
  grep: fix segfault when "git grep '('" is given
  Documentation: fix a grammatical error in api-builtin.txt
  builtin-merge: fix a typo in an error message

15 years agoSubmittingPatches: itemize and reflect upon well written changes
Sam Vilain [Mon, 27 Apr 2009 14:38:47 +0000 (02:38 +1200)]
SubmittingPatches: itemize and reflect upon well written changes

The SubmittingPatches file was trimmed down from a somewhat
overwhelming set of requirements from the Linux Kernel equivalent;
however perhaps a little of it can be returned without making the
text too long.

Signed-off-by: Sam Vilain <sam@vilain.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: fix NO_PERL bug with gitweb
Jeff King [Tue, 28 Apr 2009 03:34:24 +0000 (23:34 -0400)]
Makefile: fix NO_PERL bug with gitweb

When the user has defined NO_PERL, we want to skip building
gitweb entirely.  However, the conditional to add
gitweb/gitweb.cgi to OTHER_PROGRAMS was evaluated before we
actually parsed the user's config.mak. This meant that "make
NO_PERL=NoThanks" worked fine, but putting "NO_PERL=NoThanks"
into your config.mak broke the build (it wanted gitweb.cgi
to satisfy "all", but the rule to build it was conditionally
ignored, so it complained).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogrep: fix segfault when "git grep '('" is given
Linus Torvalds [Mon, 27 Apr 2009 18:10:24 +0000 (11:10 -0700)]
grep: fix segfault when "git grep '('" is given

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot5701: do not get stuck in empty-push/
Johannes Schindelin [Mon, 27 Apr 2009 22:12:31 +0000 (00:12 +0200)]
t5701: do not get stuck in empty-push/

A test might happen to be the last one in the script, but other people
later may want to add more tests after your test is done.

Do not surprise them by going in a subdirectory to run a part of your test
and never coming out of it.  This fixes a162e78 in that respect.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoNetBSD compilation fix
Patrick Welche [Sun, 26 Apr 2009 13:49:00 +0000 (14:49 +0100)]
NetBSD compilation fix

Similar to other BSD variants, it needs USE_ST_TIMESPEC.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: fix a grammatical error in api-builtin.txt
Allan Caffee [Mon, 13 Apr 2009 18:11:21 +0000 (14:11 -0400)]
Documentation: fix a grammatical error in api-builtin.txt

Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-merge: fix a typo in an error message
Allan Caffee [Mon, 13 Apr 2009 18:10:08 +0000 (14:10 -0400)]
builtin-merge: fix a typo in an error message

Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd semicolon to curly brace group in main Makefile
Mark Drago [Mon, 27 Apr 2009 02:36:48 +0000 (22:36 -0400)]
Add semicolon to curly brace group in main Makefile

This semicolon is technically required by POSIX shell and indeed causes a
syntax error with e.g. bash-2.04.0.  Cf.

  http://www.opengroup.org/onlinepubs/000095399/utilities/xcu_chap02.html#tag_02_09_04_01

Signed-off-by: Mark Drago <markdrago@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoprune-packed: advanced progress even for non-existing fan-out directories
Johannes Sixt [Mon, 27 Apr 2009 07:44:58 +0000 (09:44 +0200)]
prune-packed: advanced progress even for non-existing fan-out directories

A progress indicator is used to count through the 256 object fan-out
directories while unused object files are removed. (However, it becomes
visible only if this process takes long enough.)

Previously, display_progress() was only called if object files were
actually removed. But if directories towards the end (fd/, fe/, ff/) did
not exist, this could leave a strange line

   Removing duplicate objects:  99% (255/256), done.

in the terminal instead of the expected "100% (256/256)".

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot4202: fix typo v1.6.3-rc3
Linus Torvalds [Sun, 26 Apr 2009 19:29:13 +0000 (12:29 -0700)]
t4202: fix typo

While I did a

make -j64 test > ~/t.out

to check my previous patch (in case some test actually tested 'trustctime'
or something), I noticed this one. Somebody has speeling trouble:

t4202-log.sh: line 345: test_expect_sucess: command not found

Fixed thus.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd an option not to use link(src, dest) && unlink(src) when that is unreliable
Johannes Schindelin [Sat, 25 Apr 2009 09:57:14 +0000 (11:57 +0200)]
Add an option not to use link(src, dest) && unlink(src) when that is unreliable

It seems that accessing NTFS partitions with ufsd (at least on my EeePC)
has an unnerving bug: if you link() a file and unlink() it right away,
the target of the link() will have the correct size, but consist of NULs.

It seems as if the calls are simply not serialized correctly, as single-stepping
through the function move_temp_to_file() works flawlessly.

As ufsd is "Commertial software" (sic!), I cannot fix it, and have to work
around it in Git.

At the same time, it seems that this fixes msysGit issues 222 and 229 to
assume that Windows cannot handle link() && unlink().

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoconnect: replace inet_ntop with getnameinfo
Benjamin Kramer [Fri, 24 Apr 2009 12:16:41 +0000 (14:16 +0200)]
connect: replace inet_ntop with getnameinfo

inet_ntop is not protocol independent.
getnameinfo(3) is part of POSIX and is available when getaddrinfo(3) is.
This code is only compiled when NO_IPV6 isn't defined.

The old method was buggy anyway, not every ipv6 address was converted
properly because the buffer (addr) was too small.

Signed-off-by: Benjamin Kramer <benny.kra@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: git-clean: make description more readable
Wesley J. Landaker [Sat, 25 Apr 2009 15:13:41 +0000 (09:13 -0600)]
Documentation: git-clean: make description more readable

The existing text is a little bit awkward. This rewrites the description
section to be more readable and friendly.

Signed-off-by: Wesley J. Landaker <wjl@icecavern.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: git-clean: fix minor grammatical errors
Wesley J. Landaker [Sat, 25 Apr 2009 15:13:40 +0000 (09:13 -0600)]
Documentation: git-clean: fix minor grammatical errors

There were a few minor grammatical errors that made this paragraph hard
to read. This patch fixes the errors in a very minimal manner.

Signed-off-by: Wesley J. Landaker <wjl@icecavern.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoRemove obsolete bug warning in man git-update-server-info
Sitaram Chamarty [Sat, 25 Apr 2009 10:56:52 +0000 (16:26 +0530)]
Remove obsolete bug warning in man git-update-server-info

The bug referred to was fixed in 60d0526

Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot7700-repack: repack -a now works properly, expect success from test
Brandon Casey [Fri, 24 Apr 2009 23:18:53 +0000 (18:18 -0500)]
t7700-repack: repack -a now works properly, expect success from test

Since the recent rework of the object listing mechanism of
pack-objects/rev-list, git-repack now properly packs objects from alternate
repositories even when the local repository contains packs.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
Brandon Casey [Fri, 24 Apr 2009 23:18:52 +0000 (18:18 -0500)]
t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

The '--no-thread' option is a Getopt::Long boolean option. The '--no-'
prefix (as in --no-thread) for boolean options is not supported in
Getopt::Long version 2.32 which was released with Perl 5.8.0. This version
only supports '--no' as in '--nothread'.  More recent versions of
Getopt::Long, such as version 2.34, support either prefix. So use the older
form in the tests.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoprogress bar: round to the nearest instead of truncating down
Nicolas Pitre [Fri, 24 Apr 2009 21:46:15 +0000 (17:46 -0400)]
progress bar: round to the nearest instead of truncating down

Often the throughput output is requested when the data read so far is
one smaller than multiple of 1024; because 1023/1024 is ~0.999, it often
shows up as 0.99 because the code currently truncates.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoGIT 1.6.3-rc2 v1.6.3-rc2
Junio C Hamano [Sat, 25 Apr 2009 05:54:40 +0000 (22:54 -0700)]
GIT 1.6.3-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Sat, 25 Apr 2009 05:59:08 +0000 (22:59 -0700)]
Merge branch 'maint'

* maint:
  test-genrandom: Add newline to usage string

15 years agoMerge branch 'maint-1.6.1' into maint
Junio C Hamano [Sat, 25 Apr 2009 05:58:31 +0000 (22:58 -0700)]
Merge branch 'maint-1.6.1' into maint

* maint-1.6.1:
  test-genrandom: Add newline to usage string

15 years agoMerge branch 'maint-1.6.0' into maint-1.6.1
Junio C Hamano [Sat, 25 Apr 2009 05:49:34 +0000 (22:49 -0700)]
Merge branch 'maint-1.6.0' into maint-1.6.1

* maint-1.6.0:
  test-genrandom: Add newline to usage string

15 years agot7800: respect NO_PERL
Jeff King [Fri, 24 Apr 2009 13:56:14 +0000 (09:56 -0400)]
t7800: respect NO_PERL

Difftool is written in perl, so we don't build it if NO_PERL
is set.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoremote.c: do not trigger remote.<name>.<var> codepath for two-level names
Johannes Sixt [Thu, 23 Apr 2009 13:49:05 +0000 (15:49 +0200)]
remote.c: do not trigger remote.<name>.<var> codepath for two-level names

If the config file contains a section like this:

    [remote]
            default = foo

(it should be '[remotes]') then commands like

    git status
    git checkout
    git branch -v

fail even though they are not obviously related to remotes. (These
commands write "ahead, behind" information and, therefore, access the
per-remote information).

Unknown configuration keys should be ignored, not trigger errors.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-help: silently tolerate unknown keys
Johannes Sixt [Thu, 23 Apr 2009 13:49:06 +0000 (15:49 +0200)]
builtin-help: silently tolerate unknown keys

If for some reason the config file contains a key without a subkey like

    [man]
        foo = bar

then even a plain

    git help

produces an error message. With this patch such an entry is ignored.

Additionally, the warning about unknown sub-keys is removed. It could
become annoying if new sub-keys are introduced in the future, and then
the configuration is read by an old version of git that does not know
about it.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoExplain seemingly pointless use of system in difftool
Alex Riesen [Thu, 23 Apr 2009 19:18:09 +0000 (21:18 +0200)]
Explain seemingly pointless use of system in difftool

Portability reasons.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: ignore perl/ subdirectory under NO_PERL
Junio C Hamano [Thu, 23 Apr 2009 05:42:28 +0000 (22:42 -0700)]
Makefile: ignore perl/ subdirectory under NO_PERL

The install target still descends into perl subdirectory when NO_PERL is
requested.  Fix this.

Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoconfig.txt: Make configuration paragraph more consistent
Stephen Boyd [Thu, 23 Apr 2009 09:38:02 +0000 (02:38 -0700)]
config.txt: Make configuration paragraph more consistent

By renaming 'information' to 'configuration' we capture more clearly
what a configuration file holds.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoconfig.txt: clarify sentences in the configuration and syntax sections
Stephen Boyd [Thu, 23 Apr 2009 09:38:01 +0000 (02:38 -0700)]
config.txt: clarify sentences in the configuration and syntax sections

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoconfig.txt: add missing 'the's and make words plural
Stephen Boyd [Thu, 23 Apr 2009 09:38:00 +0000 (02:38 -0700)]
config.txt: add missing 'the's and make words plural

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-format-patch.txt: general rewordings and cleanups
Stephen Boyd [Thu, 23 Apr 2009 16:16:52 +0000 (09:16 -0700)]
git-format-patch.txt: general rewordings and cleanups

Clarify --no-binary description using some words from the original
commit 37c22a4b (add --no-binary, 2008-05-9). Cleanup --suffix
description. Add --thread style option to synopsis and reorganize it a
bit. Clarify renaming patches example and the configuration paragraph.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-show-branch.txt: cleanup example description
Stephen Boyd [Thu, 23 Apr 2009 09:37:58 +0000 (02:37 -0700)]
git-show-branch.txt: cleanup example description

Add a missing quote and properly escape the ' character so docs don't
look odd. Add 'the' to make some sentences more gramatically correct.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: use lowercase for shallow and deep threading
Stephen Boyd [Thu, 23 Apr 2009 09:37:57 +0000 (02:37 -0700)]
Documentation: use lowercase for shallow and deep threading

Even when a sentence is started with 'shallow' or 'deep' use the
lowercase version to maintain consistency.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoconfig.txt: add missing format.{subjectprefix,cc,attach} variables
Stephen Boyd [Thu, 23 Apr 2009 09:37:56 +0000 (02:37 -0700)]
config.txt: add missing format.{subjectprefix,cc,attach} variables

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotest-genrandom: Add newline to usage string
Stephen Boyd [Thu, 23 Apr 2009 07:25:33 +0000 (00:25 -0700)]
test-genrandom: Add newline to usage string

A minor fix to place the terminal input on a new line if test-genrandom
is run with no arguments.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'jc/maint-read-tree-multi'
Junio C Hamano [Thu, 23 Apr 2009 02:36:19 +0000 (19:36 -0700)]
Merge branch 'jc/maint-read-tree-multi'

* jc/maint-read-tree-multi:
  checkout branch: prime cache-tree fully
  read-tree -m A B: prime cache-tree from the switched-to tree
  Move prime_cache_tree() to cache-tree.c
  read-tree A B: do not corrupt cache-tree

15 years agoAdd parsing of elm aliases to git-send-email
Bill Pemberton [Wed, 22 Apr 2009 13:41:29 +0000 (09:41 -0400)]
Add parsing of elm aliases to git-send-email

elm stores a text file version of the aliases that is
<alias> = <comment> = <email address>

This adds the parsing of this file to git-send-email

Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoConvert to use quiet option when available
Dan Loewenherz [Thu, 23 Apr 2009 01:46:02 +0000 (21:46 -0400)]
Convert to use quiet option when available

A minor fix that eliminates usage of "2>/dev/null" when --quiet or
-q has already been implemented.

Signed-off-by: Dan Loewenherz <daniel.loewenherz@yale.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix more typos/spelling in comments
Michael J Gruber [Wed, 22 Apr 2009 21:15:56 +0000 (23:15 +0200)]
Fix more typos/spelling in comments

A few more fixes on top of the automatic spell checker generated ones.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix typos / spelling in comments
Mike Ralphson [Fri, 17 Apr 2009 18:13:30 +0000 (19:13 +0100)]
Fix typos / spelling in comments

Signed-off-by: Mike Ralphson <mike@abacus.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: git-svn: fix a grammatical error without awkwardness
Wesley J. Landaker [Wed, 22 Apr 2009 15:48:58 +0000 (09:48 -0600)]
Documentation: git-svn: fix a grammatical error without awkwardness

The way the sentence is currently written, there needs to be an "its",
but this leads to: "however the remote wildcard may be anywhere as long
as it's its own" which is awkward to read.

Instead, this patch fixes he grammar in a simpler way.

Signed-off-by: Wesley J. Landaker <wjl@icecavern.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: git-svn: fix spurious bolding that mangles the output
Wesley J. Landaker [Wed, 22 Apr 2009 15:48:57 +0000 (09:48 -0600)]
Documentation: git-svn: fix spurious bolding that mangles the output

Without this fix, the output looks like:

"Keep in mind that the  (asterisk) wildcard of the local ref (right of
the :) *must be the ..." -- with half the sentence spuriously bold.

This fixes the problem by simply escaping asciidoc syntax as suggested
by Jeff King <peff@peff.net>.

Signed-off-by: Wesley J. Landaker <wjl@icecavern.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoWait for git diff to finish in git difftool
Alex Riesen [Wed, 22 Apr 2009 07:27:22 +0000 (09:27 +0200)]
Wait for git diff to finish in git difftool

In ActivetState Perl, exec does not wait for the started program. This
breaks difftool tests and may cause unexpected behaviour: git difftool
has returned, but the rest of code (diff and possibly the interactive
program are still running in the background.

Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agograph API: fix a bug in the rendering of octopus merges
Allan Caffee [Wed, 22 Apr 2009 21:27:59 +0000 (17:27 -0400)]
graph API: fix a bug in the rendering of octopus merges

An off by one error was causing octopus merges with 3 parents to not be
rendered correctly.  This regression was introduced by 427fc5.

Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agograph API: fix extra space during pre_commit_line state
Allan Caffee [Wed, 22 Apr 2009 19:52:13 +0000 (15:52 -0400)]
graph API: fix extra space during pre_commit_line state

An extra space is being inserted between the "commit" column and all of
the successive edges.  Remove this space.  This regression was
introduced by 427fc5b.

Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot4202-log: extend test coverage of graphing
Allan Caffee [Wed, 22 Apr 2009 21:27:15 +0000 (17:27 -0400)]
t4202-log: extend test coverage of graphing

Extend this test to cover the rendering of graphs with octopus merges
and pre_commit lines.

Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoRevert "stat_tracking_info(): only count real commits"
Junio C Hamano [Tue, 21 Apr 2009 23:32:18 +0000 (16:32 -0700)]
Revert "stat_tracking_info(): only count real commits"

This reverts commit 19de5d6913b9681d2bde533bccc8445c9236a648.
It produces a misleading output to decide if a merge can fast-forward.

15 years agotest-lib.sh: Help test_create_repo() find the templates dir
Michael J Gruber [Tue, 21 Apr 2009 09:21:59 +0000 (11:21 +0200)]
test-lib.sh: Help test_create_repo() find the templates dir

Currently, test_create_repo() expects that templates can be found below
`pwd`/.. This assumption fails when tests are run against a git
installed somewhere else or test_create_repo() is called from
subdirectiories (several tests do this).
Therefore, use $TEST_DIRECTORY as introduced in 2d84e9fb and expect
templates to be present in $TEST_DIRECTORY/.. which should be the root
dir of the git checkout.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'mk/maint-apply-swap'
Junio C Hamano [Tue, 21 Apr 2009 07:16:09 +0000 (00:16 -0700)]
Merge branch 'mk/maint-apply-swap'

* mk/maint-apply-swap:
  tests: make test-apply-criss-cross-rename more robust
  builtin-apply: keep information about files to be deleted
  tests: test applying criss-cross rename patch

Conflicts:
t/t4130-apply-criss-cross-rename.sh

15 years agoMerge branch 'maint'
Junio C Hamano [Tue, 21 Apr 2009 07:00:40 +0000 (00:00 -0700)]
Merge branch 'maint'

* maint:
  gitcvs-migration: Link to git-cvsimport documentation
  Fix off-by-one in read_tree_recursive

15 years agogrep: don't support "grep.color"-like config options
Markus Heidelberg [Mon, 20 Apr 2009 22:58:15 +0000 (00:58 +0200)]
grep: don't support "grep.color"-like config options

color.grep and color.grep.* is the official and documented way to
highlight grep matches. Comparable options like diff.color.* and
status.color.* exist for backward compatibility reasons only and are not
documented any more.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: fix typos / spelling mistakes
Mike Ralphson [Fri, 17 Apr 2009 18:13:28 +0000 (19:13 +0100)]
Documentation: fix typos / spelling mistakes

Signed-off-by: Mike Ralphson <mike@abacus.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-remote: fix typo in option description
Mike Ralphson [Fri, 17 Apr 2009 18:13:29 +0000 (19:13 +0100)]
builtin-remote: fix typo in option description

Signed-off-by: Mike Ralphson <mike@abacus.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoclone: add test for push on an empty clone.
Matthieu Moy [Mon, 20 Apr 2009 11:09:37 +0000 (13:09 +0200)]
clone: add test for push on an empty clone.

Commit 55f0566 (get_local_heads(): do not return random pointer if
there is no head, 2009-04-17) fixed a segfault for git push, this
patch adds a test-case to avoid future regressions.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotests: make test-apply-criss-cross-rename more robust
Michał Kiedrowicz [Sat, 18 Apr 2009 21:03:57 +0000 (23:03 +0200)]
tests: make test-apply-criss-cross-rename more robust

I realized that this test does check if git-apply succeeds, but doesn't
tell if it applies patches correctly. So I added test_cmp to check it.

I also added a test which checks swapping three files.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-apply: keep information about files to be deleted
Michał Kiedrowicz [Sat, 11 Apr 2009 19:31:00 +0000 (21:31 +0200)]
builtin-apply: keep information about files to be deleted

Example correct diff generated by `diff -M -B' might look like this:

diff --git a/file1 b/file2
similarity index 100%
rename from file1
rename to file2
diff --git a/file2 b/file1
similarity index 100%
rename from file2
rename to file1

Information about removing `file2' comes after information about creation
of new `file2' (renamed from `file1'). Existing implementation isn't able to
apply such patch, because it has to know in advance which files will be
removed.

This patch populates fn_table with information about removal of files
before calling check_patch() for each patch to be applied.

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotests: test applying criss-cross rename patch
Michał Kiedrowicz [Sat, 11 Apr 2009 15:26:24 +0000 (17:26 +0200)]
tests: test applying criss-cross rename patch

Originally reported by Linus in $gmane/116198

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitcvs-migration: Link to git-cvsimport documentation
Frank Lichtenheld [Sat, 18 Apr 2009 14:38:42 +0000 (16:38 +0200)]
gitcvs-migration: Link to git-cvsimport documentation

Signed-off-by: Frank Lichtenheld <flichtenheld@astaro.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix off-by-one in read_tree_recursive
Johannes Schindelin [Mon, 20 Apr 2009 17:44:53 +0000 (19:44 +0200)]
Fix off-by-one in read_tree_recursive

Found by valgrind.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoWindows: Skip fstat/lstat optimization in write_entry()
Johannes Sixt [Mon, 20 Apr 2009 08:17:00 +0000 (10:17 +0200)]
Windows: Skip fstat/lstat optimization in write_entry()

Commit e4c72923 (write_entry(): use fstat() instead of lstat() when file
is open, 2009-02-09) introduced an optimization of write_entry().
Unfortunately, we cannot take advantage of this optimization on Windows
because there is no guarantee that the time stamps are updated before the
file is closed:

  "The only guarantee about a file timestamp is that the file time is
   correctly reflected when the handle that makes the change is closed."

(http://msdn.microsoft.com/en-us/library/ms724290(VS.85).aspx)

The failure of this optimization on Windows can be observed most easily by
running a 'git checkout' that has to update several large files. In this
case, 'git checkout' will report modified files, but infact only the
timestamps were incorrectly recorded in the index, as can be verified by a
subsequent 'git diff', which shows no change.

Dmitry Potapov reports the same fix needs on Cygwin; this commit contains
his updates for that.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocheckout branch: prime cache-tree fully
Junio C Hamano [Mon, 20 Apr 2009 10:58:20 +0000 (03:58 -0700)]
checkout branch: prime cache-tree fully

When switching to another branch, the earlier code relied on incremental
invalidation of cache-tree entries to degrade it.  While it is not wrong
per-se, we know that the resulting index must fully match the branch we
are switching to unless the -m (merge) option is used.

We should simply fully re-prime the cache-tree using the new tree object
in such a case.  And for safety, invalidate the cache-tree as a whole in
other cases.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoread-tree -m A B: prime cache-tree from the switched-to tree
Junio C Hamano [Mon, 20 Apr 2009 10:58:19 +0000 (03:58 -0700)]
read-tree -m A B: prime cache-tree from the switched-to tree

When switching to a new branch with "read-tree -m A B", the resulting
index must match tree B and we can prime the cache tree with it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMove prime_cache_tree() to cache-tree.c
Junio C Hamano [Mon, 20 Apr 2009 10:58:18 +0000 (03:58 -0700)]
Move prime_cache_tree() to cache-tree.c

The interface to build cache-tree belongs there.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoread-tree A B: do not corrupt cache-tree
Junio C Hamano [Mon, 20 Apr 2009 10:58:17 +0000 (03:58 -0700)]
read-tree A B: do not corrupt cache-tree

An earlier commit aab3b9a (read-tree A B C: do not create a bogus index
and do not segfault, 2009-03-12) resurrected the support for an obscure
(but useful) feature to read and overlay more than one tree into the index
without the -m (merge) option.  But the fix was not enough.

Exercising this feature exposes a longstanding bug in the code that primes
the cache-tree in the index from the tree that was read.  The intention
was that when we know that the index must exactly match the tree we just
read, we prime the entire cache-tree with it.

However, the logic to detect that case incorrectly triggered if you read
two trees without -m.  This resulted in a corrupted cache-tree, and
write-tree would have produced an incorrect tree object out of such an
index.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoWindows: Work around intermittent failures in mingw_rename
Johannes Sixt [Fri, 3 Apr 2009 06:49:59 +0000 (08:49 +0200)]
Windows: Work around intermittent failures in mingw_rename

We have replaced rename() with a version that can rename a file to a
destination that already exists. Nevertheless, many users, the author
included, observe failures in the code that are not reproducible.

The theory is that the failures are due to some other process that happens
to have opened the destination file briefly at the wrong moment. (And there
is no way on Windows to delete or replace a file that is currently open.)
The most likely candidate for such a process is a virus scanner. The
failure is more often observed while there is heavy git activity (for
example while the test suite is running or during a rebase operation).

We work around the failure by retrying the rename operation if it failed
due to ERROR_ACCESS_DENIED. The retries are delayed a bit: The first only
by giving up the time slice, the next after the minimal scheduling
granularity, and if more retries are needed, then we wait some non-trivial
amount of time with exponential back-off.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: Fix snapshots requested via PATH_INFO
Holger Weiß [Tue, 31 Mar 2009 16:16:36 +0000 (18:16 +0200)]
gitweb: Fix snapshots requested via PATH_INFO

Fix the detection of the requested snapshot format, which failed for
PATH_INFO URLs since the references to the hashes which describe the
supported snapshot formats weren't dereferenced appropriately.

Signed-off-by: Holger Weiß <holger@zedat.fu-berlin.de>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'mm/maint-add-p-quit'
Junio C Hamano [Mon, 20 Apr 2009 10:39:38 +0000 (03:39 -0700)]
Merge branch 'mm/maint-add-p-quit'

* mm/maint-add-p-quit:
  git add -p: add missing "q" to patch prompt

15 years agogit add -p: add missing "q" to patch prompt
Wincent Colaiuta [Mon, 20 Apr 2009 09:42:52 +0000 (11:42 +0200)]
git add -p: add missing "q" to patch prompt

Commit cbd3a01 added a new "q" subcommand to the "git add -p"
command loop, but forgot to add it to the prompt.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSync with 1.6.2.4
Junio C Hamano [Mon, 20 Apr 2009 00:36:22 +0000 (17:36 -0700)]
Sync with 1.6.2.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoGIT 1.6.2.4 v1.6.2.4
Junio C Hamano [Mon, 20 Apr 2009 00:34:26 +0000 (17:34 -0700)]
GIT 1.6.2.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: remove {fetch,send}-pack from PROGRAMS as they are builtins
Nguyễn Thái Ngọc Duy [Mon, 20 Apr 2009 00:17:25 +0000 (10:17 +1000)]
Makefile: remove {fetch,send}-pack from PROGRAMS as they are builtins

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'ef/maint-fast-export' into maint
Junio C Hamano [Sun, 19 Apr 2009 19:40:17 +0000 (12:40 -0700)]
Merge branch 'ef/maint-fast-export' into maint

* ef/maint-fast-export:
  builtin-fast-export.c: handle nested tags
  builtin-fast-export.c: fix crash on tagged trees
  builtin-fast-export.c: turn error into warning
  test-suite: adding a test for fast-export with tag variants

15 years agoMerge branch 'mm/maint-add-p-quit' into maint
Junio C Hamano [Sun, 19 Apr 2009 19:40:14 +0000 (12:40 -0700)]
Merge branch 'mm/maint-add-p-quit' into maint

* mm/maint-add-p-quit:
  Update git-add.txt according to the new possibilities of 'git add -p'.
  add-interactive: refactor mode hunk handling
  git add -p: new "quit" command at the prompt.

15 years agoMerge branch 'lt/maint-reflog-expire' into maint
Junio C Hamano [Sun, 19 Apr 2009 19:40:11 +0000 (12:40 -0700)]
Merge branch 'lt/maint-reflog-expire' into maint

* lt/maint-reflog-expire:
  Speed up reflog pruning of unreachable commits
  Clean up reflog unreachability pruning decision

15 years agoMerge branch 'jc/maint-shared-literally' into maint
Junio C Hamano [Sun, 19 Apr 2009 19:40:05 +0000 (12:40 -0700)]
Merge branch 'jc/maint-shared-literally' into maint

* jc/maint-shared-literally:
  Update docs on behaviour of 'core.sharedRepository' and 'git init --shared'
  t1301-shared-repo: fix forced modes test

15 years agoUpdate git-add.txt according to the new possibilities of 'git add -p'.
Matthieu Moy [Thu, 16 Apr 2009 16:46:23 +0000 (18:46 +0200)]
Update git-add.txt according to the new possibilities of 'git add -p'.

The text is merely cut-and-pasted from git-add--interactive.perl. The
cut-and-paste also fixes a typo.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoadd-interactive: refactor mode hunk handling
Jeff King [Thu, 16 Apr 2009 07:14:15 +0000 (03:14 -0400)]
add-interactive: refactor mode hunk handling

The original implementation considered the mode separately
from the rest of the hunks, asking about it outside the main
hunk-selection loop. This patch instead places a mode change
as the first hunk in the loop. This has two advantages:

  1. less duplicated code (since we use the main selection
     loop). This also cleans up an inconsistency, which is
     that the main selection loop separates options with a
     comma, whereas the mode prompt used slashes.

  2. users can now skip the mode change and come back to it,
     search for it (via "/mode"), etc, as they can with other
     hunks.

To facilitate this, each hunk is now marked with a "type".
Mode hunks are not considered for splitting (which would
make no sense, and also confuses the split_hunk function),
nor are they editable. In theory, one could edit the mode
lines and change to a new mode. In practice, there are only
two modes that git cares about (0644 and 0755), so either
you want to move from one to the other or not (and you can
do that by staging or not staging).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit add -p: new "quit" command at the prompt.
Matthieu Moy [Fri, 10 Apr 2009 14:57:01 +0000 (16:57 +0200)]
git add -p: new "quit" command at the prompt.

There's already 'd' to stop staging hunks in a file, but no explicit
command to stop the interactive staging (for the current files and the
remaining ones).  Of course you can do 'd' and then ^C, but it would be
more intuitive to allow 'quit' action.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSpeed up reflog pruning of unreachable commits
Junio Hamano [Tue, 31 Mar 2009 04:34:14 +0000 (21:34 -0700)]
Speed up reflog pruning of unreachable commits

Instead of doing the (potentially very expensive) "in_merge_base()"
check for each commit that might be pruned if it is unreachable, do a
preparatory reachability graph of the commit space, so that the common
case of being reachable can be tested directly.

[ Cleaned up a bit and tweaked to actually work.  - Linus ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoClean up reflog unreachability pruning decision
Linus Torvalds [Tue, 31 Mar 2009 16:45:22 +0000 (09:45 -0700)]
Clean up reflog unreachability pruning decision

This clarifies the pruning rules for unreachable commits by having a
separate helpder function for the unreachability decision.

It's preparation for actual bigger changes to come to speed up the
decision when the reachability calculations become a bottleneck.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-fast-export.c: handle nested tags
Erik Faye-Lund [Mon, 23 Mar 2009 12:53:09 +0000 (12:53 +0000)]
builtin-fast-export.c: handle nested tags

When tags that points to tags are passed to fast-export, an error is given,
saying "Tag [TAGNAME] points nowhere?". This fix calls parse_object() on the
object before referencing it's tag, to ensure the tag-info is fully initialized.
In addition, it inserts a comment to point out where nested tags are handled.
This is consistent with the comment for signed tags.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-fast-export.c: fix crash on tagged trees
Erik Faye-Lund [Mon, 23 Mar 2009 12:53:08 +0000 (12:53 +0000)]
builtin-fast-export.c: fix crash on tagged trees

If a tag object points to a tree (or another unhandled type), the commit-
pointer is left uninitialized and later dereferenced. This patch adds a
default case to the switch that issues a warning and skips the object.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-fast-export.c: turn error into warning
Erik Faye-Lund [Mon, 23 Mar 2009 12:53:07 +0000 (12:53 +0000)]
builtin-fast-export.c: turn error into warning

fast-import doesn't have a syntax to support tree-objects (and some other
object-types), so fast-export shouldn't handle them. However, aborting the
operation is a bit drastic. This patch turns the error into a warning instead.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotest-suite: adding a test for fast-export with tag variants
Erik Faye-Lund [Mon, 23 Mar 2009 12:53:06 +0000 (12:53 +0000)]
test-suite: adding a test for fast-export with tag variants

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>