@matheusbsbs / matheus-bagliano / commits / 41c01693ac
Fork 0

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>

Andrew Myrick committed Jan 6, 2010 at 16:25 UTC 41c01693ac13846c73a31c8f5c3a60206e1643be
1 file changed +15 -4
git-svn.perl
+15 -4
@@ -3158,10 +3158,21 @@ sub find_extra_svn_parents {
3158 my $ranges = $ranges{$merge_tip};
3159
3160 # check out 'new' tips
3161 - my $merge_base = command_oneline(
3162 - "merge-base",
3163 - @$parents, $merge_tip,
3164 - );
3161 + my $merge_base;
3162 + eval {
3163 + $merge_base = command_oneline(
3164 + "merge-base",
3165 + @$parents, $merge_tip,
3166 + );
3167 + };
3168 + if ($@) {
3169 + die "An error occurred during merge-base"
3170 + unless $@->isa("Git::Error::Command");
3171 +
3172 + warn "W: Cannot find common ancestor between ".
3173 + "@$parents and $merge_tip. Ignoring merge info.\n";
3174 + next;
3175 + }
3176
3177 # double check that there are no missing non-merge commits
3178 my (@incomplete) = check_cherry_pick(