# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1248624126 -7200 # Node ID 26fa0e31011ddedad3ada1a1ec417c3c57e93ffe # Parent 40196d036a7196a6794f10c1365ecdd20267ca2f dirstate: fold paths using the just added util.realpath() function. Using the one true canonical path of a directory entry allows equivalent paths to be treated gracefully. Equivalent means, in this case, differing directory entries resulting in the same, unique file system link to a file. diff -r 40196d036a71 -r 26fa0e31011d mercurial/dirstate.py --- a/mercurial/dirstate.py Sun Jul 26 17:25:08 2009 +0200 +++ b/mercurial/dirstate.py Sun Jul 26 18:02:06 2009 +0200 @@ -59,7 +59,7 @@ def _foldmap(self): f = {} for name in self._map: - f[os.path.normcase(name)] = name + f[util.realpath(self._join(name))] = name return f @propertycache @@ -340,7 +340,7 @@ self._ui.warn(_("not in dirstate: %s\n") % f) def _normalize(self, path, knownpath): - norm_path = os.path.normcase(path) + norm_path = util.realpath(self._join(path)) fold_path = self._foldmap.get(norm_path, None) if fold_path is None: if knownpath or not os.path.exists(os.path.join(self._root, path)): diff -r 40196d036a71 -r 26fa0e31011d tests/test-path-normalization --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-path-normalization Sun Jul 26 18:02:06 2009 +0200 @@ -0,0 +1,4 @@ +#!/bin/sh + +hg clone --quiet $TESTDIR/test-path-normalization.hg t +exec hg st -R t diff -r 40196d036a71 -r 26fa0e31011d tests/test-path-normalization.hg Binary file tests/test-path-normalization.hg has changed