Re: [PATCH] Remove empty directories when checking out a commit with fewer submodules
- From
Johan Herland <johan@herland.net>
- Date
- Jan 11, 2010, 09:32 UTC
- Message-ID
- <201001111032.45637.johan@herland.net>
- In-Reply-To
- <alpine.DEB.1.00.1001110954410.4985@pacific.mpi-cbg.de>
On Monday 11 January 2010, Johannes Schindelin wrote:
Show 19 quoted lines
> 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, <johan@herland.net> www.herland.net