comparison mercurial/context.py @ 2652:f23973ea3107

fix filectxt to really work - use a context instead of changelog.read - changectx._id is not necessary
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Mon, 17 Jul 2006 01:59:06 +0200
parents a49534aac47d
children 345bac2bc4ec
comparison
equal deleted inserted replaced
2651:6414ee2eb688 2652:f23973ea3107
9 """A changecontext object makes access to data related to a particular 9 """A changecontext object makes access to data related to a particular
10 changeset convenient.""" 10 changeset convenient."""
11 def __init__(self, repo, changeid): 11 def __init__(self, repo, changeid):
12 """changeid is a revision number, node, or tag""" 12 """changeid is a revision number, node, or tag"""
13 self._repo = repo 13 self._repo = repo
14 self._id = changeid
15 14
16 self._node = self._repo.lookup(self._id) 15 self._node = self._repo.lookup(changeid)
17 self._rev = self._repo.changelog.rev(self._node) 16 self._rev = self._repo.changelog.rev(self._node)
18 17
19 def changeset(self): 18 def changeset(self):
20 try: 19 try:
21 return self._changeset 20 return self._changeset
72 def __init__(self, repo, path, changeid=None, fileid=None): 71 def __init__(self, repo, path, changeid=None, fileid=None):
73 """changeid can be a changeset revision, node, or tag. 72 """changeid can be a changeset revision, node, or tag.
74 fileid can be a file revision or node.""" 73 fileid can be a file revision or node."""
75 self._repo = repo 74 self._repo = repo
76 self._path = path 75 self._path = path
77 self._id = changeid
78 self._fileid = fileid
79 76
80 if self._id: 77 assert changeid or fileid
78
79 if not fileid:
81 # if given a changeset id, go ahead and look up the file 80 # if given a changeset id, go ahead and look up the file
82 self._changeset = self._repo.changelog.read(self._id) 81 self._changeid = changeid
83 node, flag = self._repo.manifest.find(self._changeset[0], path) 82 self._changectx = self.changectx()
84 self._filelog = self._repo.file(self._path) 83 self._filelog = self._repo.file(self._path)
85 self._filenode = node 84 self._filenode = self._changectx.filenode(self._path)
86 elif self._fileid: 85 else:
87 # else be lazy 86 # else be lazy
88 self._filelog = self._repo.file(self._path) 87 self._filelog = self._repo.file(self._path)
89 self._filenode = self._filelog.lookup(self._fileid) 88 self._filenode = self._filelog.lookup(fileid)
89 self._changeid = self._filelog.linkrev(self._filenode)
90 self._filerev = self._filelog.rev(self._filenode) 90 self._filerev = self._filelog.rev(self._filenode)
91 91
92 def changeset(self): 92 def changectx(self):
93 try: 93 try:
94 return self._changeset 94 return self._changectx
95 except AttributeError: 95 except AttributeError:
96 self._changeset = self._repo.changelog.read(self.node()) 96 self._changectx = changectx(self._repo, self._changeid)
97 return self._changeset 97 return self._changectx
98 98
99 def filerev(self): return self._filerev 99 def filerev(self): return self._filerev
100 def filenode(self): return self._filenode 100 def filenode(self): return self._filenode
101 def filelog(self): return self._filelog 101 def filelog(self): return self._filelog
102 102
103 def rev(self): return self.changeset().rev() 103 def rev(self): return self.changectx().rev()
104 def node(self): return self.changeset().node() 104 def node(self): return self.changectx().node()
105 def user(self): return self.changeset().user() 105 def user(self): return self.changectx().user()
106 def date(self): return self.changeset().date() 106 def date(self): return self.changectx().date()
107 def files(self): return self.changeset().files() 107 def files(self): return self.changectx().files()
108 def description(self): return self.changeset().description() 108 def description(self): return self.changectx().description()
109 def manifest(self): return self.changeset().manifest() 109 def manifest(self): return self.changectx().manifest()
110 110
111 def data(self): return self._filelog.read(self._filenode) 111 def data(self): return self._filelog.read(self._filenode)
112 def metadata(self): return self._filelog.readmeta(self._filenode) 112 def metadata(self): return self._filelog.readmeta(self._filenode)
113 def renamed(self): return self._filelog.renamed(self._filenode) 113 def renamed(self): return self._filelog.renamed(self._filenode)
114 114