Show More
@@ -528,7 +528,7 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 class manifestlog(object): | |||
|
962 | 962 | self._mancache[node] = m |
|
963 | 963 | return m |
|
964 | 964 | |
|
965 |
class manifestctx( |
|
|
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 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 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) | |
|
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) | |
|
1008 | 1018 | def gettext(): |
|
1009 | return revlog.revision(node) | |
|
1019 | return self._revlog.revision(self._node) | |
|
1010 | 1020 | def readsubtree(dir, subm): |
|
1011 |
return |
|
|
1012 |
|
|
|
1013 |
|
|
|
1021 | return treemanifestctx(self._revlog, dir, subm).read() | |
|
1022 | m.read(gettext, readsubtree) | |
|
1023 | m.setnode(self._node) | |
|
1024 | self._data = m | |
|
1014 | 1025 | else: |
|
1015 | text = revlog.revision(node) | |
|
1026 | text = self._revlog.revision(self._node) | |
|
1016 | 1027 | arraytext = array.array('c', text) |
|
1017 | revlog.fulltextcache[node] = arraytext | |
|
1018 |
|
|
|
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 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 |
|
|
|
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