Browse Source

cvsexportcommit: fix for commits that do not have parents

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>
maint
Brad King 17 years ago committed by Junio C Hamano
parent
commit
6b6012e6ca
  1. 13
      git-cvsexportcommit.perl

13
git-cvsexportcommit.perl

@ -87,6 +87,7 @@ foreach my $line (@commit) { @@ -87,6 +87,7 @@ foreach my $line (@commit) {
}
}

my $noparent = "0000000000000000000000000000000000000000";
if ($parent) {
my $found;
# double check that it's a valid parent
@ -100,8 +101,10 @@ if ($parent) { @@ -100,8 +101,10 @@ if ($parent) {
} 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";
}
}

@ -121,7 +124,11 @@ if ($opt_a) { @@ -121,7 +124,11 @@ if ($opt_a) {
}
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


Loading…
Cancel
Save