From 7d9f8c0d200f09687e71ddd579342469c2db9f78 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 25 Aug 2017 20:58:19 +0100 Subject: [PATCH] git-debrebase: launder: fix --- git-debrebase | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/git-debrebase b/git-debrebase index e73526e9..ee074f98 100755 --- a/git-debrebase +++ b/git-debrebase @@ -724,7 +724,7 @@ sub cmd_analyse () { } sub cmd_downstream_rebase_launder_v0 () { - badusage "needs 1 argument, the baseline" unless @ARGV=0; + badusage "needs 1 argument, the baseline" unless @ARGV==1; my ($base) = @ARGV; $base = git_rev_parse $base; my $old_head = get_head(); @@ -732,24 +732,25 @@ sub cmd_downstream_rebase_launder_v0 () { my $topmost_keep; for (;;) { if ($current eq $base) { - $topmust_keep //= $current; - print "$current BASE: stopping\n"; + $topmost_keep //= $current; + print " $current BASE stop\n"; last; } my $cl = classify $current; print " $current $cl->{Type}"; my $keep = 0; my $p0 = $cl->{Parents}[0]{CommitId}; + my $next; if ($cl->{Type} eq 'Pseudomerge') { - $current = $cl->{Contributor}{CommitId}; print " ^".($cl->{Contributor}{Ix}+1); + $next = $cl->{Contributor}{CommitId}; } elsif ($cl->{Type} eq 'AddPatches' or $cl->{Type} eq 'Changelog') { print " strip"; - $current = $p0; + $next = $p0; } else { print " keep"; - $current = $p0; + $next = $p0; $keep = 1; } print "\n"; @@ -757,14 +758,17 @@ sub cmd_downstream_rebase_launder_v0 () { $topmost_keep //= $current; } else { die "to-be stripped changes not on top of the branch\n" - if $topmost_unstripped; + if $topmost_keep; } + $current = $next; } if ($topmost_keep eq $old_head) { print "unchanged\n"; } else { print "updating to $topmost_keep\n"; - update_head $old_head, $topmost_keep, 'downstream-rebase-launder-v0'; + update_head_checkout + $old_head, $topmost_keep, + 'downstream-rebase-launder-v0'; } } -- 2.30.2