diff -r acc8885a6450 -r f2c5b9d48b29 mercurial/manifest.py --- a/mercurial/manifest.py Tue Oct 18 17:44:26 2016 -0700 +++ b/mercurial/manifest.py Tue Oct 18 17:44:42 2016 -0700 @@ -1274,7 +1274,7 @@ return cachemf if self._treeinmem: - m = treemanifestctx(self._revlog, '', node) + m = treemanifestctx(self._repo, '', node) else: m = manifestctx(self._repo, node) if node != revlog.nullid: @@ -1344,9 +1344,8 @@ return manifestdict(d) class treemanifestctx(object): - def __init__(self, revlog, dir, node): - revlog = revlog.dirlog(dir) - self._revlog = revlog + def __init__(self, repo, dir, node): + self._repo = repo self._dir = dir self._data = None @@ -1359,23 +1358,27 @@ #rev = revlog.rev(node) #self.linkrev = revlog.linkrev(rev) + def _revlog(self): + return self._repo.manifestlog._revlog.dirlog(self._dir) + def read(self): if not self._data: + rl = self._revlog() if self._node == revlog.nullid: self._data = treemanifest() - elif self._revlog._treeondisk: + elif rl._treeondisk: m = treemanifest(dir=self._dir) def gettext(): - return self._revlog.revision(self._node) + return rl.revision(self._node) def readsubtree(dir, subm): - return treemanifestctx(self._revlog, dir, subm).read() + return treemanifestctx(self._repo, dir, subm).read() m.read(gettext, readsubtree) m.setnode(self._node) self._data = m else: - text = self._revlog.revision(self._node) + text = revlog.revision(self._node) arraytext = array.array('c', text) - self._revlog.fulltextcache[self._node] = arraytext + rl.fulltextcache[self._node] = arraytext self._data = treemanifest(dir=self._dir, text=text) return self._data @@ -1385,9 +1388,9 @@ def readdelta(self): # Need to perform a slow delta - revlog = self._revlog + revlog = self._revlog() r0 = revlog.deltaparent(revlog.rev(self._node)) - m0 = treemanifestctx(revlog, self._dir, revlog.node(r0)).read() + m0 = treemanifestctx(self._repo, self._dir, revlog.node(r0)).read() m1 = self.read() md = treemanifest(dir=self._dir) for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems(): @@ -1398,7 +1401,7 @@ return md def readfast(self): - rl = self._revlog + rl = self._revlog() r = rl.rev(self._node) deltaparent = rl.deltaparent(r) if deltaparent != revlog.nullrev and deltaparent in rl.parentrevs(r):