233 return self._changectx.rev() |
233 return self._changectx.rev() |
234 if '_changeid' in self.__dict__: |
234 if '_changeid' in self.__dict__: |
235 return self._changectx.rev() |
235 return self._changectx.rev() |
236 return self._filelog.linkrev(self._filenode) |
236 return self._filelog.linkrev(self._filenode) |
237 |
237 |
|
238 def linkrev(self): return self._filelog.linkrev(self._filenode) |
238 def node(self): return self._changectx.node() |
239 def node(self): return self._changectx.node() |
239 def user(self): return self._changectx.user() |
240 def user(self): return self._changectx.user() |
240 def date(self): return self._changectx.date() |
241 def date(self): return self._changectx.date() |
241 def files(self): return self._changectx.files() |
242 def files(self): return self._changectx.files() |
242 def description(self): return self._changectx.description() |
243 def description(self): return self._changectx.description() |
243 def branch(self): return self._changectx.branch() |
244 def branch(self): return self._changectx.branch() |
244 def manifest(self): return self._changectx.manifest() |
245 def manifest(self): return self._changectx.manifest() |
245 def changectx(self): return self._changectx |
246 def changectx(self): return self._changectx |
246 |
247 |
247 def data(self): return self._filelog.read(self._filenode) |
248 def data(self): return self._filelog.read(self._filenode) |
248 def renamed(self): return self._filelog.renamed(self._filenode) |
|
249 def path(self): return self._path |
249 def path(self): return self._path |
250 def size(self): return self._filelog.size(self._filerev) |
250 def size(self): return self._filelog.size(self._filerev) |
251 |
251 |
252 def cmp(self, text): return self._filelog.cmp(self._filenode, text) |
252 def cmp(self, text): return self._filelog.cmp(self._filenode, text) |
|
253 |
|
254 def renamed(self): |
|
255 """check if file was actually renamed in this changeset revision |
|
256 |
|
257 If rename logged in file revision, we report copy for changeset only |
|
258 if file revisions linkrev points back to the changeset in question |
|
259 or both changeset parents contain different file revisions. |
|
260 """ |
|
261 |
|
262 renamed = self._filelog.renamed(self._filenode) |
|
263 if not renamed: |
|
264 return renamed |
|
265 |
|
266 if self.rev() == self.linkrev(): |
|
267 return renamed |
|
268 |
|
269 name = self.path() |
|
270 fnode = self._filenode |
|
271 for p in self._changectx.parents(): |
|
272 try: |
|
273 if fnode == p.filenode(name): |
|
274 return None |
|
275 except revlog.LookupError: |
|
276 pass |
|
277 return renamed |
253 |
278 |
254 def parents(self): |
279 def parents(self): |
255 p = self._path |
280 p = self._path |
256 fl = self._filelog |
281 fl = self._filelog |
257 pl = [(p, n, fl) for n in self._filelog.parents(self._filenode)] |
282 pl = [(p, n, fl) for n in self._filelog.parents(self._filenode)] |
320 pl[0] = (r[0], getlog(r[0]).rev(r[1])) |
345 pl[0] = (r[0], getlog(r[0]).rev(r[1])) |
321 |
346 |
322 return [getctx(p, n) for p, n in pl if n != nullrev] |
347 return [getctx(p, n) for p, n in pl if n != nullrev] |
323 |
348 |
324 # use linkrev to find the first changeset where self appeared |
349 # use linkrev to find the first changeset where self appeared |
325 if self.rev() != self._filelog.linkrev(self._filenode): |
350 if self.rev() != self.linkrev(): |
326 base = self.filectx(self.filerev()) |
351 base = self.filectx(self.filerev()) |
327 else: |
352 else: |
328 base = self |
353 base = self |
329 |
354 |
330 # find all ancestors |
355 # find all ancestors |