Case folding collision in Mercurial (WinXP)
Dan Craft
DCraft at PacBell.net
Mon Jun 23 20:11:13 CDT 2008
Summary: Mercurial introduced a case collision during a commit for a directory whose capitalization I've never changed.
(I know--not possible; and yet...)
Mercurial (0.9.5) is reporting
"abort: case-folding collision between
restaurants/Calypsoflavors/ObfIdMap.txt and
restaurants/CalypsoFlavors/ObfIdMap.txt"
during a revert. Under .hg/store/data/restaurants, it has, indeed, established two directories "_calypso_flavors" and "_calypsoflavors", representing "CalypsoFlavors" and "Calypsoflavors". And it has put "_obf_id_map.txt.i" files in both of them.
I am on WinXP. I have not changed the capitalization of the CalypsoFlavors directory. (It's been around long before I even started using Mercurial.) I have only this single machine, so there is no interaction with any other filesys. I have had difficulty using Mercurial from within NetBeans so now use it just outside. The above conflict may have resulted from either place.
In the hg log, the first (and only) mention of the [incorrectly capitalized] "Calypsoflavors" dir is during a commit on 5/23/08, and the .hg/store/data/restaurants/_calypsoflavors dir has a mod date of 5/23. The working dir is currently "CalypsoFlavors", as it has always been. All other references in hg log to that directory are "CalypsoFlavors".
The revert I was attempting to do was at a place in the dir hierarchy completely distinct from the case collision, though in the same repository and workspace. It appears the collision prohibits me from accessing elements beyond just the collision-involved sub-tree.
I searched both Selenic.com and the mailing list archives at nabble, but didn't find anything I could tell was an answer here. It mostly seemed cross-filesys, OS X, or cases where people had renamed files. If I missed one, please direct me.
How do I fix this? I am a Mercurial newbie, though I have used other vers control systems extensively. (Impressed by the elegant design as described in the red book.) Please help me with sufficient details for such a beginner.
There are only a handful of files stored under the [incorrect] _calypsoflavors dir. They are also stored under _calypso_flavors (all had been committed prior to the 5/23 one). I don't know anything about the interdependencies of data beneath .hg/, and imagine I could quite quickly make a mess if I started manually changing things there.
The 5/23 commit is the last one I did on this repository. I have changed numerous committed files since then, so a simple rollback would lose the 5/23 checkpoint of those files. And, since revert fails, I can't get at that version of those files until I can patch this collision.
Thanks,
--Dan
More information about the Mercurial
mailing list