##// END OF EJS Templates
manifest: change manifestctx to not inherit from manifestdict...
Durham Goode -
r29926:be16091a default
parent child Browse files
Show More
@@ -528,7 +528,7 b' class changectx(basectx):'
528 528
529 529 @propertycache
530 530 def _manifest(self):
531 return self._repo.manifestlog[self._changeset.manifest]
531 return self._repo.manifestlog[self._changeset.manifest].read()
532 532
533 533 @propertycache
534 534 def _manifestdelta(self):
@@ -962,12 +962,13 b' class manifestlog(object):'
962 962 self._mancache[node] = m
963 963 return m
964 964
965 class manifestctx(manifestdict):
965 class manifestctx(object):
966 966 """A class representing a single revision of a manifest, including its
967 967 contents, its parent revs, and its linkrev.
968 968 """
969 969 def __init__(self, revlog, node):
970 970 self._revlog = revlog
971 self._data = None
971 972
972 973 self._node = node
973 974
@@ -978,21 +979,26 b' class manifestctx(manifestdict):'
978 979 #rev = revlog.rev(node)
979 980 #self.linkrev = revlog.linkrev(rev)
980 981
981 # This should eventually be made lazy loaded, so consumers can access
982 # the node/p1/linkrev data without having to parse the whole manifest.
983 data = revlog.revision(node)
984 arraytext = array.array('c', data)
985 revlog._fulltextcache[node] = arraytext
986 super(manifestctx, self).__init__(data)
987
988 982 def node(self):
989 983 return self._node
990 984
991 class treemanifestctx(treemanifest):
985 def read(self):
986 if not self._data:
987 if self._node == revlog.nullid:
988 self._data = manifestdict()
989 else:
990 text = self._revlog.revision(self._node)
991 arraytext = array.array('c', text)
992 self._revlog._fulltextcache[self._node] = arraytext
993 self._data = manifestdict(text)
994 return self._data
995
996 class treemanifestctx(object):
992 997 def __init__(self, revlog, dir, node):
993 998 revlog = revlog.dirlog(dir)
994 999 self._revlog = revlog
995 1000 self._dir = dir
1001 self._data = None
996 1002
997 1003 self._node = node
998 1004
@@ -1003,19 +1009,26 b' class treemanifestctx(treemanifest):'
1003 1009 #rev = revlog.rev(node)
1004 1010 #self.linkrev = revlog.linkrev(rev)
1005 1011
1006 if revlog._treeondisk:
1007 super(treemanifestctx, self).__init__(dir=dir)
1008 def gettext():
1009 return revlog.revision(node)
1010 def readsubtree(dir, subm):
1011 return revlog.dirlog(dir).read(subm)
1012 self.read(gettext, readsubtree)
1013 self.setnode(node)
1014 else:
1015 text = revlog.revision(node)
1016 arraytext = array.array('c', text)
1017 revlog.fulltextcache[node] = arraytext
1018 super(treemanifestctx, self).__init__(dir=dir, text=text)
1012 def read(self):
1013 if not self._data:
1014 if self._node == revlog.nullid:
1015 self._data = treemanifest()
1016 elif self._revlog._treeondisk:
1017 m = treemanifest(dir=self._dir)
1018 def gettext():
1019 return self._revlog.revision(self._node)
1020 def readsubtree(dir, subm):
1021 return treemanifestctx(self._revlog, dir, subm).read()
1022 m.read(gettext, readsubtree)
1023 m.setnode(self._node)
1024 self._data = m
1025 else:
1026 text = self._revlog.revision(self._node)
1027 arraytext = array.array('c', text)
1028 self._revlog.fulltextcache[self._node] = arraytext
1029 self._data = treemanifest(dir=self._dir, text=text)
1030
1031 return self._data
1019 1032
1020 1033 def node(self):
1021 1034 return self._node
@@ -1130,7 +1143,11 b' class manifest(manifestrevlog):'
1130 1143 if node == revlog.nullid:
1131 1144 return self._newmanifest() # don't upset local cache
1132 1145 if node in self._mancache:
1133 return self._mancache[node]
1146 cached = self._mancache[node]
1147 if (isinstance(cached, manifestctx) or
1148 isinstance(cached, treemanifestctx)):
1149 cached = cached.read()
1150 return cached
1134 1151 if self._treeondisk:
1135 1152 def gettext():
1136 1153 return self.revision(node)
General Comments 0
You need to be logged in to leave comments. Login now