mercurial/manifest.py
changeset 39321 52860f52ed13
parent 39320 57301ba47e66
child 39322 5886384d1ac5
equal deleted inserted replaced
39320:57301ba47e66 39321:52860f52ed13
  1505             usetreemanifest = opts.get('treemanifest', usetreemanifest)
  1505             usetreemanifest = opts.get('treemanifest', usetreemanifest)
  1506             cachesize = opts.get('manifestcachesize', cachesize)
  1506             cachesize = opts.get('manifestcachesize', cachesize)
  1507 
  1507 
  1508         self._treemanifests = usetreemanifest
  1508         self._treemanifests = usetreemanifest
  1509 
  1509 
  1510         self._revlog = repo._constructmanifest()
  1510         self._rootstore = repo._constructmanifest()
  1511         self._revlog._setupmanifestcachehooks(repo)
  1511         self._rootstore._setupmanifestcachehooks(repo)
  1512         self._narrowmatch = repo.narrowmatch()
  1512         self._narrowmatch = repo.narrowmatch()
  1513 
  1513 
  1514         # A cache of the manifestctx or treemanifestctx for each directory
  1514         # A cache of the manifestctx or treemanifestctx for each directory
  1515         self._dirmancache = {}
  1515         self._dirmancache = {}
  1516         self._dirmancache[''] = util.lrucachedict(cachesize)
  1516         self._dirmancache[''] = util.lrucachedict(cachesize)
  1535 
  1535 
  1536         if not self._narrowmatch.always():
  1536         if not self._narrowmatch.always():
  1537             if not self._narrowmatch.visitdir(tree[:-1] or '.'):
  1537             if not self._narrowmatch.visitdir(tree[:-1] or '.'):
  1538                 return excludeddirmanifestctx(tree, node)
  1538                 return excludeddirmanifestctx(tree, node)
  1539         if tree:
  1539         if tree:
  1540             if self._revlog._treeondisk:
  1540             if self._rootstore._treeondisk:
  1541                 if verify:
  1541                 if verify:
  1542                     # Side-effect is LookupError is raised if node doesn't
  1542                     # Side-effect is LookupError is raised if node doesn't
  1543                     # exist.
  1543                     # exist.
  1544                     self.getstorage(tree).rev(node)
  1544                     self.getstorage(tree).rev(node)
  1545 
  1545 
  1549                         _("cannot ask for manifest directory '%s' in a flat "
  1549                         _("cannot ask for manifest directory '%s' in a flat "
  1550                           "manifest") % tree)
  1550                           "manifest") % tree)
  1551         else:
  1551         else:
  1552             if verify:
  1552             if verify:
  1553                 # Side-effect is LookupError is raised if node doesn't exist.
  1553                 # Side-effect is LookupError is raised if node doesn't exist.
  1554                 self._revlog.rev(node)
  1554                 self._rootstore.rev(node)
  1555 
  1555 
  1556             if self._treemanifests:
  1556             if self._treemanifests:
  1557                 m = treemanifestctx(self, '', node)
  1557                 m = treemanifestctx(self, '', node)
  1558             else:
  1558             else:
  1559                 m = manifestctx(self, node)
  1559                 m = manifestctx(self, node)
  1565                 self._dirmancache[tree] = mancache
  1565                 self._dirmancache[tree] = mancache
  1566             mancache[node] = m
  1566             mancache[node] = m
  1567         return m
  1567         return m
  1568 
  1568 
  1569     def getstorage(self, tree):
  1569     def getstorage(self, tree):
  1570         return self._revlog.dirlog(tree)
  1570         return self._rootstore.dirlog(tree)
  1571 
  1571 
  1572     def clearcaches(self, clear_persisted_data=False):
  1572     def clearcaches(self, clear_persisted_data=False):
  1573         self._dirmancache.clear()
  1573         self._dirmancache.clear()
  1574         self._revlog.clearcaches(clear_persisted_data=clear_persisted_data)
  1574         self._rootstore.clearcaches(clear_persisted_data=clear_persisted_data)
  1575 
  1575 
  1576     def rev(self, node):
  1576     def rev(self, node):
  1577         return self._revlog.rev(node)
  1577         return self._rootstore.rev(node)
  1578 
  1578 
  1579 @interfaceutil.implementer(repository.imanifestrevisionwritable)
  1579 @interfaceutil.implementer(repository.imanifestrevisionwritable)
  1580 class memmanifestctx(object):
  1580 class memmanifestctx(object):
  1581     def __init__(self, manifestlog):
  1581     def __init__(self, manifestlog):
  1582         self._manifestlog = manifestlog
  1582         self._manifestlog = manifestlog