##// END OF EJS Templates
manifest: make treemanifestctx store the repo...
Durham Goode -
r30221:f2c5b9d4 stable
parent child Browse files
Show More
@@ -1274,7 +1274,7 b' class manifestlog(object):'
1274 return cachemf
1274 return cachemf
1275
1275
1276 if self._treeinmem:
1276 if self._treeinmem:
1277 m = treemanifestctx(self._revlog, '', node)
1277 m = treemanifestctx(self._repo, '', node)
1278 else:
1278 else:
1279 m = manifestctx(self._repo, node)
1279 m = manifestctx(self._repo, node)
1280 if node != revlog.nullid:
1280 if node != revlog.nullid:
@@ -1344,9 +1344,8 b' class manifestctx(object):'
1344 return manifestdict(d)
1344 return manifestdict(d)
1345
1345
1346 class treemanifestctx(object):
1346 class treemanifestctx(object):
1347 def __init__(self, revlog, dir, node):
1347 def __init__(self, repo, dir, node):
1348 revlog = revlog.dirlog(dir)
1348 self._repo = repo
1349 self._revlog = revlog
1350 self._dir = dir
1349 self._dir = dir
1351 self._data = None
1350 self._data = None
1352
1351
@@ -1359,23 +1358,27 b' class treemanifestctx(object):'
1359 #rev = revlog.rev(node)
1358 #rev = revlog.rev(node)
1360 #self.linkrev = revlog.linkrev(rev)
1359 #self.linkrev = revlog.linkrev(rev)
1361
1360
1361 def _revlog(self):
1362 return self._repo.manifestlog._revlog.dirlog(self._dir)
1363
1362 def read(self):
1364 def read(self):
1363 if not self._data:
1365 if not self._data:
1366 rl = self._revlog()
1364 if self._node == revlog.nullid:
1367 if self._node == revlog.nullid:
1365 self._data = treemanifest()
1368 self._data = treemanifest()
1366 elif self._revlog._treeondisk:
1369 elif rl._treeondisk:
1367 m = treemanifest(dir=self._dir)
1370 m = treemanifest(dir=self._dir)
1368 def gettext():
1371 def gettext():
1369 return self._revlog.revision(self._node)
1372 return rl.revision(self._node)
1370 def readsubtree(dir, subm):
1373 def readsubtree(dir, subm):
1371 return treemanifestctx(self._revlog, dir, subm).read()
1374 return treemanifestctx(self._repo, dir, subm).read()
1372 m.read(gettext, readsubtree)
1375 m.read(gettext, readsubtree)
1373 m.setnode(self._node)
1376 m.setnode(self._node)
1374 self._data = m
1377 self._data = m
1375 else:
1378 else:
1376 text = self._revlog.revision(self._node)
1379 text = revlog.revision(self._node)
1377 arraytext = array.array('c', text)
1380 arraytext = array.array('c', text)
1378 self._revlog.fulltextcache[self._node] = arraytext
1381 rl.fulltextcache[self._node] = arraytext
1379 self._data = treemanifest(dir=self._dir, text=text)
1382 self._data = treemanifest(dir=self._dir, text=text)
1380
1383
1381 return self._data
1384 return self._data
@@ -1385,9 +1388,9 b' class treemanifestctx(object):'
1385
1388
1386 def readdelta(self):
1389 def readdelta(self):
1387 # Need to perform a slow delta
1390 # Need to perform a slow delta
1388 revlog = self._revlog
1391 revlog = self._revlog()
1389 r0 = revlog.deltaparent(revlog.rev(self._node))
1392 r0 = revlog.deltaparent(revlog.rev(self._node))
1390 m0 = treemanifestctx(revlog, self._dir, revlog.node(r0)).read()
1393 m0 = treemanifestctx(self._repo, self._dir, revlog.node(r0)).read()
1391 m1 = self.read()
1394 m1 = self.read()
1392 md = treemanifest(dir=self._dir)
1395 md = treemanifest(dir=self._dir)
1393 for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
1396 for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
@@ -1398,7 +1401,7 b' class treemanifestctx(object):'
1398 return md
1401 return md
1399
1402
1400 def readfast(self):
1403 def readfast(self):
1401 rl = self._revlog
1404 rl = self._revlog()
1402 r = rl.rev(self._node)
1405 r = rl.rev(self._node)
1403 deltaparent = rl.deltaparent(r)
1406 deltaparent = rl.deltaparent(r)
1404 if deltaparent != revlog.nullrev and deltaparent in rl.parentrevs(r):
1407 if deltaparent != revlog.nullrev and deltaparent in rl.parentrevs(r):
General Comments 0
You need to be logged in to leave comments. Login now