foreach my $q ($base_q, reverse @input_qs) {
my $s = $q->{MR}{S};
gbp_pq_export "p-$s", $q->{SeriesBase}, $q->{SeriesTip};
+ my @earlier;
if (open S, $seriesfile) {
- my @earlier;
while (my $patch = <S>) {
chomp $patch or die $!;
$prereq{$patch} //= {};
"[git-debrebase merge-innards patch-queue prep:".
" $q->{SeriesTip}]"
];
+
+ read_tree_debian $newbase;
+ if (@earlier) {
+ read_tree_subdir 'debian/patches', "$pec:debian/patches";
+ } else {
+ rm_subdir_cached 'debian/patches';
+ }
+ $pec = make_commit [ $pec ], [
+ "Update debian/ (excluding patches) to final to avoid re-merging",
+ "debian/ was already merged and we need to just take that.",
+ "[git-debrebase merge-innards patch-queue packaging:".
+ " $q->{SeriesTip}]"
+ ];
+
printdebug "pec' $pec\n";
runcmd @git, qw(reset -q --hard), $pec;
$q->{MR}{PEC} = $pec;
return $bomb->();
}
die "$ty ?";
- } elsif ($ty eq 'VanillaMerge' or $ty eq 'MergedBreakwaters') {
+ } elsif ($ty eq 'MergedBreakwaters') {
+ $last_anchor = mergedbreakwaters_anchor $cl;
+ $build_start->(' MergedBreakwaters', $cur);
+ last;
+ } elsif ($ty eq 'VanillaMerge') {
# User may have merged unstitched branch(es). We will
# have now lost what ffq-prev was then (since the later
# pseudomerge may introduce further changes). The effect
printdebug "*** MERGE\n";
- # xxx avoid calling walk without nogenerate when
- # we have a MergedBreakwater; instead call keycommits ?
-
my @bwbcmd = (@git, qw(merge-base));
my @ibcmd = (@git, qw(merge-base --all));
my $might_be_in_bw = 1;
my $rewriting = 0;
+ my $read_tree_upstream = sub {
+ my ($treeish) = @_;
+ read_tree_upstream $treeish, 0, $build;
+ };
+
$#upp_cl = $upp_limit if defined $upp_limit;
my $committer_authline = calculate_committer_authline();
if ($method eq 'Debian') {
read_tree_debian($cltree);
} elsif ($method eq 'Upstream') {
- read_tree_upstream($cltree);
+ $read_tree_upstream->($cltree);
} elsif ($method eq 'StartRewrite') {
$rewriting = 1;
next;
confess unless $rewriting;
my $differs = (get_differs $build, $cltree);
next unless $differs & D_UPS;
- read_tree_upstream($cltree);
+ $read_tree_upstream->($cltree);
push @parents, map { $_->{CommitId} } @{ $cl->{OrigParents} };
} elsif ($method eq 'MergeCreateMergedBreakwaters') {
print "Found a general merge, will try to tidy it up.\n";
$rewriting = 1;
- read_tree_upstream($cl->{MergeBestAnchor});
- read_tree_upstream($cl->{MergeBestAnchor});
+ $read_tree_upstream->($cl->{MergeBestAnchor});
+ $read_tree_upstream->($cl->{MergeBestAnchor});
read_tree_debian($cltree);
@parents = map { $_->{Breakwater} } @{ $cl->{Parents} };
} elsif ($method eq 'MergeMergeSeries') {