mercurial/localrepo.py
changeset 8260 54a4b520bd7d
parent 8244 99d7e2db8da8
child 8262 3d7b1d97230d
equal deleted inserted replaced
8259:98acfd1d2b08 8260:54a4b520bd7d
    13 import os, time, util, extensions, hook, inspect, error
    13 import os, time, util, extensions, hook, inspect, error
    14 import match as match_
    14 import match as match_
    15 import merge as merge_
    15 import merge as merge_
    16 
    16 
    17 from lock import release
    17 from lock import release
       
    18 propertycache = util.propertycache
    18 
    19 
    19 class localrepository(repo.repository):
    20 class localrepository(repo.repository):
    20     capabilities = set(('lookup', 'changegroupsubset'))
    21     capabilities = set(('lookup', 'changegroupsubset'))
    21     supported = ('revlogv1', 'store', 'fncache')
    22     supported = ('revlogv1', 'store', 'fncache')
    22 
    23 
    86         self.nodetagscache = None
    87         self.nodetagscache = None
    87         self.filterpats = {}
    88         self.filterpats = {}
    88         self._datafilters = {}
    89         self._datafilters = {}
    89         self._transref = self._lockref = self._wlockref = None
    90         self._transref = self._lockref = self._wlockref = None
    90 
    91 
    91     def __getattr__(self, name):
    92     @propertycache
    92         if name == 'changelog':
    93     def changelog(self):
    93             self.changelog = changelog.changelog(self.sopener)
    94         c = changelog.changelog(self.sopener)
    94             if 'HG_PENDING' in os.environ:
    95         if 'HG_PENDING' in os.environ:
    95                 p = os.environ['HG_PENDING']
    96             p = os.environ['HG_PENDING']
    96                 if p.startswith(self.root):
    97             if p.startswith(self.root):
    97                     self.changelog.readpending('00changelog.i.a')
    98                 c.readpending('00changelog.i.a')
    98             self.sopener.defversion = self.changelog.version
    99         self.sopener.defversion = c.version
    99             return self.changelog
   100         return c
   100         if name == 'manifest':
   101 
   101             self.changelog
   102     @propertycache
   102             self.manifest = manifest.manifest(self.sopener)
   103     def manifest(self):
   103             return self.manifest
   104         return manifest.manifest(self.sopener)
   104         if name == 'dirstate':
   105 
   105             self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root)
   106     @propertycache
   106             return self.dirstate
   107     def dirstate(self):
   107         else:
   108         return dirstate.dirstate(self.opener, self.ui, self.root)
   108             raise AttributeError(name)
       
   109 
   109 
   110     def __getitem__(self, changeid):
   110     def __getitem__(self, changeid):
   111         if changeid == None:
   111         if changeid == None:
   112             return context.workingctx(self)
   112             return context.workingctx(self)
   113         return context.changectx(self, changeid)
   113         return context.changectx(self, changeid)