Re: [RFC PATCH] Re: Empty directories...
- From
David Kastrup <dak@gnu.org>
- Date
- Jul 21, 2007, 05:15 UTC
- Message-ID
- <85sl7i9w1j.fsf@lola.goethe.zz>
- In-Reply-To
- <alpine.LFD.0.999.0707202135450.27249@woody.linux-foundation.org>
Linus Torvalds <torvalds@linux-foundation.org> writes:
Show 9 quoted lines
> On Sat, 21 Jul 2007, David Kastrup wrote: >> >> Ok, I have now acquired enough passing familiarity with the code >> that I find part of my way around it. Most of your patch looks >> like it caters for the S_ISDIR type not previously in use in the >> index (how about the repository?). > > The object database has always had S_ISDIR (well, "always" is since > very early on, when I realized that flat trees didn't cut it).
Then I think I have a bit of a problem: I should think that S_ISDIR in the repository presumably marks a tree object (still very fuzzy around the concepts here). An explicitly checked-in directory (under my scheme always named "." inside of its tree) would presumably also have S_ISDIR in the repository but behave quite differently.
> As far as I can tell, it would have been exactly the same thing as the > S_IFDIR, just instead of the S_IFDIR check, you'd have had to check the > end of the filename for being '/'.
Relative file name of ".", more or less. Both names satisfy S_IFDIR in the filesystem, though.
> Otherwise? Exactly the same.
> The more important thing is in many ways the object storage, and > that's also the reason for doing the index the way I did - it more > closely matches what the object storage does (ie the "index" ends up > mirroring a linearized and unpacked "tree" object).
I still have to get enough of a clue about the object store to see how this pans out. I would not want to have the "." objects marked as type "tree" and empty if I can avoid it. It seems unclean, would need extra case separations all over the place, violate the "empty trees evaporate" property and also waste a good place for tracking permissions or other attributes in future.
-- David Kastrup, Kriemhildstr. 15, 44793 Bochum