diff options
Diffstat (limited to 'dgit')
-rwxr-xr-x | dgit | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -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 )? +our $cleanmode_re = qr{(?: dpkg-source (?: -d )? (?: ,no-check )? | git | git-ff | check (?: ,ignores )? | none @@ -6214,6 +6214,19 @@ sub clean_tree_check_git ($$) { } } +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, + (f_ <<END, $message); +%s +If this is just missing .gitignore entries, use a different clean +mode, eg --clean=dpkg-source,no-check (-wdu/-wddu) to ignore them +or --clean=git (-wg/-wgf) to use \`git clean' instead. +END +} + sub clean_tree_check () { # Not yet fully implemented. # This function needs to not care about modified but tracked files. @@ -6222,6 +6235,9 @@ sub clean_tree_check () { if ($cleanmode =~ m{^check}) { clean_tree_check_git +($cleanmode =~ m{ignores}), __ "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)"; } } @@ -6234,6 +6250,8 @@ sub clean_tree () { push @cmd, qw(-T clean); maybe_apply_patches_dirtily(); runcmd_ordryrun_local @cmd; + clean_tree_check_git_wd __ + "tree contains uncommitted files (after running rules clean)"; } elsif ($cleanmode eq 'git') { runcmd_ordryrun_local @git, qw(clean -xdf); } elsif ($cleanmode eq 'git-ff') { @@ -7262,10 +7280,11 @@ sub parseopts () { } elsif (s/^-wgf$//s) { push @ropts, $&; $cleanmode = 'git-ff'; - } elsif (s/^-wd(d?)$//s) { + } elsif (s/^-wd(d?)([n]?)$//s) { push @ropts, $&; $cleanmode = 'dpkg-source'; $cleanmode .= '-d' if $1; + $cleanmode .= ',no-check' if $2 eq 'n'; } elsif (s/^-wc$//s) { push @ropts, $&; $cleanmode = 'check'; |