# HG changeset patch # User Pierre-Yves David # Date 2011-11-03 23:20:20 # Node ID e80d0d3198f0f1fb186eecc49b5a98c0670aed9a # Parent ccb7de21625a6a29af7dd02b82ef2dd15f6e79e2 phases: add a cache allowing to know in which phase a changeset is diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -174,6 +174,18 @@ class localrepository(repo.repository): def _phaseroots(self): return phases.readroots(self) + @propertycache + def _phaserev(self): + cache = [0] * len(self) + for phase in phases.trackedphases: + roots = map(self.changelog.rev, self._phaseroots[phase]) + if roots: + for rev in roots: + cache[rev] = phase + for rev in self.changelog.descendants(*roots): + cache[rev] = phase + return cache + @filecache('00changelog.i', True) def changelog(self): c = changelog.changelog(self.sopener)