summaryrefslogtreecommitdiff
path: root/git-debrebase
diff options
context:
space:
mode:
Diffstat (limited to 'git-debrebase')
-rwxr-xr-xgit-debrebase34
1 files changed, 33 insertions, 1 deletions
diff --git a/git-debrebase b/git-debrebase
index 771410e..2a2d1ed 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -1029,6 +1029,11 @@ sub walk ($;$$$) {
fail "something useful about failed merge attempt @_ xxx".Dumper($cl);
};
+ my $mwrecknote = sub {
+ my ($reftail, $commitish) = @_;
+ $cl->{MergeWreckNotes}{$reftail} = $commitish;
+ };
+
my $last_anchor;
for (;;) {
@@ -1178,6 +1183,8 @@ sub walk ($;$$$) {
my $ps = $cl->{Parents};
+ $mwrecknote->('vanilla-merge', $cl->{CommitId});
+
foreach my $p (@$ps) {
$prline->(" VanillaMerge ".$p->{Ix});
$prprdelim->();
@@ -1188,6 +1195,17 @@ sub walk ($;$$$) {
$p->{Breakwater} = $p->{SeriesBase} = $pbw;
$p->{Anchor} = $panchor;
+ my $lr = $p->{LeftRight} = (qw(left right))[$p->{Ix}];
+ $mwrecknote->("$lr-input", $p->{CommitId});
+
+ my $mwrecknote_parent = sub {
+ my ($which) = @_;
+ $mwrecknote->("$lr-".(lc $which), $p->{$which});
+ };
+ $mwrecknote_parent->('Laundered');
+ $mwrecknote_parent->('Breakwater');
+ $mwrecknote_parent->('Anchor');
+
$best_anchor = $panchor if
!defined $best_anchor or
is_fast_fwd $best_anchor, $panchor;
@@ -1196,6 +1214,8 @@ sub walk ($;$$$) {
" p=$panchor\n";
}
+ $mwrecknote->('result-anchor', $best_anchor);
+
foreach my $p (@$ps) {
$prline->(" VanillaMerge ".$p->{Ix});
if (!is_fast_fwd $p->{Anchor}, $best_anchor) {
@@ -1242,20 +1262,32 @@ sub walk ($;$$$) {
@ibs or confess 'internal error, expected anchor at least ?';
my $ib;
+ my $ibleaf;
foreach my $tibix (0..$#ibs) {
my $tib = $ibs[$tibix];
my $ff = is_fast_fwd $bwb, $tib;
+ my $ok = !$ff ? 'rej' : $ib ? 'extra' : 'ok';
+ my $tibleaf = "interchange-mbcand-$ok-$tibix";
+ $mwrecknote->($tibleaf, $tib);
next unless $ff;
next if $ib;
$ib = $tib;
+ $ibleaf = $tibleaf;
}
$ib or $nomerge->("no suitable interchange merge base");
$prline->(" VanillaMerge Base");
$prprdelim->();
- my ($btip, $bbw, $banchor) =
+ my ($btip, $bbw, $banchor) = eval {
walk $ib, 0, $report, $report_lprefix.' ';
+ };
+ $nomerge->("walking interchange branch merge base ($ibleaf): ".
+ $@) if length $@;
+
+ $mwrecknote->("mergebase-laundered", $btip);
+ $mwrecknote->("mergebase-breakwater", $bbw);
+ $mwrecknote->("mergebase-anchor", $banchor);
my $ibinfo = { SeriesTip => $btip,
SeriesBase => $bbw,