dirstate: move filefoldmap to dirstatemap

As part of moving the dirstate storage logic to a separate class, lets move the
filfoldmap computation to that class. This will allow extensions to replace the
dirstate storage with something that persists the filefoldmap.

Differential Revision: https://phab.mercurial-scm.org/D754
This commit is contained in:
Durham Goode 2017-09-26 03:56:20 -07:00
parent 7995f4da69
commit f30d4eb317

View File

@ -160,21 +160,7 @@ class dirstate(object):
@propertycache
def _filefoldmap(self):
try:
makefilefoldmap = parsers.make_file_foldmap
except AttributeError:
pass
else:
return makefilefoldmap(self._map._map, util.normcasespec,
util.normcasefallback)
f = {}
normcase = util.normcase
for name, s in self._map.iteritems():
if s[0] != 'r':
f[normcase(name)] = name
f['.'] = '.' # prevents useless util.fspath() invocation
return f
return self._map.filefoldmap()
@propertycache
def _dirfoldmap(self):
@ -1370,3 +1356,22 @@ class dirstatemap(object):
otherparent.add(fname)
return nonnorm, otherparent
def filefoldmap(self):
"""Returns a dictionary mapping normalized case paths to their
non-normalized versions.
"""
try:
makefilefoldmap = parsers.make_file_foldmap
except AttributeError:
pass
else:
return makefilefoldmap(self._map, util.normcasespec,
util.normcasefallback)
f = {}
normcase = util.normcase
for name, s in self._map.iteritems():
if s[0] != 'r':
f[normcase(name)] = name
f['.'] = '.' # prevents useless util.fspath() invocation
return f