Subject: Re: Some strange behavior of git

From: Thomas Gummerer <[email-masked]>
Date: Thu, 25 Feb 2016 17:14:09 +0100

[Please keep everyone cc'd in the conversation, especially the mailing
list.  I added it back for now.
Also please don't top post on the list]

On 02/25, Olga Pshenichnikova wrote:
> No, it isn't empty, but I found the problem.
> Problem was that I handled subdirectories structure in exclude file:
>
> design/dir1
> design/dir2
>
> But
>
> design/dir3 wasn't ignored and wasn't controlled.
>
> So, my problem take place when some sub directory both isn't ignored AND
> isn't controlled even if it isn't empty.

I think that's a bug, I think this directory should only be removed if
-x is given.  I haven't come up with a patch yet, but here's a test
demonstrating the failure.

diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
index 86ceb38..0961007 100755
--- a/t/t7300-clean.sh
+++ b/t/t7300-clean.sh
@@ -653,4 +653,13 @@ test_expect_success 'git clean -d respects pathspecs (pathspec is prefix of dir)
 	test_path_is_dir foobar
 '

+test_expect_failure 'git clean -d does not clean ignored files in subdir' '
+	mkdir -p sub/dir &&
+	>sub/dir/file &&
+	test_when_finished rm .gitignore &&
+	echo sub/dir/ >.gitignore &&
+	git clean -df sub &&
+	test_path_is_file sub/dir/file
+'
+
 test_done

> Thank you for response!