our %format_ok = map { $_=>1 } ("1.0","3.0 (native)","3.0 (quilt)");
our $suite_re = '[-+.0-9a-z]+';
-our $cleanmode_re = qr{(?:dpkg-source(?:-d)?|git|git-ff|check|none)};
+our $cleanmode_re = qr{(?: dpkg-source (?: -d )?
+ | git | git-ff
+ | check (?: ,ignores )?
+ | none
+ )}x;
our $git_authline_re = '^([^<>]+) \<(\S+)\> (\d+ [-+]\d+)$';
our $splitbraincache = 'dgit-intern/quilt-cache';
sub clean_tree_check () {
# Not yet fully implemented.
+ # This function needs to not care about modified but tracked files.
+ # That was done by check_not_dirty, and by now we may have run
+ # the rules clean target which might modify tracked files (!)
if ($cleanmode =~ m{^check}) {
- my $leftovers = cmdoutput @git, qw(clean -xdn);
+ my @cmd = (@git, qw(clean -dn));
+ push @cmd, qw(-x) unless $cleanmode =~ m{ignores};
+ my $leftovers = cmdoutput @cmd;
if (length $leftovers) {
print STDERR $leftovers, "\n" or confess $!;
fail __
} elsif (s/^-wc$//s) {
push @ropts, $&;
$cleanmode = 'check';
+ } elsif (s/^-wci$//s) {
+ push @ropts, $&;
+ $cleanmode = 'check,ignores';
} elsif (s/^-c([^=]*)\=(.*)$//s) {
push @git, '-c', $&;
$gitcfgs{cmdline}{$1} = [ $2 ];