chiark / gitweb /
git-debrebase: be properly selective about StartRewrite
[dgit.git] / git-debrebase
index bc98756f514a4e0b786329d20ef00e4d38a774d1..93bf46b4f57b87cca420a26308b07f36c9ec8e26 100755 (executable)
@@ -29,8 +29,8 @@
 #    git-debrebase [<options> --] [<git-rebase options...>]
 #    git-debrebase [<options>] analyse
 #    git-debrebase [<options>] breakwater      # prints breakwater tip only
-#    git-debrebase [<options>] launder         # prints breakwater tip etc.
 #    git-debrebase [<options>] stitch [--prose=<for commit message>]
+#    git-debrebase [<options>] launder-v0      # prints breakwater tip etc.
 #    git-debrebase [<options>] downstream-rebase-launder-v0  # experimental
 #
 #    git-debrebase [<options>] convert-from-gbp [<upstream-git-rev>]
@@ -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;
@@ -857,8 +858,8 @@ sub update_head_postlaunder ($$$) {
     runcmd @git, qw(rm --quiet --ignore-unmatch -rf debian/patches);
 }
 
-sub cmd_launder () {
-    badusage "no arguments to launder allowed" if @ARGV;
+sub cmd_launder_v0 () {
+    badusage "no arguments to launder-v0 allowed" if @ARGV;
     my $old = get_head();
     my ($tip,$breakwater,$last_anchor) = walk $old;
     update_head_postlaunder $old, $tip, 'launder';