On Sat, Nov 19, 2011 at 2:23 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jay Soffian <jaysoffian@xxxxxxxxx> writes: > >> git init test_repo && >> cd test_repo && >> mkdir -p foo/bar && >> echo baz > foo/bar/baz && >> echo /foo/bar > .gitignore && >> git add .gitignore && >> git clean -n -d >> >> Initialized empty Git repository in .../test_repo/.git/ >> Would remove foo/ >> >> Seems surprising. > > You said "everythingthing in foo/bar is uninteresting and can be cleaned", > you have one untracked file in "foo/bar" hierarchy, and you have nothing > else in "foo/" hierarchy. Just because it is uninteresting to git does not mean that it isn't precious. In this case the ignored files are from svn and checked out via another tool (gclient). > Removing the uninteresting cruft as your .gitignore instructs Git makes > the entire "foo/" hierarchy devoid of any contents. I would *expect* Git > to clean "foo" in this case. But .gitignore is not for indicating "this is cruft", it is for indicating "this is not under git's purview." You must admit that git clean's behavior above, if not surprising to you, is at least inconsistent with: $ git init test_repo && cd test_repo && mkdir foo && touch foo/bar && echo /foo > .gitignore && git add .gitignore && git clean -n -d which does protect foo (and its contents) from being cleaned. git clean specifically has an option for "remove only the stuff which is ignored" which implies that it should not be removing ignored stuff w/o that option. > I've seen some "surprising" behaviour in "git clean" (which I do not use > myself, I do not consider part of "my code", and I am not surprised if it > has many bugs), but I fail to see what is surprising in your transcript. > > It would be a different issue if you had ">foo/other" before your "clean". > Then "foo/" has "foo/clean" that is not declared to be uninteresting. Huh? clean is designed to remove untracked unignored files, so I'd expect it to remove foo/other in that case. And what is this foo/clean to which you refer? j. -- 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