Skip to content

Commit

Permalink
git-svn: correctly handle revision 0 in SVN repositories
Browse files Browse the repository at this point in the history
some SVN repositories have a revision 0 (committed by no author
and no date) when created; so when we need to ensure that we
check any revision variables are defined, and not just
non-zero.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Eric Wong authored and Junio C Hamano committed Nov 23, 2006
1 parent 48d044b commit e70dc78
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ sub rebuild {
my @commit = grep(/^git-svn-id: /,`git-cat-file commit $c`);
next if (!@commit); # skip merges
my ($url, $rev, $uuid) = extract_metadata($commit[$#commit]);
if (!$rev || !$uuid) {
if (!defined $rev || !$uuid) {
croak "Unable to extract revision or UUID from ",
"$c, $commit[$#commit]\n";
}
Expand Down Expand Up @@ -832,8 +832,14 @@ sub commit_diff {
print STDERR "Needed URL or usable git-svn id command-line\n";
commit_diff_usage();
}
my $r = shift || $_revision;
die "-r|--revision is a required argument\n" unless (defined $r);
my $r = shift;
unless (defined $r) {
if (defined $_revision) {
$r = $_revision
} else {
die "-r|--revision is a required argument\n";
}
}
if (defined $_message && defined $_file) {
print STDERR "Both --message/-m and --file/-F specified ",
"for the commit message.\n",
Expand Down Expand Up @@ -2493,7 +2499,7 @@ sub extract_metadata {
my $id = shift or return (undef, undef, undef);
my ($url, $rev, $uuid) = ($id =~ /^git-svn-id:\s(\S+?)\@(\d+)
\s([a-f\d\-]+)$/x);
if (!$rev || !$uuid || !$url) {
if (!defined $rev || !$uuid || !$url) {
# some of the original repositories I made had
# identifiers like this:
($rev, $uuid) = ($id =~/^git-svn-id:\s(\d+)\@([a-f\d\-]+)/);
Expand Down

0 comments on commit e70dc78

Please sign in to comment.