chiark / gitweb /
git-debrebase: merge: Whitespace changes
[dgit.git] / git-debrebase
index bc725fa3c802679f51a98395fcec625158cb0351..771410ef1350443ee703f45434e86fd8ae2c6e74 100755 (executable)
@@ -1199,7 +1199,7 @@ sub walk ($;$$$) {
            foreach my $p (@$ps) {
                $prline->(" VanillaMerge ".$p->{Ix});
                if (!is_fast_fwd $p->{Anchor}, $best_anchor) {
-                   $nomerge->('DivergentAnchor');
+                   $nomerge->('divergent anchors');
                } elsif ($p->{Anchor} eq $best_anchor) {
                    print $report " SameAnchor" if $report;
                } else {
@@ -1217,14 +1217,14 @@ sub walk ($;$$$) {
            }
 
            if ($ok && $might_be_in_bw) {
+               # We could rewrite this to contaion the metadata
+               # declaring it to be MergedBreakwaters, but
+               # unnecessarily rewriting a merge seems unhelpful.
                $prline->(" VanillaMerge MergedBreakwaters");
                $last_anchor = $best_anchor;
                $build_start->('MergedBreakwaters', $cur);
            }
 
-           $nomerge->("alleged merged-breakwater is not a breakwater")
-               unless $ty eq 'VanillaMerge';
-
            my $bwb = cmdoutput @bwbcmd;
 
            # OK, now we have a breakwater base, but we need the merge
@@ -1235,12 +1235,22 @@ sub walk ($;$$$) {
            # breakwater merge base as an ancestor.
 
            my @ibs =
-               grep { is_fast_fwd $bwb, $_ }
                grep /./,
                split /\n/,
                cmdoutput @ibcmd;
-           my ($ib) = @ibs
-               or $nomerge->("no suitable interchange merge base");
+
+            @ibs or confess 'internal error, expected anchor at least ?';
+
+           my $ib;
+           foreach my $tibix (0..$#ibs) {
+               my $tib = $ibs[$tibix];
+               my $ff = is_fast_fwd $bwb, $tib;
+               next unless $ff;
+               next if $ib;
+               $ib = $tib;
+           }
+
+           $ib or $nomerge->("no suitable interchange merge base");
 
            $prline->("  VanillaMerge Base");
            $prprdelim->();
@@ -1254,6 +1264,7 @@ sub walk ($;$$$) {
                or $nomerge->("interchange merge-base ($ib)'s".
                              " breakwater ($bbw)".
                              " != breakwaters' merge-base ($bwb)");
+
            grep { $_->{Anchor} eq $ibinfo->{Anchor} } @$ps
                 or $nomerge->("interchange merge-base ($ib)'s".
                               " anchor ($ibinfo->{SeriesBase})".
@@ -1261,7 +1272,6 @@ sub walk ($;$$$) {
                               (join ' ', map { $_->{Anchor} } @$ps).
                               ")");
 
-
            $cl->{MergeInterchangeBaseInfo} = $ibinfo;
            $cl->{MergeBestAnchor} = $best_anchor;
            push @brw_cl, {