our $suite_re = '[-+.0-9a-z]+';
our $cleanmode_re = qr{(?: dpkg-source (?: -d )? (?: ,no-check | ,all-check )?
- | git | git-ff
+ | (?: git | git-ff )
| check (?: ,ignores )?
| none
)}x;
#----- other building -----
-sub clean_tree_check_git ($$) {
- my ($honour_ignores, $message) = @_;
+sub clean_tree_check_git ($$$) {
+ my ($honour_ignores, $message, $ignmessage) = @_;
my @cmd = (@git, qw(clean -dn));
push @cmd, qw(-x) unless $honour_ignores;
my $leftovers = cmdoutput @cmd;
if (length $leftovers) {
print STDERR $leftovers, "\n" or confess $!;
+ $message .= $ignmessage if $honour_ignores;
fail $message;
}
}
return if $cleanmode =~ m{no-check};
return if $patches_applied_dirtily; # yuk
clean_tree_check_git +($cleanmode !~ m{all-check}),
- (f_ <<END, $message);
-%s
+ $message, "\n".__ <<END;
If this is just missing .gitignore entries, use a different clean
mode, eg --clean=dpkg-source,no-check (-wdn/-wddn) to ignore them
or --clean=git (-wg/-wgf) to use \`git clean' instead.
}
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}) {
clean_tree_check_git +($cleanmode =~ m{ignores}), __
- "tree contains uncommitted files and --clean=check specified";
+ "tree contains uncommitted files and --clean=check specified", '';
} elsif ($cleanmode =~ m{^dpkg-source}) {
clean_tree_check_git_wd __
"tree contains uncommitted files (NB dgit didn't run rules clean)";
} elsif ($cleanmode =~ m{^git}) {
- # If we were actually cleaning these files would be summarily
- # deleted. Since we're not, and not using the working tree
- # anyway, we can just ignore them - nothing will use them.
+ clean_tree_check_git 1, __
+ "tree contains uncommited, untracked, unignored files", '';
} elsif ($cleanmode eq 'none') {
} else {
confess "$cleanmode ?";
} elsif (s/^-wn$//s) {
push @ropts, $&;
$cleanmode = 'none';
- } elsif (s/^-wg$//s) {
+ } elsif (s/^-wg(f?)$//s) {
push @ropts, $&;
$cleanmode = 'git';
- } elsif (s/^-wgf$//s) {
- push @ropts, $&;
- $cleanmode = 'git-ff';
+ $cleanmode .= '-ff' if $1;
} elsif (s/^-wd(d?)([na]?)$//s) {
push @ropts, $&;
$cleanmode = 'dpkg-source';