summaryrefslogtreecommitdiff
path: root/git-svn.perl
diff options
context:
space:
mode:
authorAndrew Myrick <amyrick@apple.com>2010-01-07 00:25:22 (GMT)
committerEric Wong <normalperson@yhbt.net>2010-01-23 11:23:03 (GMT)
commit41c01693ac13846c73a31c8f5c3a60206e1643be (patch)
treea21ce5371bb47d706c60a4c48d2a1467e8150f5a /git-svn.perl
parent1cef6500a9edc7997bd0aa4cd1f739f5106ab0a9 (diff)
downloadgit-41c01693ac13846c73a31c8f5c3a60206e1643be.zip
git-41c01693ac13846c73a31c8f5c3a60206e1643be.tar.gz
git-41c01693ac13846c73a31c8f5c3a60206e1643be.tar.bz2
git-svn: handle merge-base failures
Change git-svn to warn and continue when merge-base fails while processing svn merge tickets. merge-base can fail when a partial branch is created and merged back to trunk in svn, because it cannot find a common ancestor between the partial branch and trunk. Signed-off-by: Andrew Myrick <amyrick@apple.com> Acked-by: Sam Vilain <sam@vilain.net> Acked-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl19
1 files changed, 15 insertions, 4 deletions
diff --git a/git-svn.perl b/git-svn.perl
index 947184a..e0773ef 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -3158,10 +3158,21 @@ sub find_extra_svn_parents {
my $ranges = $ranges{$merge_tip};
# check out 'new' tips
- my $merge_base = command_oneline(
- "merge-base",
- @$parents, $merge_tip,
- );
+ my $merge_base;
+ eval {
+ $merge_base = command_oneline(
+ "merge-base",
+ @$parents, $merge_tip,
+ );
+ };
+ if ($@) {
+ die "An error occurred during merge-base"
+ unless $@->isa("Git::Error::Command");
+
+ warn "W: Cannot find common ancestor between ".
+ "@$parents and $merge_tip. Ignoring merge info.\n";
+ next;
+ }
# double check that there are no missing non-merge commits
my (@incomplete) = check_cherry_pick(