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));
}
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),