Code

git-svn: handle merge-base failures
authorAndrew Myrick <amyrick@apple.com>
Thu, 7 Jan 2010 00:25:22 +0000 (16:25 -0800)
committerEric Wong <normalperson@yhbt.net>
Sat, 23 Jan 2010 11:23:03 +0000 (03:23 -0800)
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>
git-svn.perl

index 947184afcfe2d9ac49c9bfc5c0fb0fa3538b83fa..e0773eff4ea3fa297925795e28e9b0dfdd0e35b6 100755 (executable)
@@ -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(