comparison mercurial/context.py @ 3130:da85145d4571

filectx: add rename traversal for parents()
author Matt Mackall <mpm@selenic.com>
date Sun, 17 Sep 2006 22:20:44 -0500
parents 345bac2bc4ec
children 4ea58eb3f0c9
comparison
equal deleted inserted replaced
3122:2ef0b3aae186 3130:da85145d4571
2 # 2 #
3 # Copyright 2006 Matt Mackall <mpm@selenic.com> 3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
4 # 4 #
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7
8 from node import *
7 9
8 class changectx(object): 10 class changectx(object):
9 """A changecontext object makes access to data related to a particular 11 """A changecontext object makes access to data related to a particular
10 changeset convenient.""" 12 changeset convenient."""
11 def __init__(self, repo, changeid): 13 def __init__(self, repo, changeid):
31 33
32 def rev(self): return self._rev 34 def rev(self): return self._rev
33 def node(self): return self._node 35 def node(self): return self._node
34 def user(self): return self.changeset()[1] 36 def user(self): return self.changeset()[1]
35 def date(self): return self.changeset()[2] 37 def date(self): return self.changeset()[2]
36 def changedfiles(self): return self.changeset()[3] 38 def files(self): return self.changeset()[3]
37 def description(self): return self.changeset()[4] 39 def description(self): return self.changeset()[4]
38 40
39 def parents(self): 41 def parents(self):
40 """return contexts for each parent changeset""" 42 """return contexts for each parent changeset"""
41 p = self._repo.changelog.parents(self._node) 43 p = self._repo.changelog.parents(self._node)
109 def manifest(self): return self.changectx().manifest() 111 def manifest(self): return self.changectx().manifest()
110 112
111 def data(self): return self._filelog.read(self._filenode) 113 def data(self): return self._filelog.read(self._filenode)
112 def metadata(self): return self._filelog.readmeta(self._filenode) 114 def metadata(self): return self._filelog.readmeta(self._filenode)
113 def renamed(self): return self._filelog.renamed(self._filenode) 115 def renamed(self): return self._filelog.renamed(self._filenode)
116 def path(self): return self._path
114 117
115 def parents(self): 118 def parents(self):
116 # need to fix for renames 119 p = [ (self._path, n) for n in self._filelog.parents(self._filenode) ]
117 p = self._filelog.parents(self._filenode) 120 r = self.renamed()
118 return [ filectx(self._repo, self._path, fileid=x) for x in p ] 121 if r:
122 p[0] = r
123 return [ filectx(self._repo, p, fileid=n) for p,n in p if n != nullid ]
119 124
120 def children(self): 125 def children(self):
121 # hard for renames 126 # hard for renames
122 c = self._filelog.children(self._filenode) 127 c = self._filelog.children(self._filenode)
123 return [ filectx(self._repo, self._path, fileid=x) for x in c ] 128 return [ filectx(self._repo, self._path, fileid=x) for x in c ]