mercurial/context.py
changeset 3235 e8199702cf4e
parent 3209 9e8dd6114a4e
child 3236 696c656202a0
equal deleted inserted replaced
3234:cac7be0b9b99 3235:e8199702cf4e
   112 
   112 
   113         assert changeid is not None or fileid is not None
   113         assert changeid is not None or fileid is not None
   114 
   114 
   115         if filelog:
   115         if filelog:
   116             self._filelog = filelog
   116             self._filelog = filelog
   117         else:
       
   118             self._filelog = self._repo.file(self._path)
       
   119 
   117 
   120         if fileid is None:
   118         if fileid is None:
   121             self._changeid = changeid
   119             self._changeid = changeid
   122         else:
   120         else:
   123             self._filenode = self._filelog.lookup(fileid)
   121             self._fileid = fileid
   124             self._changeid = self._filelog.linkrev(self._filenode)
       
   125 
   122 
   126     def __getattr__(self, name):
   123     def __getattr__(self, name):
   127         if name == '_changectx':
   124         if name == '_changectx':
   128             self._changectx = changectx(self._repo, self._changeid)
   125             self._changectx = changectx(self._repo, self._changeid)
   129             return self._changectx
   126             return self._changectx
       
   127         elif name == '_filelog':
       
   128             self._filelog = self._repo.file(self._path)
       
   129             return self._filelog
       
   130         elif name == '_changeid':
       
   131             self._changeid = self._filelog.linkrev(self._filenode)
       
   132             return self._changeid
   130         elif name == '_filenode':
   133         elif name == '_filenode':
   131             self._filenode = self._changectx.filenode(self._path)
   134             if hasattr(self, "_fileid"):
       
   135                 self._filenode = self._filelog.lookup(self._fileid)
       
   136             else:
       
   137                 self._filenode = self._changectx.filenode(self._path)
   132             return self._filenode
   138             return self._filenode
   133         elif name == '_filerev':
   139         elif name == '_filerev':
   134             self._filerev = self._filelog.rev(self._filenode)
   140             self._filerev = self._filelog.rev(self._filenode)
   135             return self._filerev
   141             return self._filerev
   136         else:
   142         else: