Mercurial > public > mercurial-scm > hg
comparison mercurial/context.py @ 3122: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
3121:2ef0b3aae186 | 3122: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 ] |