mercurial/localrepo.py
branchstable
changeset 48039 c094e829e848
parent 47822 2813d406b036
child 48040 7970895a21cb
equal deleted inserted replaced
48038:52018f8ef020 48039:c094e829e848
   142 
   142 
   143     def join(self, obj, fname):
   143     def join(self, obj, fname):
   144         return obj.sjoin(fname)
   144         return obj.sjoin(fname)
   145 
   145 
   146 
   146 
       
   147 class changelogcache(storecache):
       
   148     """filecache for the changelog"""
       
   149 
       
   150     def __init__(self):
       
   151         super(changelogcache, self).__init__()
       
   152         _cachedfiles.add((b'00changelog.i', b''))
       
   153         _cachedfiles.add((b'00changelog.n', b''))
       
   154 
       
   155     def tracked_paths(self, obj):
       
   156         paths = [self.join(obj, b'00changelog.i')]
       
   157         if obj.store.opener.options.get(b'persistent-nodemap', False):
       
   158             paths.append(self.join(obj, b'00changelog.n'))
       
   159         return paths
       
   160 
       
   161 
   147 class mixedrepostorecache(_basefilecache):
   162 class mixedrepostorecache(_basefilecache):
   148     """filecache for a mix files in .hg/store and outside"""
   163     """filecache for a mix files in .hg/store and outside"""
   149 
   164 
   150     def __init__(self, *pathsandlocations):
   165     def __init__(self, *pathsandlocations):
   151         # scmutil.filecache only uses the path for passing back into our
   166         # scmutil.filecache only uses the path for passing back into our
  1671 
  1686 
  1672     @storecache(b'obsstore')
  1687     @storecache(b'obsstore')
  1673     def obsstore(self):
  1688     def obsstore(self):
  1674         return obsolete.makestore(self.ui, self)
  1689         return obsolete.makestore(self.ui, self)
  1675 
  1690 
  1676     @storecache(b'00changelog.i')
  1691     @changelogcache()
  1677     def changelog(self):
  1692     def changelog(repo):
  1678         # load dirstate before changelog to avoid race see issue6303
  1693         # load dirstate before changelog to avoid race see issue6303
  1679         self.dirstate.prefetch_parents()
  1694         repo.dirstate.prefetch_parents()
  1680         return self.store.changelog(
  1695         return repo.store.changelog(
  1681             txnutil.mayhavepending(self.root),
  1696             txnutil.mayhavepending(repo.root),
  1682             concurrencychecker=revlogchecker.get_checker(self.ui, b'changelog'),
  1697             concurrencychecker=revlogchecker.get_checker(repo.ui, b'changelog'),
  1683         )
  1698         )
  1684 
  1699 
  1685     @storecache(b'00manifest.i')
  1700     @storecache(b'00manifest.i')
  1686     def manifestlog(self):
  1701     def manifestlog(self):
  1687         return self.store.manifestlog(self, self._storenarrowmatch)
  1702         return self.store.manifestlog(self, self._storenarrowmatch)