diff -r 98ca9078807a -r f44187605315 mercurial/localrepo.py --- a/mercurial/localrepo.py Wed Sep 12 15:05:51 2018 -0700 +++ b/mercurial/localrepo.py Wed Sep 12 15:07:27 2018 -0700 @@ -479,8 +479,8 @@ # The store has changed over time and the exact layout is dictated by # requirements. The store interface abstracts differences across all # of them. - store = storemod.store(requirements, storebasepath, - lambda base: vfsmod.vfs(base, cacheaudited=True)) + store = makestore(requirements, storebasepath, + lambda base: vfsmod.vfs(base, cacheaudited=True)) hgvfs.createmode = store.createmode @@ -567,6 +567,17 @@ b'sparse is not enabled; enable the ' b'"sparse" extensions to access')) +def makestore(requirements, path, vfstype): + """Construct a storage object for a repository.""" + if b'store' in requirements: + if b'fncache' in requirements: + return storemod.fncachestore(path, vfstype, + b'dotencode' in requirements) + + return storemod.encodedstore(path, vfstype) + + return storemod.basicstore(path, vfstype) + @interfaceutil.implementer(repository.completelocalrepository) class localrepository(object):