Skip to content
Snippets Groups Projects
Commit acc8885a authored by Durham Goode's avatar Durham Goode
Browse files

manifest: make manifestctx store the repo

The old manifestctx stored a reference to the revlog. If the inmemory revlog
became invalid, the ctx now held an old copy and would be incorrect. To fix
this, we need the ctx to go through the manifestlog for each access.

This is the same pattern that changectx already uses (it stores the repo, and
accesses commit data through self._repo.changelog).
parent 3c8811ef
No related branches found
No related tags found
No related merge requests found
......@@ -1276,7 +1276,7 @@
if self._treeinmem:
m = treemanifestctx(self._revlog, '', node)
else:
m = manifestctx(self._revlog, node)
m = manifestctx(self._repo, node)
if node != revlog.nullid:
self._mancache[node] = m
return m
......@@ -1288,8 +1288,8 @@
"""A class representing a single revision of a manifest, including its
contents, its parent revs, and its linkrev.
"""
def __init__(self, revlog, node):
self._revlog = revlog
def __init__(self, repo, node):
self._repo = repo
self._data = None
self._node = node
......@@ -1309,5 +1309,6 @@
if self._node == revlog.nullid:
self._data = manifestdict()
else:
text = self._revlog.revision(self._node)
rl = self._repo.manifestlog._revlog
text = rl.revision(self._node)
arraytext = array.array('c', text)
......@@ -1313,6 +1314,6 @@
arraytext = array.array('c', text)
self._revlog._fulltextcache[self._node] = arraytext
rl._fulltextcache[self._node] = arraytext
self._data = manifestdict(text)
return self._data
def readfast(self):
......@@ -1315,8 +1316,8 @@
self._data = manifestdict(text)
return self._data
def readfast(self):
rl = self._revlog
rl = self._repo.manifestlog._revlog
r = rl.rev(self._node)
deltaparent = rl.deltaparent(r)
if deltaparent != revlog.nullrev and deltaparent in rl.parentrevs(r):
......@@ -1324,7 +1325,7 @@
return self.read()
def readdelta(self):
revlog = self._revlog
revlog = self._repo.manifestlog._revlog
if revlog._usemanifestv2:
# Need to perform a slow delta
r0 = revlog.deltaparent(revlog.rev(self._node))
......@@ -1328,7 +1329,7 @@
if revlog._usemanifestv2:
# Need to perform a slow delta
r0 = revlog.deltaparent(revlog.rev(self._node))
m0 = manifestctx(revlog, revlog.node(r0)).read()
m0 = manifestctx(self._repo, revlog.node(r0)).read()
m1 = self.read()
md = manifestdict()
for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment