Thank you very much for looking at this. 2012/1/19 "Nguyen Thai Ngoc Duy" <pclouds@xxxxxxxxx>: > 2012/1/19 Jonathan Nieder <jrnieder@xxxxxxxxx>: >> Pete Harlan wrote: >> >>> When a directory contains nothing but an ignored subdirectory, that >>> subdirectory does not get removed by "git clean -Xdf". >>> >>> For example, in a new directory: >>> >>> # git init >>> Initialized empty Git repository in /tmp/foo/.git/ >>> # echo a/ >.gitignore >>> # git add .gitignore >>> # git commit -m "Initial commit" >>> [master (root-commit) c3af24c] Initial commit >>>  1 files changed, 1 insertions(+), 0 deletions(-) >>>  create mode 100644 .gitignore >>> # mkdir -p foo/a >>> # touch foo/a/junk.o >>> # git status >>> # On branch master >>> nothing to commit (working directory clean) >>> # git clean -Xdn  # <--- DOES NOT MENTION foo/a > > -X is to remove ignored files _only_ (DIR_SHOW_IGNORED flag). And > "foo" is not ignored according to .gitignore, so it cuts short there > and never gets to "foo/a". -x works. But the presence of a tracked file in foo makes it not cut short there, so the logic seems a bit off. (If we're interested in removing ignored files only, then the ignored files (not a tracked file) should trigger us looking into foo. I don't know Git internals but I'm guessing it's not quite that simple.) > May be intentional, may be not > (we hit a corner case). I don't know. Commit message b991625 might > help: > > dir.c: Omit non-excluded directories with dir->show_ignored > > This makes "git-ls-files --others --directory --ignored" behave > as documented and consequently also fixes "git-clean -d -X". > Previously, git-clean would remove non-excluded directories > even when using the -X option. It can (and does) leave foo behind (because it's not ignored), but it would conform better to the -X documentation if the ignored files were removed. BTW the above commit doesn't affect the behavior in this example. If a fix isn't desirable then as Jonathan said updating the documentation makes sense. (And those of us using it as a poor man's "make clean" can just fix our Makefiles instead...) Thanks, --Pete -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html