--- 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):