# - no fast forward checks
# for now only explicit with commitids
- # implicitly uses `upstream'
+# implicitly uses `upstream'
# # (or multiple other branches)
# git-debrebase new-upstream \
# [<subdir>/]=<commitid>
# refs/ffqrebase-prev/BRANCH BRANCH may be refs/...; if not it means
# refs/ffqrebase-base/BRANCH refs/heads/BRANCH
# zero, one, or both of these may exist
+#
+# git-debrebase without start, if already started, is willing
+# to strip pseudomerges provided that they overwrite exactly
+# the previous HEAD
+# xxxx is this right ? what matters is have we pushed
+# I think in fact the right answer is:
+# git-debrebase always strips out pseudomerges from its branch
+# a pseudomerge is put in at the time we want to push
+# at that time, we make a pseudomerge of the remote tracking
+# branch (if raw git) or the dgit view (if dgit)
+# for raw git git-ffqrebase, do want preciseley to record
+# value of remote tracking branch or our branch, on start, so we
+# overwrite only things we intend to
+# the previous pseudomerge check for tags and remote branches ?
use strict;
return $unknown->("complex merge");
}
-sub launder ($$$;$$$) {
- my ($input, $pseudos_must_overwrite_this, $wantdebonly,
- $report, $depth, $report_anomaly, $nogenerate) = @_;
+sub walk ($$;$$$) {
+ my ($input, $wantdebonly,
+ $report, $depth, $report_anomaly, $report_only) = @_;
# go through commits backwards
# we generate two lists of commits to apply
# => ($tip, $breakwater_tip)
my $st = $cl->{SubType};
$report->($cl);
$found{$ty. ( defined($st) ? "-$st" : '' )}++;
+ push @processed, $cl;
my $p0 = $cl->{Parents}[0]{CommitId};
- $cl->{Abbrev} = lc substr $ty,0,1;
if ($ty eq 'AddPatches') {
- $cl->{Abbrev} = 'P';
$cur = $p0;
$rewrite_from_here->();
next;
} elsif ($ty eq 'Packaging') {
- $cl->{Abbrev} = 'd';
push @deb_cl, $cl;
- push @processed, $cl;
$cur = $p0;
next;
} elsif ($ty eq 'Upstream') {
push @ups_cl, $cl;
- push @processed, $cl;
$cur = $p0;
next;
} elsif ($ty eq 'Mixed') {
$rewrite_from_here->();
next;
} elsif ($ty eq 'Pseudomerge') {
- $cl->{Abbrev} = 'M';
- if (defined $pseudos_must_overwrite_this &&
- !grep {
- is_fast_fwd $pseudos_must_overwrite_this, $_->{CommitId}
- },
- @{ $cl->{Overwritten} }) {
- $report_anomaly->($cl,
- "Pseudomerge should overwrite".
- " $pseudos_must_overwrite_this".
- " but does not do so");
- }
push @pseudomerges, $cl;
$rewrite_from_here->();
$cur = $ty->{Contributor};
last;
} elsif ($ty eq 'DgitImportUnpatched' &&
@pseudomerges == 1) {
- $cl->{Abbrev} = 'I';
# This import has a tree which is just like a breakwater
# tree, but it has the wrong history. Its ought to have
# the previous breakwater (which dgit ought to have
workarea_fresh();
- my $rewriting = 1;
+ my $rewriting = 0;
my $build = $basis;