comparison mercurial/context.py @ 3144:8342ad5abe0b

Make filectx lazier - some users never use filenode
author Brendan Cully <brendan@kublai.com>
date Fri, 22 Sep 2006 08:19:25 -0700
parents db25f7b80fdb
children e69a0cbe268e
comparison
equal deleted inserted replaced
3143:db25f7b80fdb 3144:8342ad5abe0b
100 self._filelog = filelog 100 self._filelog = filelog
101 else: 101 else:
102 self._filelog = self._repo.file(self._path) 102 self._filelog = self._repo.file(self._path)
103 103
104 if fileid is None: 104 if fileid is None:
105 # if given a changeset id, go ahead and look up the file
106 self._changeid = changeid 105 self._changeid = changeid
107 self._changectx = self.changectx()
108 self._filenode = self._changectx.filenode(self._path)
109 else: 106 else:
110 # else delay changectx creation
111 self._filenode = self._filelog.lookup(fileid) 107 self._filenode = self._filelog.lookup(fileid)
112 self._changeid = self._filelog.linkrev(self._filenode) 108 self._changeid = self._filelog.linkrev(self._filenode)
113 self._filerev = self._filelog.rev(self._filenode)
114 109
115 def changectx(self): 110 def __getattr__(self, name):
116 try: 111 if name == '_changectx':
117 return self._changectx
118 except AttributeError:
119 self._changectx = changectx(self._repo, self._changeid) 112 self._changectx = changectx(self._repo, self._changeid)
120 return self._changectx 113 return self._changectx
114 elif name == '_filenode':
115 self._filenode = self._changectx.filenode(self._path)
116 return self._filenode
117 elif name == '_filerev':
118 self._filerev = self._filelog.rev(self._filenode)
119 return self._filerev
120 else:
121 raise AttributeError, name
121 122
122 def filerev(self): return self._filerev 123 def filerev(self): return self._filerev
123 def filenode(self): return self._filenode 124 def filenode(self): return self._filenode
124 def filelog(self): return self._filelog 125 def filelog(self): return self._filelog
125 126
126 def rev(self): return self.changectx().rev() 127 def rev(self): return self._changectx.rev()
127 def node(self): return self.changectx().node() 128 def node(self): return self._changectx.node()
128 def user(self): return self.changectx().user() 129 def user(self): return self._changectx.user()
129 def date(self): return self.changectx().date() 130 def date(self): return self._changectx.date()
130 def files(self): return self.changectx().files() 131 def files(self): return self._changectx.files()
131 def description(self): return self.changectx().description() 132 def description(self): return self._changectx.description()
132 def manifest(self): return self.changectx().manifest() 133 def manifest(self): return self._changectx.manifest()
133 134
134 def data(self): return self._filelog.read(self._filenode) 135 def data(self): return self._filelog.read(self._filenode)
135 def renamed(self): return self._filelog.renamed(self._filenode) 136 def renamed(self): return self._filelog.renamed(self._filenode)
136 def path(self): return self._path 137 def path(self): return self._path
137 138