chiark / gitweb /
git-debrebase: be properly selective about StartRewrite
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Feb 2018 13:04:53 +0000 (13:04 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:06:59 +0000 (16:06 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index c32f257..93bf46b 100755 (executable)
@@ -572,8 +572,9 @@ sub walk ($;$$) {
        return (Msg => $ms);
     };
     my $rewrite_from_here = sub {
+       my ($cl) = @_;
        my $sp_cl = { SpecialMethod => 'StartRewrite' };
-       push @brw_cl, $sp_cl;
+       push @$cl, $sp_cl;
        push @processed, $sp_cl;
     };
     my $cur = $input;
@@ -623,7 +624,7 @@ sub walk ($;$$) {
        my $p0 = @{ $cl->{Parents} }==1 ? $cl->{Parents}[0]{CommitId} : undef;
        if ($ty eq 'AddPatches') {
            $cur = $p0;
-           $rewrite_from_here->();
+           $rewrite_from_here->(\@upp_cl);
            next;
        } elsif ($ty eq 'Packaging' or $ty eq 'Changelog') {
            push @brw_cl, $cl;
@@ -644,14 +645,14 @@ sub walk ($;$$) {
            };
            $queue->(\@brw_cl, "debian");
            $queue->(\@upp_cl, "upstream");
-           $rewrite_from_here->();
+           $rewrite_from_here->(\@brw_cl);
            $cur = $p0;
            next;
        } elsif ($ty eq 'Pseudomerge') {
            my $contrib = $cl->{Contributor}{CommitId};
            print $report " Contributor=$contrib" if $report;
            push @pseudomerges, $cl;
-           $rewrite_from_here->();
+           $rewrite_from_here->(\@upp_cl);
            $cur = $contrib;
            next;
        } elsif ($ty eq 'Anchor') {
@@ -700,7 +701,7 @@ sub walk ($;$$) {
                            " anchor")
                };
                $prline->(" Import");
-               $rewrite_from_here->();
+               $rewrite_from_here->(\@brw_cl);
                $upp_limit //= $#upp_cl; # further, deeper, patches discarded
                $cur = $ovwr;
                next;