1592 if dir not in self._dirlogcache: |
1592 if dir not in self._dirlogcache: |
1593 self._dirlogcache[dir] = manifest(self.opener, dir, |
1593 self._dirlogcache[dir] = manifest(self.opener, dir, |
1594 self._dirlogcache) |
1594 self._dirlogcache) |
1595 return self._dirlogcache[dir] |
1595 return self._dirlogcache[dir] |
1596 |
1596 |
1597 def read(self, node): |
|
1598 if node == revlog.nullid: |
|
1599 return self._newmanifest() # don't upset local cache |
|
1600 if node in self._mancache: |
|
1601 cached = self._mancache[node] |
|
1602 if (isinstance(cached, manifestctx) or |
|
1603 isinstance(cached, treemanifestctx)): |
|
1604 cached = cached.read() |
|
1605 return cached |
|
1606 if self._treeondisk: |
|
1607 def gettext(): |
|
1608 return self.revision(node) |
|
1609 def readsubtree(dir, subm): |
|
1610 return self.dirlog(dir).read(subm) |
|
1611 m = self._newmanifest() |
|
1612 m.read(gettext, readsubtree) |
|
1613 m.setnode(node) |
|
1614 arraytext = None |
|
1615 else: |
|
1616 text = self.revision(node) |
|
1617 m = self._newmanifest(text) |
|
1618 arraytext = array.array('c', text) |
|
1619 self._mancache[node] = m |
|
1620 if arraytext is not None: |
|
1621 self.fulltextcache[node] = arraytext |
|
1622 return m |
|
1623 |
|
1624 def clearcaches(self): |
1597 def clearcaches(self): |
1625 super(manifest, self).clearcaches() |
1598 super(manifest, self).clearcaches() |
1626 self._mancache.clear() |
1599 self._mancache.clear() |