git.git
17 years agogit-daemon: don't ignore pid-file write failure
Jim Meyering [Mon, 21 May 2007 07:58:01 +0000 (09:58 +0200)]
git-daemon: don't ignore pid-file write failure

Note: since the consequence of failure is to call die,
I don't bother to close "f".

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoannotate: make it work from subdirectories.
Junio C Hamano [Mon, 21 May 2007 02:56:28 +0000 (19:56 -0700)]
annotate: make it work from subdirectories.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-config: Correct asciidoc documentation for --int/--bool
Frank Lichtenheld [Sun, 20 May 2007 22:12:58 +0000 (00:12 +0200)]
git-config: Correct asciidoc documentation for --int/--bool

The asciidoc documentation seemed to indicate that type specifiers
are honoured on writing operations which they aren't. Make this
more clear.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agot1300: Add tests for git-config --bool --get
Frank Lichtenheld [Sun, 20 May 2007 22:12:57 +0000 (00:12 +0200)]
t1300: Add tests for git-config --bool --get

Noticed that there were only tests for --int, but not
for --bool. Add some.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agounpack-trees.c: verify_uptodate: remove dead code
Sven Verdoolaege [Sun, 20 May 2007 17:26:37 +0000 (19:26 +0200)]
unpack-trees.c: verify_uptodate: remove dead code

This code was killed by commit fcc387db9bc453dc7e07a262873481af2ee9e5c8.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUse PATH_MAX instead of TEMPFILE_PATH_LEN
Fernando J. Pereda [Sun, 20 May 2007 13:35:46 +0000 (15:35 +0200)]
Use PATH_MAX instead of TEMPFILE_PATH_LEN

Signed-off-by: Fernando J. Pereda <ferdy@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agobranch: fix segfault when resolving an invalid HEAD
Jonas Fonseca [Sun, 20 May 2007 12:19:17 +0000 (14:19 +0200)]
branch: fix segfault when resolving an invalid HEAD

Caused by return value of resolve_ref being passed directly
to xstrdup whereby the sanity checking was never reached.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoGIT 1.5.1.6 v1.5.1.6
Junio C Hamano [Sun, 20 May 2007 01:18:24 +0000 (18:18 -0700)]
GIT 1.5.1.6

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://linux-nfs.org/~bfields/git into maint
Junio C Hamano [Sun, 20 May 2007 06:25:59 +0000 (23:25 -0700)]
Merge branch 'maint' of git://linux-nfs.org/~bfields/git into maint

* 'maint' of git://linux-nfs.org/~bfields/git:
  user-manual: Add section on ignoring files
  user-manual: finding commits referencing given file content
  user-manual: discourage shared repository
  tutorial: revise index introduction
  tutorials: add user-manual links

17 years agogit-svn: don't minimize-url when doing an init that tracks multiple paths
Eric Wong [Sat, 19 May 2007 10:59:02 +0000 (03:59 -0700)]
git-svn: don't minimize-url when doing an init that tracks multiple paths

I didn't have a chance to test the off-by-default minimize-url
stuff enough before, but it's quite broken for people passing
the --trunk/-T, --tags/-t, --branches/-b switches to "init" or
"clone" commands.

Additionally, follow-parent functionality seems broken when we're
not connected to the root of the repository.

Default behavior for "traditional" git-svn users who only track
one directory (without needing follow-parent) should be
reasonable, as those users started using things before
minimize-url functionality existed.

Behavior for users more used to the git-svnimport-like command
line will also benefit from a more-flexible command-line than
svnimport given the assumption they're working with
non-restrictive read permissions on the repository.

I hope to properly fix these bugs when I get a chance to in the
next week or so, but I would like to get this stopgap measure of
reverting to the old behavior as soon as possible.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: avoid crashing svnserve when creating new directories
Eric Wong [Sat, 19 May 2007 09:58:37 +0000 (02:58 -0700)]
git-svn: avoid crashing svnserve when creating new directories

When sorting directory names by depth (slash ("/") count) and
closing the deepest directories first (as the protocol
requires), we failed to put the root baton (with an empty string
as its key "") after top-level directories (which did not have
any slashes).

This resulted in svnserve being in a situation it couldn't
handle and caused a segmentation fault on the remote server.

This bug did not affect users of DAV and filesystem repositories.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Confirmed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agouser-manual: Add section on ignoring files
Johan Herland [Wed, 16 May 2007 00:31:40 +0000 (02:31 +0200)]
user-manual: Add section on ignoring files

The todo list at the end of the user manual says that something must be
said about .gitignore. Also, there seems to be a lack of documentation
on how to choose between the various types of ignore files (.gitignore
vs. .git/info/exclude, etc.).

This patch adds a section on ignoring files which try to introduce how
to tell git about ignored files, and how the different strategies
complement eachother.

The syntax of exclude patterns is explained in a simplified manner, with
a reference to git-ls-files(1) which already contains a more thorough
explanation.

Signed-off-by: Johan Herland <johan@herland.net>
17 years agouser-manual: finding commits referencing given file content
J. Bruce Fields [Sat, 19 May 2007 04:37:25 +0000 (00:37 -0400)]
user-manual: finding commits referencing given file content

Another amusing git exploration example brought up in irc.  (Credit to
aeruder for the complete solution.)

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: discourage shared repository
J. Bruce Fields [Tue, 15 May 2007 04:30:58 +0000 (00:30 -0400)]
user-manual: discourage shared repository

I don't really want to look like we're encouraging the shared repository
thing.  Take down some of the argument for using purely
single-developer-owned repositories and collaborating using patches and
pulls instead.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agotutorial: revise index introduction
J. Bruce Fields [Fri, 18 May 2007 04:51:42 +0000 (00:51 -0400)]
tutorial: revise index introduction

The embarassing history of this tutorial is that I started it without
really understanding the index well, so I avoided mentioning it.

And we all got the idea that "index" was a word to avoid using around
newbies, but it was reluctantly mentioned that *something* had to be
said.  The result is a little awkward: the discussion of the index never
actually uses that word, and isn't well-integrated into the surrounding
material.

Let's just go ahead and use the word "index" from the very start, and
try to demonstrate its use with a minimum of lecturing.

Also, remove discussion of using git-commit with explicit filenames.
We're already a bit slow here to get people to their first commit, and
I'm not convinced this is really so important.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agotutorials: add user-manual links
J. Bruce Fields [Fri, 18 May 2007 03:56:08 +0000 (23:56 -0400)]
tutorials: add user-manual links

Mention the user manual, especially as an alternative introduction for
user's mainly interested in read-only operations.

And fix a typo while we're there.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoDocumentation: Reformatted SYNOPSIS for several commands
Matthias Kestenholz [Fri, 18 May 2007 13:39:34 +0000 (15:39 +0200)]
Documentation: Reformatted SYNOPSIS for several commands

Signed-off-by: Matthias Kestenholz <matthias@spinlock.ch>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: Added [verse] to SYNOPSIS where necessary
Matthias Kestenholz [Fri, 18 May 2007 13:39:33 +0000 (15:39 +0200)]
Documentation: Added [verse] to SYNOPSIS where necessary

Signed-off-by: Matthias Kestenholz <matthias@spinlock.ch>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoGIT v1.5.1.5 v1.5.1.5
Junio C Hamano [Sat, 19 May 2007 00:21:31 +0000 (17:21 -0700)]
GIT v1.5.1.5

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://linux-nfs.org/~bfields/git into maint
Junio C Hamano [Sat, 19 May 2007 00:13:47 +0000 (17:13 -0700)]
Merge branch 'maint' of git://linux-nfs.org/~bfields/git into maint

* 'maint' of git://linux-nfs.org/~bfields/git:
  user-manual: reorganize public git repo discussion
  user-manual: listing commits reachable from some refs not others
  user-manual: introduce git
  user-manual: add a "counting commits" example
  user-manual: move howto/using-topic-branches into manual
  user-manual: move howto/make-dist.txt into user manual
  Documentation: remove howto's now incorporated into manual
  user-manual: move quick-start to an appendix
  glossary: expand and clarify some definitions, prune cross-references
  user-manual: revise birdseye-view chapter
  Add a birdview-on-the-source-code section to the user manual

17 years agoDocumentation: git-rev-list's "patterns"
Petr Baudis [Fri, 18 May 2007 23:21:53 +0000 (01:21 +0200)]
Documentation: git-rev-list's "patterns"

git-rev-list(1) talks about patterns as values for the
--grep, --committed etc. parameters, without going into detail.
This patch mentions that these patterns are actually regexps.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agouser-manual: reorganize public git repo discussion
J. Bruce Fields [Tue, 15 May 2007 04:00:29 +0000 (00:00 -0400)]
user-manual: reorganize public git repo discussion

Helping a couple people set up public repos recently, I wanted to point
them at this piece of the user manual, but found it wasn't as helpful as
it could be:

- It starts with a big explanation of why you'd want a public
  repository, not necessary in their case since they already knew
  why they wanted that.  So, separate that out.
- It skimps on some of the git-daemon details, and puts the http
  export information first.  Fix that.

Also group all the public repo subsections into a single section, and do
some miscellaneous related editing.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: listing commits reachable from some refs not others
J. Bruce Fields [Mon, 14 May 2007 02:58:06 +0000 (22:58 -0400)]
user-manual: listing commits reachable from some refs not others

This is just an amusing example raised by someone in irc.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: introduce git
J. Bruce Fields [Sun, 13 May 2007 06:23:11 +0000 (02:23 -0400)]
user-manual: introduce git

Well, we should say at least something about what git is.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: add a "counting commits" example
J. Bruce Fields [Sun, 13 May 2007 06:14:45 +0000 (02:14 -0400)]
user-manual: add a "counting commits" example

This is partly just an excuse to mention --pretty= and rev-list.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: move howto/using-topic-branches into manual
J. Bruce Fields [Sun, 13 May 2007 05:48:47 +0000 (01:48 -0400)]
user-manual: move howto/using-topic-branches into manual

Move howto/using-topic-branches into the user manual as an example for
the "sharing development" chapter.  While we're at it, remove some
discussion that's covered in earlier chapters, modernize somewhat (use
separate-heads setup, remotes, replace "whatchanged" by "log", etc.),
and replace syntax we'd need to explain by syntax we've already covered
(e.g. old..new instead of new ^old).

The result may not really describe what Tony Luck does any more.... Hope
that's not annoying.

Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: move howto/make-dist.txt into user manual
J. Bruce Fields [Sun, 13 May 2007 04:14:40 +0000 (00:14 -0400)]
user-manual: move howto/make-dist.txt into user manual

There seems to be a perception that the howto's are bit-rotting a
little.  The manual might be a more visible location for some of them,
and make-dist.txt seems like a good candidate to include as an example
in the manual.

For now, incorporate much of it verbatim.  Later we may want to update
the example a bit.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoDocumentation: remove howto's now incorporated into manual
J. Bruce Fields [Sun, 13 May 2007 03:52:24 +0000 (23:52 -0400)]
Documentation: remove howto's now incorporated into manual

These two howto's have both been copied into the manual.  I'd rather not
maintain both versions if possible, and I think the user-manual will be
more visible than the howto directory.  (Though I wouldn't mind some
duplication if people really like having them here.)

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: move quick-start to an appendix
J. Bruce Fields [Sun, 13 May 2007 02:55:40 +0000 (22:55 -0400)]
user-manual: move quick-start to an appendix

The quick start interrupts the flow of the manual a bit.  Move it to
"appendix A" but add a reference to it in the preface.  Also rename the
todo chapter to "appendix B", and revise the preface a little.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoglossary: expand and clarify some definitions, prune cross-references
J. Bruce Fields [Sun, 13 May 2007 02:17:03 +0000 (22:17 -0400)]
glossary: expand and clarify some definitions, prune cross-references

Revise and expand some of the definitions in the glossary, based in part
on a recent thread started by a user looking for help with some of the
jargon.  I've borrowed some of the language from Linus's email on that
thread.  (I'm assuming standing permission to plagiarize Linus's
email....)

Also start making a few changes to mitigate the appearance of
"circularity" mentioned in that thread:
- feel free to use somewhat longer definitions and to explain
  some things more than once instead of relying purely on
  cross-references
- don't use cross-references when they're redundant: eliminate
  self-references and repeated references to the same entry.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: revise birdseye-view chapter
J. Bruce Fields [Sat, 12 May 2007 23:48:31 +0000 (19:48 -0400)]
user-manual: revise birdseye-view chapter

Some revisions suggested by Junio along with some minor style fixes and
one compile fix (asterisks need escaping).

Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agoDocument core.excludesfile for git-add
Michael Hendricks [Thu, 17 May 2007 05:08:50 +0000 (23:08 -0600)]
Document core.excludesfile for git-add

During the discussion of core.excludesfile in the user-manual, I realized
that the configuration wasn't mentioned in the man pages.

Signed-off-by: Michael Hendricks <michael@ndrix.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-send-email: allow leading white space on mutt aliases
Michael Hendricks [Thu, 17 May 2007 05:15:16 +0000 (23:15 -0600)]
git-send-email: allow leading white space on mutt aliases

mutt version 1.5.14 (perhaps earlier versions too) permits alias files to have
white space before the 'alias' keyword.

Signed-off-by: Michael Hendricks <michael@ndrix.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd a birdview-on-the-source-code section to the user manual
Johannes Schindelin [Thu, 10 May 2007 10:36:15 +0000 (12:36 +0200)]
Add a birdview-on-the-source-code section to the user manual

In http://thread.gmane.org/gmane.comp.version-control.git/42479,
a birdview on the source code was requested.

J. Bruce Fields suggested that my reply should be included in the
user manual, and there was nothing of an outcry, so here it is,
not 2 months later.

It includes modifications as suggested by J. Bruce Fields, Karl
Hasselström and Daniel Barkalow.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
17 years agoformat-patch: add MIME-Version header when we add content-type.
Jeff King [Tue, 15 May 2007 15:35:13 +0000 (11:35 -0400)]
format-patch: add MIME-Version header when we add content-type.

When we add Content-Type: header, we should also add
MIME-Version: header as well.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFixed link in user-manual
Steffen Prohaska [Wed, 16 May 2007 05:48:47 +0000 (07:48 +0200)]
Fixed link in user-manual

link to git-mergetool was broken.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Wed, 16 May 2007 19:13:55 +0000 (12:13 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  import-tars: Use the "Link indicator" to identify directories

17 years agoimport-tars: Use the "Link indicator" to identify directories
Johannes Schindelin [Wed, 16 May 2007 16:22:26 +0000 (17:22 +0100)]
import-tars: Use the "Link indicator" to identify directories

Earlier, we used the mode to determine if a name was associated with
a directory. This fails, since some tar programs do not set the mode
correctly. However, the link indicator _has_ to be set correctly.

Noticed by Chris Riddoch.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit name-rev writes beyond the end of malloc() with large generations
Andy Whitcroft [Tue, 15 May 2007 16:33:25 +0000 (17:33 +0100)]
git name-rev writes beyond the end of malloc() with large generations

When using git name-rev on my kernel tree I triggered a malloc()
corruption warning from glibc.

apw@pinky$ git log --pretty=one $N/base.. | git name-rev --stdin
*** glibc detected *** malloc(): memory corruption: 0x0bff8950 ***
Aborted

This comes from name_rev() which is building the name of the revision
in a malloc'd string, which it sprintf's into:

char *new_name = xmalloc(len + 8);
[...]
sprintf(new_name, "%.*s~%d^%d", len, tip_name,
generation, parent_number);

This allocation is only sufficient if the generation number is
less than 5 digits, in my case generation was 13432.  In reality
parent_number can be up to 16 so that also can require two digits,
reducing us to 3 digits before we are at risk of blowing this
allocation.

This patch introduces a decimal_length() which approximates the
number of digits a type may hold, it produces the following:

Type                 Longest Value          Len  Est
----                 -------------          ---  ---
unsigned char        256                      3    4
unsigned short       65536                    5    6
unsigned long        4294967296              10   11
unsigned long long   18446744073709551616    20   21
char                 -128                     4    4
short                -32768                   6    6
long                 -2147483648             11   11
long long            -9223372036854775808    20   21

This is then used to size the new_name.

Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation/branch: fix small typo in -D example
Quy Tonthat [Tue, 15 May 2007 02:51:02 +0000 (12:51 +1000)]
Documentation/branch: fix small typo in -D example

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoPrepare for 1.5.1.5 Release Notes
Junio C Hamano [Tue, 15 May 2007 00:49:55 +0000 (17:49 -0700)]
Prepare for 1.5.1.5 Release Notes

Hopefully we will have 1.5.2 soonish, to contain all of these,
but we should summarize what we have done regardless.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogitweb: Add a few comments about %feature hash
Jakub Narebski [Mon, 14 May 2007 23:55:44 +0000 (01:55 +0200)]
gitweb: Add a few comments about %feature hash

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-am: Clean up the asciidoc documentation
Frank Lichtenheld [Mon, 14 May 2007 14:44:53 +0000 (16:44 +0200)]
git-am: Clean up the asciidoc documentation

Add --keep to synopsis.

The synopsys used a mix of tabs and spaces, unify to use only
spaces.

Shuffle options around in synopsys and description for grouping
them logically.

Add more gitlink references to other commands.

Various grammatical fixes and improvements.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: format-patch has no --mbox option
Frank Lichtenheld [Mon, 14 May 2007 14:44:52 +0000 (16:44 +0200)]
Documentation: format-patch has no --mbox option

git-applymbox and git-mailinfo refer to a --mbox option of
git-format-patch when talking about their -k options. But there
is no such option.  What -k does to the former two commands is
to keep the Subject: lines unmunged, meant to be used on output
generated with format-patch -k.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agobuiltin-log.c: Fix typo in comment
Frank Lichtenheld [Mon, 14 May 2007 14:44:51 +0000 (16:44 +0200)]
builtin-log.c: Fix typo in comment

s/fmt-patch/format-patch/

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix git-clone buglet for remote case.
Junio C Hamano [Mon, 14 May 2007 21:24:02 +0000 (14:24 -0700)]
Fix git-clone buglet for remote case.

c2f599e09fd0496413d1744b5b89b9b5c223555d introduced a buglet while
cloning from a remote URL; we forgot to squelch the unnecessary
error message when we try to cd to the given "remote" name,
in order to see if it is a local directory.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: don't attempt to minimize URLs by default
Eric Wong [Sun, 13 May 2007 16:58:14 +0000 (09:58 -0700)]
git-svn: don't attempt to minimize URLs by default

For tracking branches and tags, git-svn prefers to connect
to the root of the repository or at least the level that
houses branches and tags as well as trunk.  However, users
that are accustomed to tracking a single directory have
no use for this feature.

As pointed out by Junio, users may not have permissions to
connect to connect to a higher-level path in the repository.

While the current minimize_url() function detects lack of
permissions to certain paths _after_ successful logins, it
cannot effectively determine if it is trying to access a
login-only portion of a repo when the user expects to
connect to a part where anonymous access is allowed.

For people used to the git-svnimport switches of
--trunk, --tags, --branches, they'll already pass the
repository root (or root+subdirectory), so minimize URL
isn't of too much use to them, either.

For people *not* used to git-svnimport, git-svn also
supports:

 git svn init --minimize-url \
  --trunk http://repository-root/foo/trunk \
  --branches http://repository-root/foo/branches \
  --tags http://repository-root/foo/tags

And this is where the new --minimize-url command-line switch
comes in to allow for this behavior to continue working.

17 years agogit-svn: fix segfaults due to initial SVN pool being cleared
Eric Wong [Sun, 13 May 2007 08:04:44 +0000 (01:04 -0700)]
git-svn: fix segfaults due to initial SVN pool being cleared

Some parts of SVN always seem to use it, even if the SVN::Ra
object we're using is no longer used and we've created a new one
in its place.  It's also true that only one SVN::Ra connection
can exist at once...  Using SVN::Pool->new_default when the
SVN::Ra object is created doesn't seem to help very much,
either...

Hopefully this fixes all segfault problems users have been
experiencing over the past few months.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: clean up caching of SVN::Ra functions
Eric Wong [Sun, 13 May 2007 08:04:43 +0000 (01:04 -0700)]
git-svn: clean up caching of SVN::Ra functions

This patch was originally intended to make the Perl GC more
sensitive to the SVN::Pool objects and not accidentally clean
them up when they shouldn't be (causing segfaults).  That didn't
work, but this patch makes the code a bit cleaner regardless

Put our caches for get_dir and check_path calls directly into
the SVN::Ra object so they auto-expire when it is destroyed.

dirents returned by get_dir() no longer needs the pool object
stored persistently along with the cache data, as they'll be
converted to native Perl hash references.

Since calling rev_proplist repeatedly per-revision is no longer
needed in git-svn, we do not cache calls to it.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: don't drop the username from URLs when dcommit is run
Eric Wong [Sat, 12 May 2007 21:36:20 +0000 (14:36 -0700)]
git-svn: don't drop the username from URLs when dcommit is run

We no longer store usernames in URLs stored in git-svn-id lines
for dcommit, so we shouldn't rely on those URLs when connecting
to the remote repository to commit.

17 years agoRPM spec: include files in technical/ to package.
Quy Tonthat [Sun, 13 May 2007 11:41:45 +0000 (21:41 +1000)]
RPM spec: include files in technical/ to package.

Not only that they are interesting to users, some of the
files are linked to by the included "Git User's Manual"

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRemove stale non-static-inline prototype for tree_entry_extract()
Matthieu Castet [Sun, 13 May 2007 18:57:00 +0000 (11:57 -0700)]
Remove stale non-static-inline prototype for tree_entry_extract()

When 4651ece8 made the function a "static inline", it should
have removd the stale prototype but everybody missed that.

Thomas Glanzmann noticed this broke compilation with Forte12
compiler on his Sun boxes.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-config: test for 'do not forget "a.b.var" ends "a.var" section'.
Steffen Prohaska [Sun, 13 May 2007 07:12:52 +0000 (09:12 +0200)]
git-config: test for 'do not forget "a.b.var" ends "a.var" section'.

Added test for mentioned bugfix.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
Junio C Hamano [Sun, 13 May 2007 04:49:33 +0000 (21:49 -0700)]
git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.

Earlier code tried to be half-careful and knew the logic that
seeing "a.var" after seeing "a.b.var" is a sign of the previous
"a.b." section has ended, but forgot it has to handle the other
way.  Seeing "a.b.var" after seeing "a.var" is a sign that "a."
section has ended, so a new "a.var2" variable should be added
before the location "a.b.var" appears.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocheckout: allow detaching to HEAD even when switching to the tip of a branch
Junio C Hamano [Thu, 29 Mar 2007 08:02:50 +0000 (01:02 -0700)]
checkout: allow detaching to HEAD even when switching to the tip of a branch

You cannot currently checkout the tip of an existing branch
without moving to the branch.

This allows you to detach your HEAD and place it at such a
commit, with:

    $ git checkout master^0

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdated documentation of hooks in git-receive-pack.
Jan Hudec [Sat, 12 May 2007 17:11:13 +0000 (19:11 +0200)]
Updated documentation of hooks in git-receive-pack.

Added documentation of pre-receive and post-receive hooks and updated
documentation of update and post-update hooks.

[jc: with minor copy-editing]

Signed-off-by: Jan Hudec <bulb@ucw.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow fetching references from any namespace
Alex Riesen [Fri, 11 May 2007 20:35:22 +0000 (22:35 +0200)]
Allow fetching references from any namespace

not only from the three defined: heads, tags and remotes.

Noticed when I tried to fetch the references created by git-p4-import.bat:
they are placed into separate namespace (refs/p4import/, to avoid showing
them in git-branch output). As canon_refs_list_for_fetch always prepended
refs/heads/ it was impossible, and annoying: it worked before. Normally,
the p4import references are useless anywhere but in the directory managed
by perforce, but in this special case the cloned directory was supposed
to be a backup, including the p4import branch: it keeps information about
where the imported perforce state came from.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agotiny fix in documentation of git-clone
Steffen Prohaska [Sat, 12 May 2007 11:32:34 +0000 (13:32 +0200)]
tiny fix in documentation of git-clone

path in example was missing '../'

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix an unmatched comment end in arm/sha1_arm.S
Marco Costalba [Sat, 12 May 2007 10:35:29 +0000 (12:35 +0200)]
Fix an unmatched comment end in arm/sha1_arm.S

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Thu, 10 May 2007 21:47:14 +0000 (14:47 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  Fix documentation of tag in git-fast-import.txt
  Properly handle '0' filenames in import-tars

17 years agoFix documentation of tag in git-fast-import.txt
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt

The tag command does not take a trailing LF.

Signed-off-by: Richard P. Curnow <rc@rc0.org.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'gfi-maint' into maint
Shawn O. Pearce [Thu, 10 May 2007 21:31:27 +0000 (17:31 -0400)]
Merge branch 'gfi-maint' into maint

* gfi-maint:
  Properly handle '0' filenames in import-tars

17 years ago.mailmap: add some aliases
Junio C Hamano [Thu, 10 May 2007 20:24:21 +0000 (13:24 -0700)]
.mailmap: add some aliases

17 years agoSPECIFYING RANGES typo fix: it it => it is
Jari Aalto [Mon, 30 Apr 2007 18:37:57 +0000 (21:37 +0300)]
SPECIFYING RANGES typo fix: it it => it is

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-clone: don't get fooled by $PWD
Junio C Hamano [Thu, 10 May 2007 00:11:15 +0000 (17:11 -0700)]
git-clone: don't get fooled by $PWD

If you have /home/me/git symlink pointing at /pub/git/mine,
trying to clone from /pub/git/his/ using relative path would not
work as expected:

$ cd /home/me
        $ cd git
        $ ls ../
        his    mine
        $ git clone -l -s -n ../his/stuff.git

This is because "cd ../his/stuff.git" done inside git-clone to
check if the repository is local is confused by $PWD, which is
set to /home/me, and tries to go to /home/his/stuff.git which is
different from /pub/git/his/stuff.git.

We could probably say "set -P" (or "cd -P") instead, if we know
the shell is POSIX, but the way the patch is coded is probably
more portable.

[jc: this is updated with Andy Whitcroft's improvements]

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix documentation of tag in git-fast-import.txt
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt

The tag command does not take a trailing LF.

Signed-off-by: Richard P. Curnow <rc@rc0.org.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoGIT v1.5.1.4 v1.5.1.4
Junio C Hamano [Wed, 9 May 2007 05:10:56 +0000 (22:10 -0700)]
GIT v1.5.1.4

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd howto files to rpm packages.
Quy Tonthat [Tue, 8 May 2007 14:19:41 +0000 (00:19 +1000)]
Add howto files to rpm packages.

RPM packages did not include howto files which causes broken
links in howto-index.html

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agowcwidth redeclaration
Amos Waterland [Tue, 8 May 2007 04:46:08 +0000 (00:46 -0400)]
wcwidth redeclaration

Build fails for git 1.5.1.3 on AIX, with the message:

utf8.c:66: error: conflicting types for 'wcwidth'
/.../lib/gcc/powerpc-ibm-aix5.3.0.0/4.0.3/include/string.h:266: error: previous declaration of 'wcwidth' was here

Fix this by renaming our static variant to our own name.

Signed-off-by: Amos Waterland <apw@us.ibm.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agouser-manual: fix clone and fetch typos
J. Bruce Fields [Tue, 8 May 2007 03:34:26 +0000 (23:34 -0400)]
user-manual: fix clone and fetch typos

More typo fixes from Santi Béjar, plus a couple other mistakes I noticed
along the way.

Cc: Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoProperly handle '0' filenames in import-tars
Shawn O. Pearce [Tue, 8 May 2007 01:13:40 +0000 (21:13 -0400)]
Properly handle '0' filenames in import-tars

Randal L. Schwartz pointed out multiple times that we should be
testing the length of the name string here, not if it is "true".
The problem is the string '0' is actually false in Perl when we
try to evaluate it in this context, as '0' is 0 numerically and
the number 0 is treated as a false value.  This would cause us
to break out of the import loop early if anyone had a file or
directory named "0".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Mon, 7 May 2007 21:46:15 +0000 (14:46 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Allow spaces in path to 'wish'

17 years agoMerge git://git2.kernel.org/pub/scm/gitk/gitk into maint
Junio C Hamano [Mon, 7 May 2007 21:40:41 +0000 (14:40 -0700)]
Merge git://git2./pub/scm/gitk/gitk into maint

* git://git2.kernel.org/pub/scm/gitk/gitk:
  gitk: Allow user to choose whether to see the diff, old file, or new file

17 years agoDocumentation: don't reference non-existent 'git-cvsapplycommit'
Jeff King [Mon, 7 May 2007 05:28:34 +0000 (01:28 -0400)]
Documentation: don't reference non-existent 'git-cvsapplycommit'

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agouser-manual: stop deprecating the manual
J. Bruce Fields [Mon, 7 May 2007 05:01:42 +0000 (01:01 -0400)]
user-manual: stop deprecating the manual

It's just as much a work-in-progress, but at least now it's gotten
enough technical review to shake out most of the really bad lies, so
hopefully it doesn't do any actual damage.  And if we encourage people
to read it, they'll be more likely to whine about it, which will help
get it fixed faster.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: miscellaneous editing
J. Bruce Fields [Mon, 7 May 2007 04:56:45 +0000 (00:56 -0400)]
user-manual: miscellaneous editing

I cherry-picked some additional miscellaneous fixes from those suggested
by Santi Béjar, including fixes to:

- correct discussion of repository/HEAD->repository shortcut
- add mention of git-mergetool
- add mention of --track
- mention "-f" as well as "+" for fetch

Cc: Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: fix .gitconfig editing examples
J. Bruce Fields [Mon, 7 May 2007 04:16:33 +0000 (00:16 -0400)]
user-manual: fix .gitconfig editing examples

Santi Béjar points out that when telling people how to "introduce
themselves" to git we're advising them to replace their entire
.gitconfig file.  Fix that.

Cc: "Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: clean up fast-forward and dangling-objects sections
J. Bruce Fields [Mon, 30 Apr 2007 15:11:02 +0000 (11:11 -0400)]
user-manual: clean up fast-forward and dangling-objects sections

The previous commit calls attention to the fact that we have two
sections each devoted to fast-forwards and to dangling objects.  Revise
and attempt to differentiate them a bit.  Some more reorganization may
be required later....

Signed-off-by: J. Bruce Fields
17 years agouser-manual: add section ID's
J. Bruce Fields [Wed, 18 Apr 2007 04:46:19 +0000 (00:46 -0400)]
user-manual: add section ID's

Any section lacking an id gets an annoying warning when you build
the manual.  More seriously, the table of contents then generates
volatile id's which change with every build, with the effect that
we get URL's that change all the time.

The ID's are manually generated and sometimes inconsistent, but
that's OK.

XXX: what to do about the preface?

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: more discussion of detached heads, fix typos
J. Bruce Fields [Wed, 18 Apr 2007 04:20:46 +0000 (00:20 -0400)]
user-manual: more discussion of detached heads, fix typos

Nicolas Pitre pointed out a couple typos and some room for improvement
in the discussion of detached heads.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Cc: Nicolas Pitre <nico@cam.org>
17 years agoSmall correction in reading of commit headers
Alex Riesen [Fri, 4 May 2007 21:51:32 +0000 (23:51 +0200)]
Small correction in reading of commit headers

Check if a line of the header has enough characters to possibly
contain the requested prefix.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: fix typo in git-remote.txt
James Bowes [Sat, 5 May 2007 18:23:12 +0000 (14:23 -0400)]
Documentation: fix typo in git-remote.txt

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd test for blame corner cases.
Junio C Hamano [Sun, 6 May 2007 05:36:19 +0000 (22:36 -0700)]
Add test for blame corner cases.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame: -C -C -C
Junio C Hamano [Sun, 6 May 2007 04:18:57 +0000 (21:18 -0700)]
blame: -C -C -C

When you do this, existing "blame -C -C" would not find that the
latter half of the file2 came from the existing file1:

... both file1 and file2 are tracked ...
$ cat file1 >>file2
$ git add file1 file2
$ git commit

This is because we avoid the expensive find-copies-harder code
that makes unchanged file (in this case, file1) as a candidate
for copy & paste source when annotating an existing file
(file2).  The third -C now allows it.  However, this obviously
makes the process very expensive.  We've actually seen this
patch before, but I dismissed it because it covers such a narrow
(and arguably stupid) corner case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame: Notice a wholesale incorporation of an existing file.
Junio C Hamano [Sat, 5 May 2007 16:13:26 +0000 (09:13 -0700)]
blame: Notice a wholesale incorporation of an existing file.

The -C option to blame tries to find a section of a preimage
file by running diff against the lines whose origin is still
unknown, and excluding the different parts.  The code however
did not cover the case where the tail part of the section
matched, which we handle for the normal non-move/copy codepath.

This breakage was most visible when preimage file matches in its
entirety and failed to pass blame in such a case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix --boundary output
Linus Torvalds [Sat, 5 May 2007 22:18:03 +0000 (15:18 -0700)]
Fix --boundary output

"git log --boundary" incorrectly honoured the option only when
"left-right" was enabled.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff format documentation: describe raw combined diff format
Jakub Narebski [Fri, 4 May 2007 22:48:35 +0000 (00:48 +0200)]
diff format documentation: describe raw combined diff format

Add description of raw combined diff format to diff-formats.txt,
as "diff format for merges" section, before "Generating patches..."
section.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMention version 1.5.1 in tutorial and user-manual
Carl Worth [Fri, 4 May 2007 18:27:10 +0000 (11:27 -0700)]
Mention version 1.5.1 in tutorial and user-manual

Most other documentation will frequently be read from an installation
of git so will naturally be associated with the installed version.
But these two documents in particular are often read from web pages
while users are still exploring git. It's important to mention
version 1.5.1 since these documents provide example commands that
won't work with previous versions of git.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd --no-rebase option to git-svn dcommit
Karl Hasselström [Thu, 3 May 2007 05:51:35 +0000 (07:51 +0200)]
Add --no-rebase option to git-svn dcommit

git-svn dcommit exports commits to Subversion, then imports them back
to git again, and last but not least rebases or resets HEAD to the
last of the new commits. I guess this rebasing is convenient when
using just git, but when the commits to be exported are managed by
StGIT, it's really annoying. So add an option to disable this
behavior. And document it, too!

Signed-off-by: Karl Hasselström <kha@treskal.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix markup in git-svn man page
Karl Hasselström [Fri, 4 May 2007 07:03:22 +0000 (09:03 +0200)]
Fix markup in git-svn man page

Some of the existing markup was just plain broken, and some subcommand
options weren't indented properly.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogitweb: use decode_utf8 directly
Ismail Dönmez [Tue, 1 May 2007 21:12:13 +0000 (00:12 +0300)]
gitweb: use decode_utf8 directly

Using decode() tries to decode data that is already UTF-8 and
borks, but decode_utf8 from Encode.pm has a built-in safety
against that.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoposix compatibility for t4200
Bryan Larsen [Wed, 2 May 2007 21:53:23 +0000 (17:53 -0400)]
posix compatibility for t4200

Fix t4200 so that it also works on OS X by not relying on gnu
extensions to sed.

Signed-off-by: Bryan Larsen <bryan@larsen.st>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocument 'opendiff' value in config.txt and git-mergetool.txt
Arjen Laarhoven [Thu, 3 May 2007 18:29:15 +0000 (20:29 +0200)]
Document 'opendiff' value in config.txt and git-mergetool.txt

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow PERL_PATH="/usr/bin/env perl"
Bryan Larsen [Thu, 3 May 2007 22:58:56 +0000 (18:58 -0400)]
Allow PERL_PATH="/usr/bin/env perl"

There is a mechanism PERL_PATH in the Makefile to specify path to
Perl binary, but sometimes it is convenient to let 'env' figure
out where Perl comes from, with PERL_PATH="/usr/bin/env perl".

Allowing this would make things easier to MacPorts, where we wish
to work with the MacPorts perl if it is installed, but fall back
to the system perl if it isn't.

Signed-off-by: Bryan Larsen <bryan@larsen.st>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake xstrndup common
Daniel Barkalow [Thu, 3 May 2007 02:49:41 +0000 (22:49 -0400)]
Make xstrndup common

This also improves the implementation to match how strndup is
specified (by GNU): if the length given is longer than the string,
only the string's length is allocated and copied, but the string need
not be null-terminated if it is at least as long as the given length.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff.c: fix "size cache" handling.
Junio C Hamano [Thu, 3 May 2007 20:00:43 +0000 (13:00 -0700)]
diff.c: fix "size cache" handling.

We broke the size-cache handling when we changed the function
signature of sha1_object_info() in 21666f1a.  We obviously
wanted to cache the size we obtained when sha1_object_info()
succeeded, not when it failed.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agohttp-fetch: Disable use of curl multi support for libcurl < 7.16.
Alexandre Julliard [Wed, 2 May 2007 12:53:23 +0000 (14:53 +0200)]
http-fetch: Disable use of curl multi support for libcurl < 7.16.

curl_multi_remove_handle() is broken in libcurl < 7.16, in that it
doesn't correctly update the active handles count when a request is
aborted. This causes the transfer to hang forever waiting for the
handle count to become less than the number of active requests.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Wed, 2 May 2007 18:00:16 +0000 (11:00 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  Teach import-tars about GNU tar's @LongLink extension.

17 years agocvsserver: Handle re-added files correctly
Frank Lichtenheld [Wed, 2 May 2007 00:43:14 +0000 (02:43 +0200)]
cvsserver: Handle re-added files correctly

We can't unconditionally assign revision 1.1 to
newly added files. In case the file did exist in the
past and was deleted we need to honor the old
revision number.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoTeach import-tars about GNU tar's @LongLink extension.
Johannes Schindelin [Tue, 1 May 2007 21:42:44 +0000 (23:42 +0200)]
Teach import-tars about GNU tar's @LongLink extension.

This extension allows GNU tar to process file names in excess of the 100
characters defined by the original tar standard. It does this by faking a
file, named '././@LongLink' containing the true file name, and then adding
the file with a truncated name. The idea is that tar without this
extension will write out a file with the long file name, and write the
contents into a file with truncated name.

Unfortunately, GNU tar does a lousy job at times. When truncating results
in a _directory_ name, it will happily use _that_ as a truncated name for
the file.

An example where this actually happens is gcc-4.1.2, where the full path
of the file WeThrowThisExceptionHelper.java truncates _exactly_ before the
basename. So, we have to support that ad-hoc extension.

This bug was noticed by Chris Riddoch on IRC.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>