X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=git-debrebase;h=6d8091e63bfb880b42a56aa1387d8d0b1a0aacfd;hb=3b8767bcfc8fd709e0f70d876617e69de809e787;hp=87928bc55db59739c1ec7875826f1969e48641a9;hpb=1f4480c7fe42d8e997db608c35a3500de1052528;p=dgit.git diff --git a/git-debrebase b/git-debrebase index 87928bc5..6d8091e6 100755 --- a/git-debrebase +++ b/git-debrebase @@ -371,7 +371,13 @@ sub classify ($) { return $r; }; + my $claims_to_be_breakwater = + $r->{Msg} =~ m{^\[git-debrebase breakwater.*\]$}m; + if (@p == 1) { + if ($claims_to_be_breakwater) { + return $unknown->("single-parent git-debrebase breakwater \`merge'"); + } my $d = $r->{Parents}[0]{Differs}; if ($d == D_PAT_ADD) { return $classify->(qw(AddPatches)); @@ -405,7 +411,10 @@ sub classify ($) { } my @identical = grep { !$_->{Differs} } @p; - if (@p == 2 && @identical == 1) { + if (@p == 2 && @identical == 1 && !$claims_to_be_breakwater + # breakwater merges can look like pseudomerges, if they are + # "declare" commits (ie, there are no upstream changes) + ) { my @overwritten = grep { $_->{Differs} } @p; confess "internal error $objid ?" unless @overwritten==1; return $classify->(qw(Pseudomerge),