]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t7300: clean -d should skip dirs with ignored files
authorSamuel Lijin <sxlijin@gmail.com>
Thu, 18 May 2017 08:21:49 +0000 (04:21 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 22 May 2017 03:06:52 +0000 (12:06 +0900)
If git sees a directory which contains only untracked and ignored
files, clean -d should not remove that directory. It was recently
discovered that this is *not* true of git clean -d, and it's possible
that this has never worked correctly; this test and its accompanying
patch series aims to fix that.

Signed-off-by: Samuel Lijin <sxlijin@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7300-clean.sh

index b89fd2a6ada025fc0e68b1a1c3d7e739aacec688..3a2d709c2977ea3c9b735a3b56caf9d16274fdd3 100755 (executable)
@@ -653,4 +653,20 @@ test_expect_success 'git clean -d respects pathspecs (pathspec is prefix of dir)
        test_path_is_dir foobar
 '
 
+test_expect_failure 'git clean -d skips untracked dirs containing ignored files' '
+       echo /foo/bar >.gitignore &&
+       echo ignoreme >>.gitignore &&
+       rm -rf foo &&
+       mkdir -p foo/a/aa/aaa foo/b/bb/bbb &&
+       touch foo/bar foo/baz foo/a/aa/ignoreme foo/b/ignoreme foo/b/bb/1 foo/b/bb/2 &&
+       git clean -df &&
+       test_path_is_dir foo &&
+       test_path_is_file foo/bar &&
+       test_path_is_missing foo/baz &&
+       test_path_is_file foo/a/aa/ignoreme &&
+       test_path_is_missing foo/a/aa/aaa &&
+       test_path_is_file foo/b/ignoreme &&
+       test_path_is_missing foo/b/bb
+'
+
 test_done