Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/manifest.py @ 29919:548fa75cdb07
manifest: backed out changeset b60a5fe98b73
There is some suspicious failure in evolution tests. This changeset was supposed
to be dropped until we investigate.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Sat, 10 Sep 2016 01:41:38 +0200 |
parents | b60a5fe98b73 |
children | 8a658b8b795a |
comparison
equal
deleted
inserted
replaced
29918:770128405002 | 29919:548fa75cdb07 |
---|---|
960 m = manifestctx(self._revlog, node) | 960 m = manifestctx(self._revlog, node) |
961 if node != revlog.nullid: | 961 if node != revlog.nullid: |
962 self._mancache[node] = m | 962 self._mancache[node] = m |
963 return m | 963 return m |
964 | 964 |
965 class manifestctx(object): | 965 class manifestctx(manifestdict): |
966 """A class representing a single revision of a manifest, including its | 966 """A class representing a single revision of a manifest, including its |
967 contents, its parent revs, and its linkrev. | 967 contents, its parent revs, and its linkrev. |
968 """ | 968 """ |
969 def __init__(self, revlog, node): | 969 def __init__(self, revlog, node): |
970 self._revlog = revlog | 970 self._revlog = revlog |
971 self._data = None | |
972 | 971 |
973 self._node = node | 972 self._node = node |
974 | 973 |
975 # TODO: We eventually want p1, p2, and linkrev exposed on this class, | 974 # TODO: We eventually want p1, p2, and linkrev exposed on this class, |
976 # but let's add it later when something needs it and we can load it | 975 # but let's add it later when something needs it and we can load it |
977 # lazily. | 976 # lazily. |
978 #self.p1, self.p2 = revlog.parents(node) | 977 #self.p1, self.p2 = revlog.parents(node) |
979 #rev = revlog.rev(node) | 978 #rev = revlog.rev(node) |
980 #self.linkrev = revlog.linkrev(rev) | 979 #self.linkrev = revlog.linkrev(rev) |
981 | 980 |
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 | |
982 def node(self): | 988 def node(self): |
983 return self._node | 989 return self._node |
984 | 990 |
985 def read(self): | 991 class treemanifestctx(treemanifest): |
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): | |
997 def __init__(self, revlog, dir, node): | 992 def __init__(self, revlog, dir, node): |
998 revlog = revlog.dirlog(dir) | 993 revlog = revlog.dirlog(dir) |
999 self._revlog = revlog | 994 self._revlog = revlog |
1000 self._dir = dir | 995 self._dir = dir |
1001 self._data = None | |
1002 | 996 |
1003 self._node = node | 997 self._node = node |
1004 | 998 |
1005 # TODO: Load p1/p2/linkrev lazily. They need to be lazily loaded so that | 999 # TODO: Load p1/p2/linkrev lazily. They need to be lazily loaded so that |
1006 # we can instantiate treemanifestctx objects for directories we don't | 1000 # we can instantiate treemanifestctx objects for directories we don't |
1007 # have on disk. | 1001 # have on disk. |
1008 #self.p1, self.p2 = revlog.parents(node) | 1002 #self.p1, self.p2 = revlog.parents(node) |
1009 #rev = revlog.rev(node) | 1003 #rev = revlog.rev(node) |
1010 #self.linkrev = revlog.linkrev(rev) | 1004 #self.linkrev = revlog.linkrev(rev) |
1011 | 1005 |
1012 def read(self): | 1006 if revlog._treeondisk: |
1013 if not self._data: | 1007 super(treemanifestctx, self).__init__(dir=dir) |
1014 if self._node == revlog.nullid: | 1008 def gettext(): |
1015 self._data = treemanifest() | 1009 return revlog.revision(node) |
1016 elif self._revlog._treeondisk: | 1010 def readsubtree(dir, subm): |
1017 m = treemanifest(dir=self._dir) | 1011 return revlog.dirlog(dir).read(subm) |
1018 def gettext(): | 1012 self.read(gettext, readsubtree) |
1019 return self._revlog.revision(self._node) | 1013 self.setnode(node) |
1020 def readsubtree(dir, subm): | 1014 else: |
1021 return treemanifestctx(self._revlog, dir, subm).read() | 1015 text = revlog.revision(node) |
1022 m.read(gettext, readsubtree) | 1016 arraytext = array.array('c', text) |
1023 m.setnode(self._node) | 1017 revlog.fulltextcache[node] = arraytext |
1024 self._data = m | 1018 super(treemanifestctx, self).__init__(dir=dir, text=text) |
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 | |
1032 | 1019 |
1033 def node(self): | 1020 def node(self): |
1034 return self._node | 1021 return self._node |
1035 | 1022 |
1036 class manifest(manifestrevlog): | 1023 class manifest(manifestrevlog): |