Mercurial > public > mercurial-scm > hg-stable
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) |