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(