chiark / gitweb /
dgit: clean_tree_check: Reorganise command construction
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 7f58bc517939fbde17cb16d9fee9e292e25137d1..6cf10fb4deb2f6add3a267532a207ab193f33e84 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -6201,8 +6201,13 @@ sub maybe_unapply_patches_again () {
 
 sub clean_tree_check () {
     # Not yet fully implemented.
-    if ($cleanmode eq 'check') {
-       my $leftovers = cmdoutput @git, qw(clean -xdn);
+    # 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 @cmd = (@git, qw(clean -dn));
+       push @cmd, qw(-x);
+       my $leftovers = cmdoutput @cmd;
        if (length $leftovers) {
            print STDERR $leftovers, "\n" or confess $!;
            fail __
@@ -6224,7 +6229,7 @@ sub clean_tree () {
        runcmd_ordryrun_local @git, qw(clean -xdf);
     } elsif ($cleanmode eq 'git-ff') {
        runcmd_ordryrun_local @git, qw(clean -xdff);
-    } elsif ($cleanmode eq 'check') {
+    } elsif ($cleanmode =~ m{^check}) {
        clean_tree_check();
     } elsif ($cleanmode eq 'none') {
     } else {