Mercurial > public > mercurial-scm > hg-stable
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): |