mercurial/context.py
changeset 3930 01d98d68d697
parent 3893 6b4127c7d52a
child 3961 a4edadd807dd
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()))