Re: Unexpected "clean -Xd" behavior
From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:52:49
2012/1/19 Jonathan Nieder [off-list ref]:
Pete Harlan wrote:quoted
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. 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.
--
Duy