chiark / gitweb /
dgit: Provide --clean=dpkg-source[-d],all-check aka -wda / -wdda
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Oct 2018 12:23:21 +0000 (13:23 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Oct 2018 15:46:47 +0000 (16:46 +0100)
This seems logically necessary and could help debug a clean target.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit
dgit.1

diff --git a/dgit b/dgit
index 654b3d1..e88af4e 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -101,7 +101,7 @@ our %forceopts = map { $_=>0 }
 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 )? (?: ,no-check )?
+our $cleanmode_re = qr{(?: dpkg-source (?: -d )? (?: ,no-check | ,all-check )?
                          | git | git-ff
                          | check (?: ,ignores )?
                          | none
@@ -6218,7 +6218,7 @@ sub clean_tree_check_git_wd ($) {
     my ($message) = @_;
     return if $cleanmode =~ m{no-check};
     return if $patches_applied_dirtily; # yuk
-    clean_tree_check_git 1,
+    clean_tree_check_git +($cleanmode !~ m{all-check}),
                          (f_ <<END, $message);
 %s
 If this is just missing .gitignore entries, use a different clean
@@ -7280,11 +7280,12 @@ sub parseopts () {
                } elsif (s/^-wgf$//s) {
                    push @ropts, $&;
                    $cleanmode = 'git-ff';
-               } elsif (s/^-wd(d?)([n]?)$//s) {
+               } elsif (s/^-wd(d?)([na]?)$//s) {
                    push @ropts, $&;
                    $cleanmode = 'dpkg-source';
                    $cleanmode .= '-d' if $1;
                    $cleanmode .= ',no-check' if $2 eq 'n';
+                   $cleanmode .= ',all-check' if $2 eq 'a';
                } elsif (s/^-wc$//s) {
                    push @ropts, $&;
                    $cleanmode = 'check';
diff --git a/dgit.1 b/dgit.1
index ed5205c..5155dc0 100644 (file)
--- a/dgit.1
+++ b/dgit.1
@@ -613,6 +613,11 @@ you will probably need --clean=dpkg-source,no-check aka -wdn.
 Like --clean=dpkg-source, but
 does not care about untracked un-ignored files.
 .TP
+.BR --clean=dpkg-source "[" -d "]" ,all-check " | " -wda " | " -wdda
+Like --clean=dpkg-source, but
+fails even on ignored untracked files.
+This could perhaps be used to detect bugs in your rules clean target.
+.TP
 .BR -N " | " --new
 The package is or may be new in this suite.  Without this, dgit will
 refuse to push.  It may (for Debian, will) be unable to access the git