sub walk ($;$$) {
my ($input,
$nogenerate,$report) = @_;
- # => ($tip, $breakwater_tip)
+ # => ($tip, $breakwater_tip, $last_upstream_merge_in_breakwater)
# (or nothing, if $nogenerate)
# go through commits backwards
no warnings qw(exiting); last;
};
+ my $last_upstream_update;
+
for (;;) {
$cl = classify $cur;
my $ty = $cl->{Type};
$cur = $p0;
next;
} elsif ($ty eq 'BreakwaterStart') {
+ $last_upstream_update = $cur;
$build_start->('FirstPackaging', $cur);
} elsif ($ty eq 'Upstream') {
push @upp_cl, $cl;
$cur = $contrib;
next;
} elsif ($ty eq 'BreakwaterUpstreamMerge') {
+ $last_upstream_update = $cur;
$build_start->("PreviousBreakwater", $cur);
} elsif ($ty eq 'DgitImportUnpatched') {
my $pm = $pseudomerges[-1];
my $newcommit = cmdoutput @cmd;
confess "$ch ?" unless $rewriting or $newcommit eq $cl->{CommitId};
$build = $newcommit;
+ if (grep { $method eq $_ } qw(DgitImportUpstreamUpdate)) {
+ $last_upstream_update = $cur;
+ }
}
};
die sprintf "internal error %#x %s %s", $final_check, $build, $input
if $final_check & ~D_PAT_ADD;
- return ($build, $breakwater);
+ return ($build, $breakwater, $last_upstream_update);
}
sub get_head () { return git_rev_parse qw(HEAD); }