# $x and $y are as for get_tree
# where $name, $ix, $iy are $name and $info from get_tree
# opts are all call even for names same in both
+ # recurse call even for names same in both
my $opts = shift @_ if @_>=4;
my ($x,$y,$call) = @_;
my $all = $opts->{all};
return if !$all and $x eq $y;
- my @x = get_tree $x;
- my @y = get_tree $y;
+ my @x = get_tree $x, 0, $opts->{recurse};
+ my @y = get_tree $y, 0, $opts->{recurse};
printdebug "trees_diff_walk(..$x,$y..) ".Dumper(\@x,\@y)
if $debuglevel >= 3;
while (@x || @y) {
my $xp = $ix && "$xd/patches";
my $yp = $iy && "$yd/patches";
- trees_diff_walk $xp, $yp, sub {
+ trees_diff_walk { recurse=>1 }, $xp, $yp, sub {
my ($n,$ix,$iy) = @_;
# analyse difference in debian/patches
my $ok;
- if ($n !~ m/\.series$/s && !$ix && $plain->($iy)) {
+ if ($n =~ m{/$}s) {
+ # we are recursing; directories may appear and disappear
+ $ok = 1;
+ } elsif ($n !~ m/\.series$/s && !$ix && $plain->($iy)) {
$ok = 1;
} elsif ($n eq 'series' && $plain->($ix) && $plain->($iy)) {
my $x_s = (git_cat_file "$xp/series", 'blob');
[qw(blob missing)];
$series //= '';
my %series;
+ our $comments_snagged;
foreach my $f (grep /\S/, grep {!m/^\s\#/} split /\n/, $series) {
+ if ($f =~ m/^\s*\#/) {
+ snag 'series-comments',
+ "$seriesfn contains comments, which will be discarded"
+ unless $comments_snagged++;
+ next;
+ }
fail "patch $f repeated in $seriesfn !" if $series{$f}++;
}
foreach my $patchfile (get_tree "$head:debian/patches", 1,1) {
'convert-from-dgit-view';
}
+sub cmd_forget_was_ever_debrebase () {
+ badusage "forget-was-ever-debrebase takes no further arguments" if @ARGV;
+ my ($ffqstatus, $ffq_msg, $current, $ffq_prev, $gdrlast) =
+ ffq_prev_branchinfo();
+ fail "Not suitable for recording git-debrebaseness anyway: $ffq_msg"
+ if defined $ffq_msg;
+ push @deferred_updates, "delete $ffq_prev";
+ push @deferred_updates, "delete $gdrlast";
+ snags_maybe_bail();
+ run_deferred_updates "forget-was-ever-debrebase";
+}
+
sub cmd_record_resolved_merge () {
badusage "record-resolved-merge takes no further arguments" if @ARGV;
# MERGE-TODO needs documentation