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 |
m |
|
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