mercurial/context.py
changeset 8157 77c5877a668c
parent 8151 127281884959
child 8207 dd8d5be57d65
equal deleted inserted replaced
8156:9fd0822c2ec3 8157:77c5877a668c
    58         return not (self == other)
    58         return not (self == other)
    59 
    59 
    60     def __nonzero__(self):
    60     def __nonzero__(self):
    61         return self._rev != nullrev
    61         return self._rev != nullrev
    62 
    62 
       
    63     @propertycache
    63     def _changeset(self):
    64     def _changeset(self):
    64         return self._repo.changelog.read(self.node())
    65         return self._repo.changelog.read(self.node())
    65     _changeset = propertycache(_changeset)
    66 
    66 
    67     @propertycache
    67     def _manifest(self):
    68     def _manifest(self):
    68         return self._repo.manifest.read(self._changeset[0])
    69         return self._repo.manifest.read(self._changeset[0])
    69     _manifest = propertycache(_manifest)
    70 
    70 
    71     @propertycache
    71     def _manifestdelta(self):
    72     def _manifestdelta(self):
    72         return self._repo.manifest.readdelta(self._changeset[0])
    73         return self._repo.manifest.readdelta(self._changeset[0])
    73     _manifestdelta = propertycache(_manifestdelta)
    74 
    74 
    75     @propertycache
    75     def _parents(self):
    76     def _parents(self):
    76         p = self._repo.changelog.parentrevs(self._rev)
    77         p = self._repo.changelog.parentrevs(self._rev)
    77         if p[1] == nullrev:
    78         if p[1] == nullrev:
    78             p = p[:-1]
    79             p = p[:-1]
    79         return [changectx(self._repo, x) for x in p]
    80         return [changectx(self._repo, x) for x in p]
    80     _parents = propertycache(_parents)
       
    81 
    81 
    82     def __contains__(self, key):
    82     def __contains__(self, key):
    83         return key in self._manifest
    83         return key in self._manifest
    84 
    84 
    85     def __getitem__(self, key):
    85     def __getitem__(self, key):
   199         if changectx is not None:
   199         if changectx is not None:
   200             self._changectx = changectx
   200             self._changectx = changectx
   201         if fileid is not None:
   201         if fileid is not None:
   202             self._fileid = fileid
   202             self._fileid = fileid
   203 
   203 
       
   204     @propertycache
   204     def _changectx(self):
   205     def _changectx(self):
   205         return changectx(self._repo, self._changeid)
   206         return changectx(self._repo, self._changeid)
   206     _changectx = propertycache(_changectx)
   207 
   207 
   208     @propertycache
   208     def _filelog(self):
   209     def _filelog(self):
   209         return self._repo.file(self._path)
   210         return self._repo.file(self._path)
   210     _filelog = propertycache(_filelog)
   211 
   211 
   212     @propertycache
   212     def _changeid(self):
   213     def _changeid(self):
   213         if '_changectx' in self.__dict__:
   214         if '_changectx' in self.__dict__:
   214             return self._changectx.rev()
   215             return self._changectx.rev()
   215         else:
   216         else:
   216             return self._filelog.linkrev(self._filerev)
   217             return self._filelog.linkrev(self._filerev)
   217     _changeid = propertycache(_changeid)
   218 
   218 
   219     @propertycache
   219     def _filenode(self):
   220     def _filenode(self):
   220         if '_fileid' in self.__dict__:
   221         if '_fileid' in self.__dict__:
   221             return self._filelog.lookup(self._fileid)
   222             return self._filelog.lookup(self._fileid)
   222         else:
   223         else:
   223             return self._changectx.filenode(self._path)
   224             return self._changectx.filenode(self._path)
   224     _filenode = propertycache(_filenode)
   225 
   225 
   226     @propertycache
   226     def _filerev(self):
   227     def _filerev(self):
   227         return self._filelog.rev(self._filenode)
   228         return self._filelog.rev(self._filenode)
   228     _filerev = propertycache(_filerev)
   229 
   229 
   230     @propertycache
   230     def _repopath(self):
   231     def _repopath(self):
   231         return self._path
   232         return self._path
   232     _repopath = propertycache(_repopath)
       
   233 
   233 
   234     def __nonzero__(self):
   234     def __nonzero__(self):
   235         try:
   235         try:
   236             self._filenode
   236             self._filenode
   237             return True
   237             return True
   513         return True
   513         return True
   514 
   514 
   515     def __contains__(self, key):
   515     def __contains__(self, key):
   516         return self._repo.dirstate[key] not in "?r"
   516         return self._repo.dirstate[key] not in "?r"
   517 
   517 
       
   518     @propertycache
   518     def _manifest(self):
   519     def _manifest(self):
   519         """generate a manifest corresponding to the working directory"""
   520         """generate a manifest corresponding to the working directory"""
   520 
   521 
   521         man = self._parents[0].manifest().copy()
   522         man = self._parents[0].manifest().copy()
   522         copied = self._repo.dirstate.copies()
   523         copied = self._repo.dirstate.copies()
   534         for f in deleted + removed:
   535         for f in deleted + removed:
   535             if f in man:
   536             if f in man:
   536                 del man[f]
   537                 del man[f]
   537 
   538 
   538         return man
   539         return man
   539     _manifest = propertycache(_manifest)
   540 
   540 
   541     @propertycache
   541     def _status(self):
   542     def _status(self):
   542         return self._repo.status(unknown=True)
   543         return self._repo.status(unknown=True)
   543     _status = propertycache(_status)
   544 
   544 
   545     @propertycache
   545     def _user(self):
   546     def _user(self):
   546         return self._repo.ui.username()
   547         return self._repo.ui.username()
   547     _user = propertycache(_user)
   548 
   548 
   549     @propertycache
   549     def _date(self):
   550     def _date(self):
   550         return util.makedate()
   551         return util.makedate()
   551     _date = propertycache(_date)
   552 
   552 
   553     @propertycache
   553     def _parents(self):
   554     def _parents(self):
   554         p = self._repo.dirstate.parents()
   555         p = self._repo.dirstate.parents()
   555         if p[1] == nullid:
   556         if p[1] == nullid:
   556             p = p[:-1]
   557             p = p[:-1]
   557         self._parents = [changectx(self._repo, x) for x in p]
   558         self._parents = [changectx(self._repo, x) for x in p]
   558         return self._parents
   559         return self._parents
   559     _parents = propertycache(_parents)
       
   560 
   560 
   561     def manifest(self): return self._manifest
   561     def manifest(self): return self._manifest
   562 
   562 
   563     def user(self): return self._user or self._repo.ui.username()
   563     def user(self): return self._user or self._repo.ui.username()
   564     def date(self): return self._date
   564     def date(self): return self._date
   629         if filelog:
   629         if filelog:
   630             self._filelog = filelog
   630             self._filelog = filelog
   631         if workingctx:
   631         if workingctx:
   632             self._changectx = workingctx
   632             self._changectx = workingctx
   633 
   633 
       
   634     @propertycache
   634     def _changectx(self):
   635     def _changectx(self):
   635         return workingctx(self._repo)
   636         return workingctx(self._repo)
   636     _changectx = propertycache(_changectx)
   637 
   637 
   638     @propertycache
   638     def _repopath(self):
   639     def _repopath(self):
   639         return self._repo.dirstate.copied(self._path) or self._path
   640         return self._repo.dirstate.copied(self._path) or self._path
   640     _repopath = propertycache(_repopath)
   641 
   641 
   642     @propertycache
   642     def _filelog(self):
   643     def _filelog(self):
   643         return self._repo.file(self._repopath)
   644         return self._repo.file(self._repopath)
   644     _filelog = propertycache(_filelog)
       
   645 
   645 
   646     def __nonzero__(self):
   646     def __nonzero__(self):
   647         return True
   647         return True
   648 
   648 
   649     def __str__(self):
   649     def __str__(self):