gitweb.git
Merge branch 'maint' of git://repo.or.cz/git-gui into... Junio C Hamano Sat, 1 Mar 2008 05:19:43 +0000 (21:19 -0800)

Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
git-gui: Paper bag fix info dialog when no files are staged at commit

templates/Makefile: don't depend on local umask settingGerrit Pape Thu, 28 Feb 2008 18:44:42 +0000 (18:44 +0000)

templates/Makefile: don't depend on local umask setting

Don't take the local umask setting into account when installing the
templates/* files and directories, running 'make install' with umask set
to 077 resulted in template/* installed with permissions 700 and 600.

The problem was discovered by Florian Zumbiehl, reported through
http://bugs.debian.org/467518

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Correct name of diff_flush() in API documentationDaniel Barkalow Thu, 28 Feb 2008 17:24:42 +0000 (12:24 -0500)

Correct name of diff_flush() in API documentation

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Start preparing for 1.5.4.4Junio C Hamano Thu, 28 Feb 2008 07:37:39 +0000 (23:37 -0800)

Start preparing for 1.5.4.4

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

git-gui: Paper bag fix info dialog when no files are... gitgui-0.9.3Shawn O. Pearce Thu, 28 Feb 2008 06:28:45 +0000 (01:28 -0500)

git-gui: Paper bag fix info dialog when no files are staged at commit

If the user tries to commit their changes without actually staging
anything we used to display an informational dialog suggesting they
first stage those changes, then retry the commit feature.

Unfortunately I broke this in aba15f7 ("Ensure error dialogs always
appear over all other windows") and failed to fix it in the paper
bag fix that came one day after it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Eliminate confusing "won't bisect on seeked tree" failureCarl Worth Sun, 24 Feb 2008 01:14:17 +0000 (17:14 -0800)

Eliminate confusing "won't bisect on seeked tree" failure

This error message is very confusing---it doesn't tell the user
anything about how to fix the situation. And the actual fix
for the situation ("git bisect reset") does a checkout of a
potentially random branch, (compared to what the user wants to
be on for the bisect she is starting).

The simplest way to eliminate the confusion is to just make
"git bisect start" do the cleanup itself. There's no significant
loss of safety here since we already have a general safety in
the form of the reflog.

Note: We preserve the warning for any cogito users. We do this
by switching from .git/head-name to .git/BISECT_START for the
extra state, (which is a more descriptive name anyway).

Signed-off-by: Carl Worth <cworth@cworth.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin-reflog.c: don't install new reflog on write... Brandon Casey Fri, 22 Feb 2008 18:47:08 +0000 (12:47 -0600)

builtin-reflog.c: don't install new reflog on write failure

When expiring reflog entries, a new temporary log is written which contains
only the entries to retain. After it is written, it is renamed to replace
the existing reflog. Currently, we check that writing of the new log is
successful and print a message on failure, but the original reflog is still
replaced with the new reflog even on failure. This patch causes the
original reflog to be retained if we fail when writing the new reflog.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

send-email: fix In-Reply-To regressionJay Soffian Fri, 22 Feb 2008 00:16:04 +0000 (19:16 -0500)

send-email: fix In-Reply-To regression

Fix a regression introduced by

1ca3d6e (send-email: squelch warning due to comparing undefined $_ to "")

where if the user was prompted for an initial In-Reply-To and didn't
provide one, messages would be sent out with an invalid In-Reply-To of
"<>"

Also add test cases for the regression and the fix. A small modification
was needed to allow send-email to take its replies from stdin if the
environment variable GIT_SEND_EMAIL_NOTTY is set.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix 'git cvsexportcommit -w $cvsdir ...' when used... Johan Herland Mon, 11 Feb 2008 23:43:41 +0000 (00:43 +0100)

Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR

When using the '-w $cvsdir' option to cvsexportcommit, it will chdir into
$cvsdir before executing several other git commands. If $GIT_DIR is set to
a relative path (e.g. '.'), the git commands executed by cvsexportcommit
will naturally fail.

Therefore, ensure that $GIT_DIR is absolute before the chdir to $cvsdir.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add testcase for 'git cvsexportcommit -w $cvsdir .... Johan Herland Wed, 13 Feb 2008 03:11:22 +0000 (04:11 +0100)

Add testcase for 'git cvsexportcommit -w $cvsdir ...' with relative $GIT_DIR

The testcase verifies that 'git cvsexportcommit' functions correctly when
the '-w' option is used, and GIT_DIR is set to a relative path (e.g. '.').

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Prompt to continue when editing during rebase --interactiveJonathan del Strother Wed, 27 Feb 2008 12:50:22 +0000 (12:50 +0000)

Prompt to continue when editing during rebase --interactive

On hitting an edit point in an interactive rebase, git should prompt
the user to run "git rebase --continue"

Signed-off-by: Jonathan del Strother <jon.delStrother@bestbefore.tv>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git svn log: add a note about timezones.Miklos Vajna Wed, 27 Feb 2008 13:13:00 +0000 (14:13 +0100)

Documentation/git svn log: add a note about timezones.

git svn log mimics the timezone converting behaviour of svn log, but
this was undocumented.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/maint-http-push' into maintJunio C Hamano Wed, 27 Feb 2008 19:09:44 +0000 (11:09 -0800)

Merge branch 'js/maint-http-push' into maint

* js/maint-http-push:
http-push: avoid a needless goto
http-push: do not get confused by submodules
http-push: avoid invalid memory accesses

Don't use GIT_CONFIG in t5505-remoteDaniel Barkalow Tue, 26 Feb 2008 22:15:31 +0000 (17:15 -0500)

Don't use GIT_CONFIG in t5505-remote

For some reason, t5505-remote was setting GIT_CONFIG to .git/config
and exporting it. This should have been no-op, as test framework did
the same for a long time anyway.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-am.txt: Pass -r in the example invoca... Bryan Donlan Mon, 25 Feb 2008 22:40:19 +0000 (17:40 -0500)

Documentation/git-am.txt: Pass -r in the example invocation of rm -f .dotest

Signed-off-by: Bryan Donlan <bdonlan@fushizen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

timezone_names[]: fixed the tz offset for New Zealand.Steven Drake Tue, 26 Feb 2008 00:45:53 +0000 (13:45 +1300)

timezone_names[]: fixed the tz offset for New Zealand.

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

filter-branch documentation: non-zero exit status in... Caio Marcelo de Oliveira Filho Tue, 26 Feb 2008 02:14:31 +0000 (23:14 -0300)

filter-branch documentation: non-zero exit status in command abort the filter

Since commit 8c1ce0f46b85d40f215084eed7313896300082df filter-branch fails
when a <command> has a non-zero exit status. This commit makes it clear
in the documentation and also fixes the parent-filter example, that was
incorrectly returning non-zero when the commit being tested wasn't the
one to be rewritten.

Signed-off-by: Caio Marcelo de Oliveira Filho <cmarcelo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-parse: fix potential bus error with --parseopt... Jay Soffian Tue, 26 Feb 2008 04:07:39 +0000 (23:07 -0500)

rev-parse: fix potential bus error with --parseopt option spec handling

A non-empty line containing no spaces should be treated by --parseopt as
an option group header, but was causing a bus error. Also added a test
script for rev-parse --parseopt.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use a single implementation and API for copy_file()Daniel Barkalow Mon, 25 Feb 2008 19:24:48 +0000 (14:24 -0500)

Use a single implementation and API for copy_file()

Originally by Kristian Hï¿œgsberg; I fixed the conversion of rerere, which
had a different API.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-filter-branch: add a new msg-filter... Miklos Vajna Mon, 25 Feb 2008 14:43:53 +0000 (15:43 +0100)

Documentation/git-filter-branch: add a new msg-filter example

There were no example on how to edit commit messages, so add an msg-filter
example.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Correct fast-export file mode strings to match fast... Shawn O. Pearce Mon, 25 Feb 2008 03:57:29 +0000 (22:57 -0500)

Correct fast-export file mode strings to match fast-import standard

The fast-import file format does not expect leading '0' in front
of a file mode; that is we want '100644' and '0100644'.

Thanks to Ian Clatworthy of the Bazaar project for noticing the
difference in output/input.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Protect peel_ref fallback case from NULL parse_object... Shawn O. Pearce Sun, 24 Feb 2008 08:07:19 +0000 (03:07 -0500)

Protect peel_ref fallback case from NULL parse_object result

If the SHA-1 we are requesting the object for does not exist in
the object database we get a NULL back. Accessing the type from
that is not likely to succeed on any system.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ensure 'make dist' compiles git-archive.exe on CygwinShawn O. Pearce Sun, 24 Feb 2008 05:38:04 +0000 (00:38 -0500)

Ensure 'make dist' compiles git-archive.exe on Cygwin

On Cygwin we have to use git-archive.exe as the target, otherwise
running 'make dist' does not compile git-archive in the current
directory. That may cause 'make dist' to fail on a clean source
tree that has never been built before.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT 1.5.4.3 v1.5.4.3Junio C Hamano Sat, 23 Feb 2008 19:31:04 +0000 (11:31 -0800)

GIT 1.5.4.3

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

Merge branch 'maint' of git://repo.or.cz/git-gui into... Junio C Hamano Sat, 23 Feb 2008 19:23:59 +0000 (11:23 -0800)

Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
git-gui: Focus insertion point at end of strings in repository chooser
git-gui: Avoid hardcoded Windows paths in Cygwin package files
git-gui: Default TCL_PATH to same location as TCLTK_PATH
git-gui: Paper bag fix error dialogs opening over the main window
git-gui: Ensure error dialogs always appear over all other windows
git-gui: relax "dirty" version detection
git-gui: support Git Gui.app under OS X 10.5

hash: fix lookup_hash semanticsJeff King Fri, 22 Feb 2008 19:47:27 +0000 (14:47 -0500)

hash: fix lookup_hash semantics

We were returning the _address of_ the stored item (or NULL)
instead of the item itself. While this sort of indirection
is useful for insertion (since you can lookup and then
modify), it is unnecessary for read-only lookup. Since the
hash code splits these functions between the internal
lookup_hash_entry function and the public lookup_hash
function, it makes sense for the latter to provide what
users of the library expect.

The result of this was that the index caching returned bogus
results on lookup. We unfortunately didn't catch this
because we were returning a "struct cache_entry **" as a
"void *", and accidentally assigning it to a "struct
cache_entry *".

As it happens, this actually _worked_ most of the time,
because the entries were defined as:

struct cache_entry {
struct cache_entry *next;
...
};

meaning that interpreting a "struct cache_entry **" as a
"struct cache_entry *" would yield an entry where all fields
were totally bogus _except_ for the next pointer, which
pointed to the actual cache entry. When walking the list, we
would look at the bogus "name" field, which was unlikely to
match our lookup, and then proceed to the "real" entry.

The reading of bogus data was silently ignored most of the
time, but could cause a segfault for some data (which seems
to be more common on OS X).

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

git-gui: Focus insertion point at end of strings in... Shawn O. Pearce Mon, 11 Feb 2008 05:53:52 +0000 (00:53 -0500)

git-gui: Focus insertion point at end of strings in repository chooser

When selecting a local working directory for a new repository or a
location to clone an existing repository into we now set the insert
point at the end of the selected path, allowing the user to type in
any additional parts of the path if they so desire.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Avoid hardcoded Windows paths in Cygwin packag... Shawn O. Pearce Fri, 22 Feb 2008 00:27:46 +0000 (19:27 -0500)

git-gui: Avoid hardcoded Windows paths in Cygwin package files

When we are being built by the Cygwin package maintainers we need to
embed the POSIX path to our library files and not the Windows path.
Embedding the Windows path means all end-users who install our Cygwin
package would be required to install Cygwin at the same Windows path
as the package maintainer had Cygwin installed to. This requirement
is simply not user-friendly and may be infeasible for a large number
of our users.

We now try to auto-detect if the Tcl/Tk binary we will use at runtime
is capable of translating POSIX paths into Windows paths the same way
that cygpath does the translations. If the Tcl/Tk binary gives us the
same results then it understands the Cygwin path translation process
and should be able to read our library files from a POSIX path name.

If it does not give us the same answer as cygpath then the Tcl/Tk
binary might actually be a native Win32 build (one that is not
linked against Cygwin) and thus requires the native Windows path
to our library files. We can assume this is not a Cygwin package
as the Cygwin maintainers do not currently ship a pure Win32 build
of Tcl/Tk.

Reported on the git mailing list by Jurko Gospodnetić.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Default TCL_PATH to same location as TCLTK_PATHShawn O. Pearce Fri, 22 Feb 2008 00:17:27 +0000 (19:17 -0500)

git-gui: Default TCL_PATH to same location as TCLTK_PATH

Most users set TCLTK_PATH to tell git-gui where to find wish, but they
fail to set TCL_PATH to the same Tcl installation. We use the non-GUI
tclsh during builds so headless systems are still able to create an
index file and create message files without GNU msgfmt. So it matters
to us that we find a working TCL_PATH at build time.

If TCL_PATH hasn't been set yet we can take a better guess about what
tclsh executable to use by replacing 'wish' in the executable path with
'tclsh'. We only do this replacement on the filename part of the path,
just in case the string "wish" appears in the directory paths. Most of
the time the tclsh will be installed alongside wish so this replacement
is a sensible and safe default.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Paper bag fix error dialogs opening over the... Shawn O. Pearce Thu, 21 Feb 2008 17:22:08 +0000 (12:22 -0500)

git-gui: Paper bag fix error dialogs opening over the main window

If the main window is the only toplevel we have open then we
don't have a valid grab right now, so we need to assume the
best toplevel to use for the parent is ".".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Ensure error dialogs always appear over all... Shawn O. Pearce Thu, 21 Feb 2008 04:37:07 +0000 (23:37 -0500)

git-gui: Ensure error dialogs always appear over all other windows

If we are opening an error dialog we want it to appear above all of
the other windows, even those that we may have opened with a grab
to make the window modal. Failure to do so may allow an error
dialog to open up (and grab focus!) under an existing toplevel,
making the user think git-gui has frozen up and is unresponsive,
as they cannot get to the dialog.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Clarified the meaning of git-add -u in the documentationPekka Kaitaniemi Wed, 20 Feb 2008 22:29:39 +0000 (00:29 +0200)

Clarified the meaning of git-add -u in the documentation

The git-add documentation did not state clearly that the -u switch
updates only the tracked files that are in the current directory and
its subdirectories.

Signed-off-by: Pekka Kaitaniemi <kaitanie@cc.helsinki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-clone.sh: properly configure remote even if remote... Gerrit Pape Wed, 20 Feb 2008 15:10:17 +0000 (15:10 +0000)

git-clone.sh: properly configure remote even if remote's head is dangling

When cloning a remote repository which's HEAD refers to a nonexistent
ref, git-clone cloned all existing refs, but failed to write the
configuration for 'remote'. Now it detects the dangling remote HEAD,
refuses to checkout any local branch since HEAD refers to nowhere, but
properly writes the configuration for 'remote', so that subsequent
'git fetch's don't fail.

The problem was reported by Daniel Jacobowitz through
http://bugs.debian.org/466581

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-stash: document options for git stash... Miklos Vajna Wed, 20 Feb 2008 11:31:35 +0000 (12:31 +0100)

Documentation/git-stash: document options for git stash list

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

send-email: squelch warning due to comparing undefined... Jay Soffian Wed, 20 Feb 2008 05:55:07 +0000 (00:55 -0500)

send-email: squelch warning due to comparing undefined $_ to ""

The check to see if initial_reply_to is defined was also comparing $_ to
"" for a reason I cannot ascertain (looking at the commit which made the
change didn't provide enlightenment), but if $_ is undefined, perl
generates a warning.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Rename git-core rpm to just git and rename the meta... Kristian Høgsberg Mon, 18 Feb 2008 23:11:21 +0000 (18:11 -0500)

Rename git-core rpm to just git and rename the meta-pacakge to git-all.

This fixes my favorite annoyance with the git rpm packaging: don't pull
in tla when I say yum install git! You wouldn't expect yum install gcc
to pull in gcc-gfortran, right?

With this change, and blanket 'yum update' will automatically pull in the
new 'git' package and push out the old 'git-core', and if the old 'git'
package was installed 'git-all' will be pulled in instead. A couple of
things do break though: 'yum update git-core', because yum behaves
differently when given a specific package name - it doesn't follow obsoletes.

Instead, 'yum install git' will pull in the new git rpm, which will then
push out the old 'git-core'. Similarly, to get the newest version of
the meta package, 'yum install git-all' will install git-all, which then
pushes out the old 'git' meta package.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push: document the status outputJeff King Tue, 19 Feb 2008 16:26:45 +0000 (11:26 -0500)

push: document the status output

The output was meant to be a balance of self-explanatory and
terse. In case we have erred too far on the terse side, it
doesn't hurt to explain in more detail what each line means.

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

Documentation/push: clarify matching refspec behaviorJeff King Tue, 19 Feb 2008 16:25:22 +0000 (11:25 -0500)

Documentation/push: clarify matching refspec behavior

The previous text was correct, but it was easy to miss the
fact that we are talking about "matching" refs. That is, the
text can be parsed as "we push the union of the sets
of remote and local heads" and not "we push the intersection
of the sets of remote and local heads". (The former actually
doesn't make sense if you think about it, since we don't
even _have_ some of those heads). A careful reading would
reveal the correct meaning, but it makes sense to be as
explicit as possible in documentation.

We also explicitly use and introduce the term "matching";
this is a term discussed on the list, and it seems useful
to for users to be able to refer to this behavior by name.

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

push: indicate partialness of error messageJeff King Tue, 19 Feb 2008 16:25:01 +0000 (11:25 -0500)

push: indicate partialness of error message

The existing message indicates that an error occured during
push, but it is unclear whether _any_ refs were actually
pushed (even though the status table above shows which were
pushed successfully and which were not, the message "failed
to push" implies a total failure). By indicating that "some
refs" failed, we hopefully indicate to the user that the
table above contains the details.

We could also put in an explicit "see above for details"
message, but it seemed to clutter the output quite a bit
(both on a line of its own, or at the end of the error line,
which inevitably wraps).

This could also be made more fancy if the transport
mechanism passed back more details on how many refs
succeeded and failed:

error: failed to push %d out of %d refs to '%s'

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

git-gui: relax "dirty" version detectionWincent Colaiuta Mon, 18 Feb 2008 08:36:33 +0000 (09:36 +0100)

git-gui: relax "dirty" version detection

"git gui" would complain at launch if the local version of Git was
"1.5.4.2.dirty". Loosen the regular expression to look for either
"-dirty" or ".dirty", thus eliminating spurious warnings.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

GIT 1.5.4.2 v1.5.4.2Junio C Hamano Sun, 17 Feb 2008 06:44:31 +0000 (22:44 -0800)

GIT 1.5.4.2

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

Documentation/git-reset: Add an example of resetting... Pieter de Bie Sat, 16 Feb 2008 16:48:46 +0000 (17:48 +0100)

Documentation/git-reset: Add an example of resetting selected paths

Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-reset: don't mention --mixed for... Pieter de Bie Sat, 16 Feb 2008 16:48:45 +0000 (17:48 +0100)

Documentation/git-reset: don't mention --mixed for selected-paths reset

The option is accepted, but that is the only form selected-paths
variant of the reset command takes, so there is no point mentioning it.
And while we're at it, use the dashless git call.

Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-reset:Junio C Hamano Sat, 16 Feb 2008 18:38:12 +0000 (10:38 -0800)

Documentation/git-reset:

Since 3368d11 (Remove unnecessary git-rm --cached reference from
status output), the status output marks the "Added but not yet
committed" section as "Changes to be committed".

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

commit: discard index after setting up partial commitJeff King Thu, 14 Feb 2008 17:18:23 +0000 (12:18 -0500)

commit: discard index after setting up partial commit

There may still be some entries from the original index that
should be discarded before we show the status. In
particular, if a file was added in the index but not
included in the partial commit, it would still show up in
the status listing as staged for commit.

Ultimately the correct fix is to keep the two states in
separate index_state variables. Then we can avoid having
to reload the cache from the temporary file altogether, and
just point wt_status_print at the correct index.

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

filter-branch: handle filenames that need quotingJunio C Hamano Sat, 16 Feb 2008 07:57:26 +0000 (23:57 -0800)

filter-branch: handle filenames that need quoting

The command used a very old fashioned construct to extract
filenames out of diff-index and ended up corrupting the output.
We can simply use --name-only and pipe into --stdin mode of
update-index. It's been like that for the past 2 years or so
since a94d994 (update-index: work with c-quoted name).

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

http-push: avoid a needless gotoJohannes Schindelin Thu, 14 Feb 2008 23:26:12 +0000 (23:26 +0000)

http-push: avoid a needless goto

There was a goto, and while it is not half as harmful as some people
believe, it was unnecessary here. So remove it for readability.

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

http-push: do not get confused by submodulesJohannes Schindelin Thu, 14 Feb 2008 23:32:32 +0000 (23:32 +0000)

http-push: do not get confused by submodules

When encountering submodules in a tree, http-push should not try sending
the respective object. Instead, it should ignore it.

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

http-push: avoid invalid memory accessesJohannes Schindelin Thu, 14 Feb 2008 23:25:33 +0000 (23:25 +0000)

http-push: avoid invalid memory accesses

Before objects are sent, the respective ref is locked. However,
without this patch, the lock is lifted before the last object for
that ref was sent. As a consequence, the lock data was accessed
after the lock structure was free()d.

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

diff: Fix miscounting of --check outputJunio C Hamano Sat, 16 Feb 2008 04:30:05 +0000 (20:30 -0800)

diff: Fix miscounting of --check output

c1795bb (Unify whitespace checking) incorrectly made the
checking function return without incrementing the line numbers
when there is no whitespace problem is found on a '+' line.

This resurrects the earlier behaviour.

Noticed and reported by Jay Soffian. The test script was stolen
from Jay's independent fix.

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

hg-to-git: fix parent analysisStelian Pop Fri, 15 Feb 2008 21:20:44 +0000 (22:20 +0100)

hg-to-git: fix parent analysis

Fix a bug in the hg-to-git convertor introduced by commit
1bc7c13af9f936aa80893100120b542338a10bf4: when searching the changeset
parents, 'hg log' returns an extra space at the end of the line, which
confuses the .split(' ') based tokenizer:

Traceback (most recent call last):
File "hg-to-git.py", line 123, in <module>
hgchildren[mparent] += ( str(cset), )
KeyError: ''

Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailinfo: feed only one line to handle_filter() for... Jay Soffian Fri, 15 Feb 2008 21:53:36 +0000 (16:53 -0500)

mailinfo: feed only one line to handle_filter() for QP input

The function is intended to be fed one logical line at a time to
inspect, but a QP encoded raw input line can have more than one
lines, just like BASE64 encoded one.

Quoting LF as =0A may be unusual but RFC2045 allows it.

The issue was noticed and fixed by Jay Soffian. JC added a test
to protect the fix from regressing later.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff.c: add "const" qualifier to "char *cmd" member... Christian Couder Sat, 16 Feb 2008 05:02:17 +0000 (06:02 +0100)

diff.c: add "const" qualifier to "char *cmd" member of "struct ll_diff_driver"

Also use "git_config_string" to simplify code where "cmd" is set.

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

Add "const" qualifier to "char *excludes_file".Christian Couder Sat, 16 Feb 2008 05:01:59 +0000 (06:01 +0100)

Add "const" qualifier to "char *excludes_file".

Also use "git_config_string" to simplify "config.c" code
where "excludes_file" is set.

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

Add "const" qualifier to "char *editor_program".Christian Couder Sat, 16 Feb 2008 05:01:41 +0000 (06:01 +0100)

Add "const" qualifier to "char *editor_program".

Also use "git_config_string" to simplify "config.c" code
where "editor_program" is set.

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

Add "const" qualifier to "char *pager_program".Christian Couder Sat, 16 Feb 2008 05:01:11 +0000 (06:01 +0100)

Add "const" qualifier to "char *pager_program".

Also use "git_config_string" to simplify "config.c" code
where "pager_program" is set.

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

config: add 'git_config_string' to refactor string... Christian Couder Sat, 16 Feb 2008 05:00:24 +0000 (06:00 +0100)

config: add 'git_config_string' to refactor string config variables.

In many places we just check if a value from the config file is not
NULL, then we duplicate it and return 0. This patch introduces the new
'git_config_string' function to do that.

This function is also used to refactor some code in 'config.c'.
Refactoring other files is left for other patches.

Also not all the code in "config.c" is refactored, because the function
takes a "const char **" as its first parameter, but in many places a
"char *" is used instead of a "const char *". (And C does not allow
using a "char **" instead of a "const char **" without a warning.)

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

diff.c: remove useless check for value != NULLChristian Couder Sat, 16 Feb 2008 04:59:53 +0000 (05:59 +0100)

diff.c: remove useless check for value != NULL

It is not necessary to check if value != NULL before calling
'parse_lldiff_command' as there is already a check inside this
function.

By the way this patch also improves the existing check inside
'parse_lldiff_command' by using:
return config_error_nonbool(var);
instead of:
return error("%s: lacks value", var);

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

fast-import: check return value from unpack_entry()Shawn O. Pearce Thu, 14 Feb 2008 06:34:34 +0000 (01:34 -0500)

fast-import: check return value from unpack_entry()

If the tree object we have asked for is deltafied in the packfile and
the delta did not apply correctly or was not able to be decompressed
from the packfile then we can get back NULL instead of the tree data.
This is (part of) the reason why read_sha1_file() can return NULL, so
we need to also handle it the same way.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Validate nicknames of remote branches to prohibit confu... Daniel Barkalow Fri, 15 Feb 2008 19:14:18 +0000 (14:14 -0500)

Validate nicknames of remote branches to prohibit confusing ones

The original problem was that the parsers for configuration files were
getting confused by seeing as nicknames remotes that involved
directory-changing characters. In particular, the branches config file
for ".." was particularly mystifying on platforms that can open
directories and read odd data from them.

The validation function was written by Junio Hamano (with a typo
corrected).

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff.c: replace a 'strdup' with 'xstrdup'.Christian Couder Thu, 14 Feb 2008 05:50:00 +0000 (06:50 +0100)

diff.c: replace a 'strdup' with 'xstrdup'.

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

diff.c: fixup garding of config parser from value=NULLJunio C Hamano Fri, 15 Feb 2008 17:37:54 +0000 (09:37 -0800)

diff.c: fixup garding of config parser from value=NULL

Christian Couder noticed that there still were a handcrafted error()
call that we should have converted to config_error_nonbool() where
parse_lldiff_command() parses the configuration file.

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

config: add test cases for empty value and no value... Christian Couder Thu, 7 Feb 2008 05:23:46 +0000 (06:23 +0100)

config: add test cases for empty value and no value config variables.

The tests in 't1300-repo-config.sh' did not check what happens when
an empty value like the following is used in the config file:

[emptyvalue]
variable =

Also it was not checked that a variable with no value like the
following:

[novalue]
variable

gives a boolean "true" value, while an ampty value gives a boolean
"false" value.

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

cvsimport: have default merge regex also match beginnin... Gerrit Pape Thu, 7 Feb 2008 09:36:10 +0000 (09:36 +0000)

cvsimport: have default merge regex also match beginning of commit message

The default value of @mergerx uses \W, which matches a non-word
character; this means that commit messages like "Merging FOO" are not
matched by default; using \b, which matches a word boundary, instead of
\W fixes that.

This change was suggested by Frédéric Brière through
http://bugs.debian.org/463468

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git clone -s documentation: force a new paragraph for... Miklos Vajna Tue, 12 Feb 2008 00:12:57 +0000 (01:12 +0100)

git clone -s documentation: force a new paragraph for the NOTE

It should be loud and clear.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: suggest "git rm --cached" to unstage for initia... Jeff King Tue, 12 Feb 2008 05:45:18 +0000 (00:45 -0500)

status: suggest "git rm --cached" to unstage for initial commit

It makes no sense to suggest "git reset HEAD" since we have
no HEAD commit. This actually used to work but regressed in
f26a0012.

wt_status_print_cached_header was updated to take the whole
wt_status struct rather than just the reference field.
Previously the various code paths were sometimes sending in
s->reference and sometimes sending in NULL, making the
decision on whether this was an initial commit before we
even got to this function. Now we must check the initial
flag here.

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

Protect get_author_ident_from_commit() from filenames... Junio C Hamano Wed, 13 Feb 2008 21:13:21 +0000 (13:13 -0800)

Protect get_author_ident_from_commit() from filenames in work tree

We used to use "cat-file commit $commit" to extract the original
author information from existing commit, but an earlier commit
5ac2715 (Consistent message encoding while reusing log from an
existing commit) changed it to use "git show -s $commit". If
you have a file in your work tree that can be interpreted as a
valid object name (e.g. "HEAD"), this conversion will not work.

Disambiguate by marking the end of revision parameter on the
comand line with an explicit "--" to fix this.

This breakage is most visible with rebase when a file called
"HEAD" exists in the worktree.

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

upload-pack: Initialize the exec-path.Johannes Sixt Tue, 12 Feb 2008 11:28:01 +0000 (12:28 +0100)

upload-pack: Initialize the exec-path.

Since git-upload-pack has to spawn git-pack-objects, it has to make sure
that the latter can be found in the PATH. Without this patch an attempt
to clone or pull via ssh from a server fails if the git tools are not in
the standard PATH on the server even though git clone or git pull were
invoked with --upload-pack=/path/to/git-upload-pack.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bisect: use verbatim commit subject in the bisect logJohannes Schindelin Tue, 12 Feb 2008 19:50:57 +0000 (19:50 +0000)

bisect: use verbatim commit subject in the bisect log

Due to a typo, the commit subject was shell expanded in the bisect log.
That is, if you had some shell pattern in the commit subject, bisect
would happily put all matching file names into the log.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Tested-by: Frans Pop <elendil@planet.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-cvsimport.txt: fix '-M' description.Sergei Organov Wed, 13 Feb 2008 14:31:17 +0000 (17:31 +0300)

git-cvsimport.txt: fix '-M' description.

Fix '-M' description. Old one reads as if the user can somehow "see"
the default regex when using -M along with -m.

Signed-off-by: Sergei Organov <osv@javad.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "pack-objects: only throw away data during memor... Junio C Hamano Wed, 13 Feb 2008 07:39:03 +0000 (23:39 -0800)

Revert "pack-objects: only throw away data during memory pressure"

This reverts commit 9c2174350cc0ae0f6bad126e15fe1f9f044117ab.

Nico analyzed and found out that this does not really help, and
I agree with it.

By the time this gets into action and data is actively thrown
away, performance simply goes down the drain due to the data
constantly being reloaded over and over and over and over and
over and over again, to the point of virtually making no
relative progress at all. The previous behavior of enforcing
the memory limit by dynamically shrinking the window size at
least had the effect of allowing some kind of progress, even if
the end result wouldn't be optimal.

And that's the whole point behind this memory limiting feature:
allowing some progress to be made when resources are too limited
to let the repack go unbounded.

git-gui: support Git Gui.app under OS X 10.5Jay Soffian Tue, 12 Feb 2008 02:33:52 +0000 (21:33 -0500)

git-gui: support Git Gui.app under OS X 10.5

The Tk Framework moved its location in 10.5 compared to 10.4

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Tested-by: Seth Falcon <seth@userprimary.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

config.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 21:10:27 +0000 (13:10 -0800)

config.c: guard config parser from value=NULL

user.{name,email}, core.{pager,editor,excludesfile,whitespace} and
i18n.{commit,logoutput}encoding all expect string values.

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

builtin-log.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 21:09:16 +0000 (13:09 -0800)

builtin-log.c: guard config parser from value=NULL

format.suffix expects a string value. format.numbered is bool plus "auto"

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

imap-send.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 20:04:00 +0000 (12:04 -0800)

imap-send.c: guard config parser from value=NULL

None of the configuration variables this expects is boolean.

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

wt-status.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 19:00:57 +0000 (11:00 -0800)

wt-status.c: guard config parser from value=NULL

status.color.* and color.status.* expect a string value

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

setup.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 19:00:32 +0000 (11:00 -0800)

setup.c: guard config parser from value=NULL

core.worktree expects a string value

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

remote.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 19:00:10 +0000 (11:00 -0800)

remote.c: guard config parser from value=NULL

branch.*.{remote,merge} expect a string value

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

merge-recursive.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:59:17 +0000 (10:59 -0800)

merge-recursive.c: guard config parser from value=NULL

merge.default, merge.*.{name,driver} expect a string value

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

http.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:57:22 +0000 (10:57 -0800)

http.c: guard config parser from value=NULL

http.sslcert and friends expect a string value

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

help.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:56:26 +0000 (10:56 -0800)

help.c: guard config parser from value=NULL

help.format configuration expects a string value

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

git.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:56:06 +0000 (10:56 -0800)

git.c: guard config parser from value=NULL

alias.* configuration expects a string value

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

diff.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:53:56 +0000 (10:53 -0800)

diff.c: guard config parser from value=NULL

diff.external, diff.*.command, diff.color.*, color.diff.* and
diff.*.funcname configuration variables expect a string value.

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

convert.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:53:36 +0000 (10:53 -0800)

convert.c: guard config parser from value=NULL

filter.*.smudge and filter.*.clean configuration variables expect a
string value.

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

connect.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:52:15 +0000 (10:52 -0800)

connect.c: guard config parser from value=NULL

core.gitproxy configuration expects a string value.

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

builtin-tag.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:51:31 +0000 (10:51 -0800)

builtin-tag.c: guard config parser from value=NULL

user.signingkey configuration expects a string value.

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

builtin-show-branch.c: guard config parser from value... Junio C Hamano Mon, 11 Feb 2008 18:51:03 +0000 (10:51 -0800)

builtin-show-branch.c: guard config parser from value=NULL

showbranch.default configuration expects a string value.

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

builtin-reflog.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:50:06 +0000 (10:50 -0800)

builtin-reflog.c: guard config parser from value=NULL

gc.reflogexpire and gc.reflogexpireunreachable configuration expect
a string value suitable for calling approxidate() with.

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

builtin-log.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:48:55 +0000 (10:48 -0800)

builtin-log.c: guard config parser from value=NULL

format.subjectprefix configuration expects a string value.

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

builtin-config.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:48:12 +0000 (10:48 -0800)

builtin-config.c: guard config parser from value=NULL

color configuration variables expect a string value.

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

builtin-commit.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:46:39 +0000 (10:46 -0800)

builtin-commit.c: guard config parser from value=NULL

commit.template configuration expects a string value.

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

builtin-branch.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:45:50 +0000 (10:45 -0800)

builtin-branch.c: guard config parser from value=NULL

color.branch.* configuration variables expect a string value.

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

builtin-apply.c: guard config parser from value=NULLJunio C Hamano Mon, 11 Feb 2008 18:44:49 +0000 (10:44 -0800)

builtin-apply.c: guard config parser from value=NULL

apply.whitespace configuration expects a string value.

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

Add config_error_nonbool() helper functionJunio C Hamano Mon, 11 Feb 2008 18:41:18 +0000 (10:41 -0800)

Add config_error_nonbool() helper function

This is used to report misconfigured configuration file that does not
give any value to a non-boolean variable, e.g.

[section]
var

It is perfectly fine to say it if the section.var is a boolean (it means
true), but if a variable expects a string value it should be flagged as
a configuration error.

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

builtin-gc.c: guard config parser from value=NULLMiklos Vajna Fri, 8 Feb 2008 14:26:18 +0000 (15:26 +0100)

builtin-gc.c: guard config parser from value=NULL

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive-tar.c: guard config parser from value=NULLJunio C Hamano Sat, 9 Feb 2008 04:38:22 +0000 (20:38 -0800)

archive-tar.c: guard config parser from value=NULL

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

Work around curl-gnutls not liking to be reinitializedMike Hommey Sat, 9 Feb 2008 09:41:36 +0000 (10:41 +0100)

Work around curl-gnutls not liking to be reinitialized

curl versions 7.16.3 to 7.18.0 included had a regression in which https
requests following curl_global_cleanup/init sequence would fail with ASN1
parser errors with curl-gnutls. Such sequences happen in some cases such
as git fetch.

We work around this by removing the http_init and http_cleanup calls from
get_refs_via_curl, replacing them with a transport->data initialization
with the http_walker (which does http_init).

While the http_walker is not currently used in get_refs_via_curl, http
and walker code refactor will make it use it.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

man pages are littered with .ft C and othersJonas Fonseca Mon, 4 Feb 2008 22:01:20 +0000 (23:01 +0100)

man pages are littered with .ft C and others

Jakub Narebski <jnareb@gmail.com> wrote Sun, Feb 03, 2008:
> Junio C Hamano wrote:
> > Jakub Narebski <jnareb@gmail.com> writes:
> >
> > [From] http://thread.gmane.org/gmane.comp.version-control.git/53457/focus=53458
> Julian Phillips:
> > Are you using docbook xsl 1.72? There are known problems building the
> > manpages with that version. 1.71 works, and 1.73 should work when it get
> > released.

I was able to solve this problem with this patch, which adds a XSL file
used specifically for DOCBOOK_XSL_172=YesPlease and where dots and
backslashes are escaped properly so they won't be substituted to the
wrong thing further down the "DocBook XSL pipeline". Doing the escaping
in the existing callout.xsl breaks v1.70.1. Hopefully v1.73 will end
this part of the manpage nightmare.

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

Add a BuildRequires for gettext in the spec file.James Bowes Mon, 4 Feb 2008 13:13:07 +0000 (08:13 -0500)

Add a BuildRequires for gettext in the spec file.

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: only throw away data during memory pressureMartin Koegler Mon, 11 Feb 2008 07:26:25 +0000 (08:26 +0100)

pack-objects: only throw away data during memory pressure

If pack-objects hit the memory limit, it deletes objects from the delta
window.

This patch make it only delete the data, which is recomputed, if needed again.

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>