localrepo: push manifestlog and changelog construction code into store
This feels substantially more appropriate, as the store is actually
the layer with knowledge of how to handle this storage. I didn't move
the caching decorators for now because that's going to require some
more involved work, and this unblocks my current experimentation.
Differential Revision: https://phab.mercurial-scm.org/D6732
--- a/mercurial/localrepo.py Sat Sep 07 12:49:33 2019 +0200
+++ b/mercurial/localrepo.py Thu Aug 15 14:53:27 2019 -0400
@@ -28,7 +28,6 @@
branchmap,
bundle2,
changegroup,
- changelog,
color,
context,
dirstate,
@@ -41,7 +40,6 @@
filelog,
hook,
lock as lockmod,
- manifest,
match as matchmod,
merge as mergemod,
mergeutil,
@@ -1304,14 +1302,11 @@
@storecache('00changelog.i')
def changelog(self):
- return changelog.changelog(self.svfs,
- trypending=txnutil.mayhavepending(self.root))
+ return self.store.changelog(txnutil.mayhavepending(self.root))
@storecache('00manifest.i')
def manifestlog(self):
- rootstore = manifest.manifestrevlog(self.svfs)
- return manifest.manifestlog(self.svfs, self, rootstore,
- self._storenarrowmatch)
+ return self.store.manifestlog(self, self._storenarrowmatch)
@repofilecache('dirstate')
def dirstate(self):
--- a/mercurial/store.py Sat Sep 07 12:49:33 2019 +0200
+++ b/mercurial/store.py Thu Aug 15 14:53:27 2019 -0400
@@ -15,7 +15,9 @@
from .i18n import _
from . import (
+ changelog,
error,
+ manifest,
node,
policy,
pycompat,
@@ -379,6 +381,14 @@
l.sort()
return l
+ def changelog(self, trypending):
+ return changelog.changelog(self.vfs, trypending=trypending)
+
+ def manifestlog(self, repo, storenarrowmatch):
+ rootstore = manifest.manifestrevlog(self.vfs)
+ return manifest.manifestlog(
+ self.vfs, repo, rootstore, storenarrowmatch)
+
def datafiles(self, matcher=None):
return self._walk('data', True) + self._walk('meta', True)