X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=git-debrebase;h=3d74d0ebc3876f1cb9ca677e56c9eaf88e80d3de;hb=9fe91f98a08e948bf3e282cd17f7c2637669a216;hp=2a2d1ed2c81e0a83f987ccdeb8e2c6d2d426254b;hpb=c10954df2a6f7ed9f12e12f6e65049d78c9672e4;p=dgit.git diff --git a/git-debrebase b/git-debrebase index 2a2d1ed2..3d74d0eb 100755 --- a/git-debrebase +++ b/git-debrebase @@ -362,8 +362,8 @@ sub gbp_pq_export ($$$) { # our own patch identification algorithm? # this is an alternative strategy -sub merge_series ($$;@) { - my ($newbase, $base_q, @input_qs) = @_; +sub merge_series ($$$;@) { + my ($newbase, $wrecknotes, $base_q, @input_qs) = @_; # $base_q{SeriesBase} $input_qs[]{SeriesBase} # $base_q{SeriesTip} $input_qs[]{SeriesTip} # ^ specifies several patch series (currently we only support exactly 2) @@ -388,6 +388,11 @@ sub merge_series ($$;@) { my $result; + my $mwrecknote = sub { + my ($reftail, $commitish) = @_; + $wrecknotes->{$reftail} = $commitish; + }; + local $workarea = fresh_playground "$playprefix/merge"; my $seriesfile = "debian/patches/series"; in_workarea sub { @@ -441,6 +446,7 @@ sub merge_series ($$;@) { printdebug "pec' $pec\n"; runcmd @git, qw(reset -q --hard), $pec; $q->{MR}{PEC} = $pec; + $mwrecknote->("$q->{LeftRight}-patchqueue"); } # now, because of reverse, we are on $input_q->{MR}{OQC} runcmd @git, qw(checkout -q -b merge); @@ -522,7 +528,8 @@ sub merge_series ($$;@) { } runcmd @git, qw(add), $seriesfile; - runcmd @git, qw(commit --quiet -m), 'Merged series'; + runcmd @git, qw(commit --quiet -m), 'Merged patch queue form'; + $mwrecknote->('merged-patchqueue', git_rev_parse 'HEAD'); printdebug "merge_series series gbp pq import\n"; runcmd qw(gbp pq import); @@ -546,14 +553,17 @@ sub merge_series ($$;@) { $build = cmdoutput @git, qw(hash-object -w -t commit ../mcommit); } $result = $build; + $mwrecknote->('merged-result', $result); + runcmd @git, qw(update-ref refs/heads/result), $result; runcmd @git, qw(checkout -q -b debug); runcmd @git, qw(commit --allow-empty -q -m M-INDEX); runcmd @git, qw(add .); runcmd @git, qw(commit --allow-empty -q -m M-WORKTREE); - printdebug sprintf "merge_series done debug=%s\n", - git_rev_parse 'HEAD'; + my $mdebug = git_rev_parse 'HEAD'; + printdebug sprintf "merge_series done debug=%s\n", $mdebug; + $mwrecknote->('merged-debug', $mdebug); }; printdebug "merge_series returns $result\n"; return $result; @@ -1291,7 +1301,9 @@ sub walk ($;$$$) { my $ibinfo = { SeriesTip => $btip, SeriesBase => $bbw, - Anchor => $banchor }; + Anchor => $banchor, + LeftRight => 'mergebase' }; + $bbw eq $bwb or $nomerge->("interchange merge-base ($ib)'s". " breakwater ($bbw)". @@ -1392,7 +1404,7 @@ sub walk ($;$$$) { } elsif ($method eq 'MergeMergeSeries') { print "Running merge resolution for $cl->{CommitId}...\n"; $build = merge_series - $build, + $build, $cl->{MergeWreckNotes}, $cl->{MergeInterchangeBaseInfo}, @{ $cl->{Parents} }; $last_anchor = $cl->{MergeBestAnchor};