From: Johan Herland Date: Mon, 11 Jan 2010 09:32:45 GMT Subject: Re: [PATCH] Remove empty directories when checking out a commit with fewer submodules Message-ID: <201001111032.45637.johan@herland.net> In-Reply-To: On Monday 11 January 2010, Johannes Schindelin wrote: > Hi, > > On Mon, 11 Jan 2010, Peter Collingbourne wrote: > > Change the unlink_entry function to use rmdir to remove submodule > > directories. > > NAK. We should not even try to _unlink_ submodule subdirectories; it > would be _way_ too easy to lose data that way. Remember, submodules > are a totally different beast from regular files. They can contain > valuable, yet uncommitted data, that is not even meant to be > committed. > > So you say if the submodule directories are empty, it is safe? Not > so. They will never be empty: there is always .git/, and _that_ can > contain valuable information that you do not want to throw away, too. > Think of unpushed branches, for example. That would be _fatal_ if > you rmdir() that for me. > > So please, no, I believe what Peter is referring to is the _empty_ directories (and that includes no .git/) that are placeholders for submodules that are deliberately not cloned/checked out. This lets you do things like: git clone url:to/some/project cd project git checkout some-other-branch-with-different-submodules git submodule update --init Of course, once you clone/checkout a submodule, there will be contents in that directory (including the .git/), and Git should not try to remove it. Have fun! :) ...Johan -- Johan Herland, www.herland.net