[darcs-devel] Filesystem in DB, but data in filesystem

Max Battcher me at worldmaker.net
Mon Jul 30 13:08:03 PDT 2007


Ben Coburn wrote:
> You are right, I had not thought this through quite far enough.... Even 
> if pristine was always case sensitive collisions could happen in the 
> working directory.
> 
> Does darcs detect and warn about these kind of collisions when run on 
> case insensitive file systems? If not, the pristine index could make it 
> simpler to check for possible collisions.

Indeed.  I think that having pristine be case-insensitive here is the 
important part because it's more "critical" to Darcs.  Pristine 
collisions can be a lot more impacting than working copy collisions. 
For instance, maybe a Windows dev never needs to touch makefile or 
Makefile, but all of the important files aren't collisions and therefore 
accessible.  If the repository doesn't even need a working directory (as 
discussed elsewhere), collisions don't matter.

Once the pristine cache is saved from these collisions I'm betting it 
would be even easier to save the working directory collision free.

What about adding a "case-insensitive name" field (in addition to 
"canonical name", and "pristine name") to the pristine index?  So on 
Unix you might have "Makefile" and "makefile" as the canonical names 
(referred to pristine names like 1.dat or 233.dat) and then add in 
case-insensitive names "makefile" and "Makefile1".  There's a little bit 
of extra mental effort between cross-platform developers, but hopefully 
it shouldn't be much of one: most case-sensitive platforms (and 
particularly Windows) are case-preserving so that even though one of the 
files has a slightly different name, it still looks close enough to the 
original name.  Then you just have darcs translate from the "Makefile1" 
to "Makefile" when generating patches and so forth, and it can figure 
that out from the pristine index that "Makefile1" has a case-sensitive 
name...

It sounds like a decent solution to me.

-- 
--Max Battcher--
http://www.worldmaker.net/


More information about the darcs-devel mailing list