comparison mercurial/context.py @ 16657:b6081c2c4647

phases: introduce phasecache The original motivation was changectx.phase() had special logic to correctly lookup in repo._phaserev, including invalidating it when necessary. And at other places, repo._phaserev was accessed directly. This led to the discovery that phases state including _phaseroots, _phaserev and _dirtyphase was manipulated in localrepository.py, phases.py, repair.py, etc. phasecache helps encapsulating that. This patch replaces all phase state in localrepo with phasecache and adjust related code except for advance/retractboundary() in phases. These still access to phasecache internals directly. This will be addressed in a followup.
author Patrick Mezard <patrick@mezard.eu>
date Sat, 12 May 2012 00:24:07 +0200
parents f1745323a567
children 525fdb738975
comparison
equal deleted inserted replaced
16656:4ae3ba9e4d7a 16657:b6081c2c4647
189 def tags(self): 189 def tags(self):
190 return self._repo.nodetags(self._node) 190 return self._repo.nodetags(self._node)
191 def bookmarks(self): 191 def bookmarks(self):
192 return self._repo.nodebookmarks(self._node) 192 return self._repo.nodebookmarks(self._node)
193 def phase(self): 193 def phase(self):
194 if self._rev == -1: 194 return self._repo._phasecache.phase(self._repo, self._rev)
195 return phases.public
196 if self._rev >= len(self._repo._phaserev):
197 # outdated cache
198 del self._repo._phaserev
199 return self._repo._phaserev[self._rev]
200 def phasestr(self): 195 def phasestr(self):
201 return phases.phasenames[self.phase()] 196 return phases.phasenames[self.phase()]
202 def mutable(self): 197 def mutable(self):
203 return self.phase() > phases.public 198 return self.phase() > phases.public
204 def hidden(self): 199 def hidden(self):