Skip to content

Commit

Permalink
cvsexportcommit: fix for commits that do not have parents
Browse files Browse the repository at this point in the history
Previously commits without parents would fail to export with a
message indicating that the commits had more than one parent.
Instead we should use the --root option for git-diff-tree in
place of a parent.

Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brad King authored and Junio C Hamano committed Nov 1, 2007
1 parent 3f2a7ae commit 6b6012e
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions git-cvsexportcommit.perl
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
}
}

my $noparent = "0000000000000000000000000000000000000000";
if ($parent) {
my $found;
# double check that it's a valid parent
Expand All @@ -100,8 +101,10 @@
} else { # we don't have a parent from the cmdline...
if (@parents == 1) { # it's safe to get it from the commit
$parent = $parents[0];
} else { # or perhaps not!
die "This commit has more than one parent -- please name the parent you want to use explicitly";
} elsif (@parents == 0) { # there is no parent
$parent = $noparent;
} else { # cannot choose automatically from multiple parents
die "This commit has more than one parent -- please name the parent you want to use explicitly";
}
}

Expand All @@ -121,7 +124,11 @@
}
close MSG;

`git-diff-tree --binary -p $parent $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
if ($parent eq $noparent) {
`git-diff-tree --binary -p --root $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
} else {
`git-diff-tree --binary -p $parent $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
}

## apply non-binary changes

Expand Down

0 comments on commit 6b6012e

Please sign in to comment.