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) |