summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-08-25 20:58:19 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2018-06-16 12:25:49 +0100
commit7d9f8c0d200f09687e71ddd579342469c2db9f78 (patch)
treeff8703824346efd4874541e091e5c066e51e12da
parent675a7f895eb4768ae4078342f880852196626948 (diff)
git-debrebase: launder: fix
-rwxr-xr-xgit-debrebase20
1 files changed, 12 insertions, 8 deletions
diff --git a/git-debrebase b/git-debrebase
index e73526e..ee074f9 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';
}
}