# HG changeset patch # User Matt Mackall # Date 1321388711 21600 # Node ID 6eff984d8e76811f1ce129a424236abf0afaa191 # Parent 3c72117a7a0e3f830cd9a433aeca8dab4e7dc02f dirstate: fix case-folding identity for traditional Unix We used to use os.path.normcase which was a no-op, which was unhelpful for cases like VFAT on Linux. diff -r 3c72117a7a0e -r 6eff984d8e76 mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Nov 15 17:16:17 2011 +0100 +++ b/mercurial/dirstate.py Tue Nov 15 14:25:11 2011 -0600 @@ -376,7 +376,7 @@ del self._map[f] def _normalize(self, path, isknown): - normed = os.path.normcase(path) + normed = util.normcase(path) folded = self._foldmap.get(normed, None) if folded is None: if isknown or not os.path.lexists(os.path.join(self._root, path)): diff -r 3c72117a7a0e -r 6eff984d8e76 mercurial/posix.py --- a/mercurial/posix.py Tue Nov 15 17:16:17 2011 +0100 +++ b/mercurial/posix.py Tue Nov 15 14:25:11 2011 -0600 @@ -164,6 +164,10 @@ st2 = os.lstat(fpath2) return st1.st_dev == st2.st_dev +# os.path.normcase is a no-op, which doesn't help us on non-native filesystems +def normcase(path): + return path.lower() + if sys.platform == 'darwin': import fcntl # only needed on darwin, missing on jython def realpath(path): diff -r 3c72117a7a0e -r 6eff984d8e76 mercurial/util.py --- a/mercurial/util.py Tue Nov 15 17:16:17 2011 +0100 +++ b/mercurial/util.py Tue Nov 15 14:25:11 2011 -0600 @@ -44,6 +44,7 @@ makedir = platform.makedir nlinks = platform.nlinks normpath = platform.normpath +normcase = platform.normcase nulldev = platform.nulldev openhardlinks = platform.openhardlinks oslink = platform.oslink diff -r 3c72117a7a0e -r 6eff984d8e76 mercurial/windows.py --- a/mercurial/windows.py Tue Nov 15 17:16:17 2011 +0100 +++ b/mercurial/windows.py Tue Nov 15 14:25:11 2011 -0600 @@ -131,6 +131,8 @@ def normpath(path): return pconvert(os.path.normpath(path)) +normcase = os.path.normcase + def realpath(path): ''' Returns the true, canonical file system path equivalent to the given