##// END OF EJS Templates
manifest: remove dependency on manifestrevlog being able to create trees...
Durham Goode -
r30368:ed45283a default
parent child Browse files
Show More
@@ -1183,7 +1183,7 b' class manifestrevlog(revlog.revlog):'
1183 self._dirlogcache)
1183 self._dirlogcache)
1184 return self._dirlogcache[dir]
1184 return self._dirlogcache[dir]
1185
1185
1186 def add(self, m, transaction, link, p1, p2, added, removed):
1186 def add(self, m, transaction, link, p1, p2, added, removed, readtree=None):
1187 if (p1 in self.fulltextcache and util.safehasattr(m, 'fastdelta')
1187 if (p1 in self.fulltextcache and util.safehasattr(m, 'fastdelta')
1188 and not self._usemanifestv2):
1188 and not self._usemanifestv2):
1189 # If our first parent is in the manifest cache, we can
1189 # If our first parent is in the manifest cache, we can
@@ -1206,9 +1206,10 b' class manifestrevlog(revlog.revlog):'
1206 # through to the revlog layer, and let it handle the delta
1206 # through to the revlog layer, and let it handle the delta
1207 # process.
1207 # process.
1208 if self._treeondisk:
1208 if self._treeondisk:
1209 m1 = self.read(p1)
1209 assert readtree, "readtree must be set for treemanifest writes"
1210 m2 = self.read(p2)
1210 m1 = readtree(self._dir, p1)
1211 n = self._addtree(m, transaction, link, m1, m2)
1211 m2 = readtree(self._dir, p2)
1212 n = self._addtree(m, transaction, link, m1, m2, readtree)
1212 arraytext = None
1213 arraytext = None
1213 else:
1214 else:
1214 text = m.text(self._usemanifestv2)
1215 text = m.text(self._usemanifestv2)
@@ -1220,14 +1221,15 b' class manifestrevlog(revlog.revlog):'
1220
1221
1221 return n
1222 return n
1222
1223
1223 def _addtree(self, m, transaction, link, m1, m2):
1224 def _addtree(self, m, transaction, link, m1, m2, readtree):
1224 # If the manifest is unchanged compared to one parent,
1225 # If the manifest is unchanged compared to one parent,
1225 # don't write a new revision
1226 # don't write a new revision
1226 if m.unmodifiedsince(m1) or m.unmodifiedsince(m2):
1227 if m.unmodifiedsince(m1) or m.unmodifiedsince(m2):
1227 return m.node()
1228 return m.node()
1228 def writesubtree(subm, subp1, subp2):
1229 def writesubtree(subm, subp1, subp2):
1229 sublog = self.dirlog(subm.dir())
1230 sublog = self.dirlog(subm.dir())
1230 sublog.add(subm, transaction, link, subp1, subp2, None, None)
1231 sublog.add(subm, transaction, link, subp1, subp2, None, None,
1232 readtree=readtree)
1231 m.writesubtrees(m1, m2, writesubtree)
1233 m.writesubtrees(m1, m2, writesubtree)
1232 text = m.dirtext(self._usemanifestv2)
1234 text = m.dirtext(self._usemanifestv2)
1233 # Double-check whether contents are unchanged to one parent
1235 # Double-check whether contents are unchanged to one parent
@@ -1449,8 +1451,10 b' class memtreemanifestctx(object):'
1449 return self._treemanifest
1451 return self._treemanifest
1450
1452
1451 def write(self, transaction, link, p1, p2, added, removed):
1453 def write(self, transaction, link, p1, p2, added, removed):
1454 def readtree(dir, node):
1455 return self._repo.manifestlog.get(dir, node).read()
1452 return self._revlog().add(self._treemanifest, transaction, link, p1, p2,
1456 return self._revlog().add(self._treemanifest, transaction, link, p1, p2,
1453 added, removed)
1457 added, removed, readtree=readtree)
1454
1458
1455 class treemanifestctx(object):
1459 class treemanifestctx(object):
1456 def __init__(self, repo, dir, node):
1460 def __init__(self, repo, dir, node):
General Comments 0
You need to be logged in to leave comments. Login now