comparison mercurial/context.py @ 3930:01d98d68d697

Add revlog.LookupError exception, and use it instead of RevlogError. Remove repo.LookupError, which devolves to the revlog version.
author Brendan Cully <brendan@kublai.com>
date Mon, 18 Dec 2006 12:22:43 -0800
parents 6b4127c7d52a
children a4edadd807dd
comparison
equal deleted inserted replaced
3929:33988aaa1652 3930:01d98d68d697
81 def filenode(self, path): 81 def filenode(self, path):
82 if '_manifest' in self.__dict__: 82 if '_manifest' in self.__dict__:
83 try: 83 try:
84 return self._manifest[path] 84 return self._manifest[path]
85 except KeyError: 85 except KeyError:
86 raise repo.LookupError(_("'%s' not found in manifest") % path) 86 raise revlog.LookupError(_("'%s' not found in manifest") % path)
87 if '_manifestdelta' in self.__dict__ or path in self.files(): 87 if '_manifestdelta' in self.__dict__ or path in self.files():
88 if path in self._manifestdelta: 88 if path in self._manifestdelta:
89 return self._manifestdelta[path] 89 return self._manifestdelta[path]
90 node, flag = self._repo.manifest.find(self._changeset[0], path) 90 node, flag = self._repo.manifest.find(self._changeset[0], path)
91 if not node: 91 if not node:
92 raise repo.LookupError(_("'%s' not found in manifest") % path) 92 raise revlog.LookupError(_("'%s' not found in manifest") % path)
93 93
94 return node 94 return node
95 95
96 def filectx(self, path, fileid=None): 96 def filectx(self, path, fileid=None):
97 """get a file context from this changeset""" 97 """get a file context from this changeset"""
147 return self._filelog 147 return self._filelog
148 elif name == '_changeid': 148 elif name == '_changeid':
149 self._changeid = self._filelog.linkrev(self._filenode) 149 self._changeid = self._filelog.linkrev(self._filenode)
150 return self._changeid 150 return self._changeid
151 elif name == '_filenode': 151 elif name == '_filenode':
152 try: 152 if '_fileid' in self.__dict__:
153 if '_fileid' in self.__dict__: 153 self._filenode = self._filelog.lookup(self._fileid)
154 self._filenode = self._filelog.lookup(self._fileid) 154 else:
155 else: 155 self._filenode = self._changectx.filenode(self._path)
156 self._filenode = self._changectx.filenode(self._path)
157 except revlog.RevlogError, inst:
158 raise repo.LookupError(str(inst))
159 return self._filenode 156 return self._filenode
160 elif name == '_filerev': 157 elif name == '_filerev':
161 self._filerev = self._filelog.rev(self._filenode) 158 self._filerev = self._filelog.rev(self._filenode)
162 return self._filerev 159 return self._filerev
163 else: 160 else:
165 162
166 def __nonzero__(self): 163 def __nonzero__(self):
167 try: 164 try:
168 n = self._filenode 165 n = self._filenode
169 return True 166 return True
170 except repo.LookupError: 167 except revlog.LookupError:
171 # file is missing 168 # file is missing
172 return False 169 return False
173 170
174 def __str__(self): 171 def __str__(self):
175 return "%s@%s" % (self.path(), short(self.node())) 172 return "%s@%s" % (self.path(), short(self.node()))