[ANN] caseguard - an extension for case-folding collision prevention

alexandru alex at hackd.net
Wed Feb 3 14:01:16 CST 2010


I have been working for a while on caseguard, an extension that helps Mercurial users avoid case-folding collisions by verifying that the files they are adding to a repository differ in more than just case to anything that's already tracked (i.e. if the repo tracks 'file', adding 'FILE' will be blocked since it would cause a collision)

The extension is available at http://bitbucket.org/alexandru/caseguard/

The extension also protects against using `hg rm' to delete files that don't match exactly what's tracked by the repository (i.e. `hg rm file' will fail if the repo tracks 'FILE', not 'file'). Simple `hg addremove' protection is currently included, but please refer to the BUGS file included with the extension for more information on current issues with that.

I am aware of two other extensions that deal with case-folding collisions: CaseFold and Casestop. Caseguard is different as it only prevents problematic additions on the user side, as opposed to checking the merge and/or update stages (as CaseFold does). Caseguard doesn't handle incoming changesets that might cause case-folds. The hope is that even users on case-sensitive filesystems would use caseguard, knowing that other developers involved in their projects may use a case-insensitive FS. 

As this is my first serious foray in Mercurial development, any and all feedback is greatly appreciated.

Thank you,

Alexandru Totolici

NOTE: caseguard has been developed as part of Winter 2010 Undergraduate Capstone Open-source Project (UCOSP), mentored by Benjamin Pollack of FogCreek Software. 
You can learn more about UCOSP at http://ucosp.wordpress.com/about/ 
For Mercurial-specific information please see https://ucosp.fogbugz.com/default.asp?W1


More information about the Mercurial-devel mailing list