mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
dirstate: normalize case of directory components
If we have an existing f/a, and rename f to F, adding F/b should be normalized to f/b.
This commit is contained in:
parent
76e8b41818
commit
b7a9e07a8c
@ -82,6 +82,8 @@ class dirstate(object):
|
|||||||
f = {}
|
f = {}
|
||||||
for name in self._map:
|
for name in self._map:
|
||||||
f[util.normcase(name)] = name
|
f[util.normcase(name)] = name
|
||||||
|
for name in self._dirs:
|
||||||
|
f[util.normcase(name)] = name
|
||||||
f['.'] = '.' # prevents useless util.fspath() invocation
|
f['.'] = '.' # prevents useless util.fspath() invocation
|
||||||
return f
|
return f
|
||||||
|
|
||||||
@ -401,8 +403,16 @@ class dirstate(object):
|
|||||||
if isknown or not os.path.lexists(os.path.join(self._root, path)):
|
if isknown or not os.path.lexists(os.path.join(self._root, path)):
|
||||||
folded = path
|
folded = path
|
||||||
else:
|
else:
|
||||||
folded = self._foldmap.setdefault(normed,
|
# recursively normalize leading directory components
|
||||||
util.fspath(normed, self._root))
|
# against dirstate
|
||||||
|
if '/' in normed:
|
||||||
|
d, f = normed.rsplit('/')
|
||||||
|
d = self._root + "/" + self._normalize(d, isknown)
|
||||||
|
folded = d + "/" + util.fspath(f, d)
|
||||||
|
else:
|
||||||
|
folded = util.fspath(normed, self._root)
|
||||||
|
self._foldmap[normed] = folded
|
||||||
|
|
||||||
return folded
|
return folded
|
||||||
|
|
||||||
def normalize(self, path, isknown=False):
|
def normalize(self, path, isknown=False):
|
||||||
|
Loading…
Reference in New Issue
Block a user