Mercurial > public > mercurial-scm > hg
comparison mercurial/context.py @ 5810:124577de40a7
context: preserve changeset in filectx if we have one
If we know original changeset we are working with - try hard to
preserve it. Fallback to filelog.linkrev() only if we have no way
to get original changeset, since linkrev() may point to other
changeset.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 29 Dec 2007 16:57:43 +0300 |
parents | 0145f9afb0e7 |
children | 180a3eee4b75 |
comparison
equal
deleted
inserted
replaced
5809:34c4131abdf9 | 5810:124577de40a7 |
---|---|
157 or changectx is not None) | 157 or changectx is not None) |
158 | 158 |
159 if filelog: | 159 if filelog: |
160 self._filelog = filelog | 160 self._filelog = filelog |
161 | 161 |
162 if fileid is None: | 162 if changeid is not None: |
163 if changectx is None: | 163 self._changeid = changeid |
164 self._changeid = changeid | 164 if changectx is not None: |
165 else: | 165 self._changectx = changectx |
166 self._changectx = changectx | 166 if fileid is not None: |
167 else: | |
168 self._fileid = fileid | 167 self._fileid = fileid |
169 | 168 |
170 def __getattr__(self, name): | 169 def __getattr__(self, name): |
171 if name == '_changectx': | 170 if name == '_changectx': |
172 self._changectx = changectx(self._repo, self._changeid) | 171 self._changectx = changectx(self._repo, self._changeid) |
173 return self._changectx | 172 return self._changectx |
174 elif name == '_filelog': | 173 elif name == '_filelog': |
175 self._filelog = self._repo.file(self._path) | 174 self._filelog = self._repo.file(self._path) |
176 return self._filelog | 175 return self._filelog |
177 elif name == '_changeid': | 176 elif name == '_changeid': |
178 self._changeid = self._filelog.linkrev(self._filenode) | 177 if '_changectx' in self.__dict__: |
178 self._changeid = self._changectx.rev() | |
179 else: | |
180 self._changeid = self._filelog.linkrev(self._filenode) | |
179 return self._changeid | 181 return self._changeid |
180 elif name == '_filenode': | 182 elif name == '_filenode': |
181 if '_fileid' in self.__dict__: | 183 if '_fileid' in self.__dict__: |
182 self._filenode = self._filelog.lookup(self._fileid) | 184 self._filenode = self._filelog.lookup(self._fileid) |
183 else: | 185 else: |
227 def filelog(self): return self._filelog | 229 def filelog(self): return self._filelog |
228 | 230 |
229 def rev(self): | 231 def rev(self): |
230 if '_changectx' in self.__dict__: | 232 if '_changectx' in self.__dict__: |
231 return self._changectx.rev() | 233 return self._changectx.rev() |
234 if '_changeid' in self.__dict__: | |
235 return self._changectx.rev() | |
232 return self._filelog.linkrev(self._filenode) | 236 return self._filelog.linkrev(self._filenode) |
233 | 237 |
234 def node(self): return self._changectx.node() | 238 def node(self): return self._changectx.node() |
235 def user(self): return self._changectx.user() | 239 def user(self): return self._changectx.user() |
236 def date(self): return self._changectx.date() | 240 def date(self): return self._changectx.date() |