return $unknown->("complex merge");
}
-sub walk ($;$$$$);
+sub walk ($;$$);
sub walk {
my ($input,
- $nogenerate,$report,
- $wantbrwonly,$depth) = @_;
+ $nogenerate,$report) = @_;
# => ($tip, $breakwater_tip)
+ # (or nothing, if $nogenerate)
# go through commits backwards
# we generate two lists of commits to apply:
# breakwater branch and upstream patches
my (@brw_cl, @upp_cl, @processed);
my %found;
+ my $upp_limit;
my @pseudomerges;
- $depth //= 0;
-
my $cl;
my $xmsg = sub {
my ($appendinfo) = @_;
push @brw_cl, $cl;
$cur = $p0;
next;
- } elsif ($ty eq 'Packaging') {
- push @brw_cl, $cl;
- $cur = $p0;
- next;
+ } elsif ($ty eq 'BreakwaterStart') {
+ push @brw_cl, { ExactlyParents => [$cur] };
+ last;
} elsif ($ty eq 'Upstream') {
push @upp_cl, $cl;
$cur = $p0;
$queue->(\@brw_cl, "debian");
$queue->(\@upp_cl, "upstream");
$rewrite_from_here->();
+ $cur = $p0;
next;
} elsif ($ty eq 'Pseudomerge') {
print $report " Contributor=$ty->{Contributor}" if $report;
$xmsg->("convert dgit import: upstream changes")
};
}
- $prline->("Import");
- $prprdelim->();
- my ($dummy,$basis) = walk
- $ovwr,
- $nogenerate, $report,
- 1, $depth+1;
- push @brw_cl, { ExactlyParents => [$basis] };
+ $prline->(" Import");
$rewrite_from_here->();
- last;
+ $upp_limit //= $#upp; # further, deeper, patches discarded
+ $cur = $ovwr;
+ next;
} else {
# Everything is from this import. This kind of import
# is already in valid breakwater format, with the
# patches as commits.
printf $report " NoPM" if $report;
- push @brw_cl, { ExactlyParents => [$cur] };
+ $prline->(" ImportOrigin");
# last thing we processed will have been the first patch,
# if there is one; which is fine, so no need to rewrite
# on account of this import
- $prline->("ImportOrigin");
+ push @brw_cl, { ExactlyParents => [$cur] };
last;
}
die "$ty ?";
}
}
$prprdelim->();
- return () if $nogenerate;
+ return if $nogenerate;
# Now we build it back up again