comparison mercurial/localrepo.py @ 8260:54a4b520bd7d

localrepo: use propertycache
author Matt Mackall <mpm@selenic.com>
date Wed, 29 Apr 2009 20:47:15 -0500
parents 99d7e2db8da8
children 3d7b1d97230d
comparison
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)