##// END OF EJS Templates
manifest: add shallow option to treemanifestctx.readdelta and readfast...
Durham Goode -
r30293:78f3c716 default
parent child Browse files
Show More
@@ -1350,7 +1350,7 b' class manifestctx(object):'
1350 self._data = manifestdict(text)
1350 self._data = manifestdict(text)
1351 return self._data
1351 return self._data
1352
1352
1353 def readfast(self):
1353 def readfast(self, shallow=False):
1354 rl = self._repo.manifestlog._revlog
1354 rl = self._repo.manifestlog._revlog
1355 r = rl.rev(self._node)
1355 r = rl.rev(self._node)
1356 deltaparent = rl.deltaparent(r)
1356 deltaparent = rl.deltaparent(r)
@@ -1358,7 +1358,7 b' class manifestctx(object):'
1358 return self.readdelta()
1358 return self.readdelta()
1359 return self.read()
1359 return self.read()
1360
1360
1361 def readdelta(self):
1361 def readdelta(self, shallow=False):
1362 revlog = self._repo.manifestlog._revlog
1362 revlog = self._repo.manifestlog._revlog
1363 if revlog._usemanifestv2:
1363 if revlog._usemanifestv2:
1364 # Need to perform a slow delta
1364 # Need to perform a slow delta
@@ -1420,27 +1420,37 b' class treemanifestctx(object):'
1420 def node(self):
1420 def node(self):
1421 return self._node
1421 return self._node
1422
1422
1423 def readdelta(self):
1423 def readdelta(self, shallow=False):
1424 # Need to perform a slow delta
1425 revlog = self._revlog()
1424 revlog = self._revlog()
1426 r0 = revlog.deltaparent(revlog.rev(self._node))
1425 if shallow and not revlog._usemanifestv2:
1427 m0 = treemanifestctx(self._repo, self._dir, revlog.node(r0)).read()
1426 r = revlog.rev(self._node)
1428 m1 = self.read()
1427 d = mdiff.patchtext(revlog.revdiff(revlog.deltaparent(r), r))
1429 md = treemanifest(dir=self._dir)
1428 return manifestdict(d)
1430 for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
1429 else:
1431 if n1:
1430 # Need to perform a slow delta
1432 md[f] = n1
1431 r0 = revlog.deltaparent(revlog.rev(self._node))
1433 if fl1:
1432 m0 = treemanifestctx(self._repo, self._dir, revlog.node(r0)).read()
1434 md.setflag(f, fl1)
1433 m1 = self.read()
1435 return md
1434 md = treemanifest(dir=self._dir)
1435 for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
1436 if n1:
1437 md[f] = n1
1438 if fl1:
1439 md.setflag(f, fl1)
1440 return md
1436
1441
1437 def readfast(self):
1442 def readfast(self, shallow=False):
1438 rl = self._revlog()
1443 rl = self._revlog()
1439 r = rl.rev(self._node)
1444 r = rl.rev(self._node)
1440 deltaparent = rl.deltaparent(r)
1445 deltaparent = rl.deltaparent(r)
1441 if deltaparent != revlog.nullrev and deltaparent in rl.parentrevs(r):
1446 if (deltaparent != revlog.nullrev and
1442 return self.readdelta()
1447 deltaparent in rl.parentrevs(r)):
1443 return self.read()
1448 return self.readdelta(shallow=shallow)
1449
1450 if shallow:
1451 return manifestdict(rl.revision(self._node))
1452 else:
1453 return self.read()
1444
1454
1445 class manifest(manifestrevlog):
1455 class manifest(manifestrevlog):
1446 def __init__(self, opener, dir='', dirlogcache=None):
1456 def __init__(self, opener, dir='', dirlogcache=None):
General Comments 0
You need to be logged in to leave comments. Login now