mercurial/phases.py
changeset 22894 c40be72dc177
parent 22893 9672f0b2cdd9
child 22940 e803186296ab
equal deleted inserted replaced
22893:9672f0b2cdd9 22894:c40be72dc177
   165 
   165 
   166     def getphaserevs(self, repo):
   166     def getphaserevs(self, repo):
   167         if self._phaserevs is None:
   167         if self._phaserevs is None:
   168             repo = repo.unfiltered()
   168             repo = repo.unfiltered()
   169             revs = [public] * len(repo.changelog)
   169             revs = [public] * len(repo.changelog)
       
   170             self._phaserevs = revs
       
   171             self._populatephaseroots(repo)
   170             for phase in trackedphases:
   172             for phase in trackedphases:
   171                 roots = map(repo.changelog.rev, self.phaseroots[phase])
   173                 roots = map(repo.changelog.rev, self.phaseroots[phase])
   172                 if roots:
   174                 if roots:
   173                     for rev in roots:
   175                     for rev in roots:
   174                         revs[rev] = phase
   176                         revs[rev] = phase
   175                     for rev in repo.changelog.descendants(roots):
   177                     for rev in repo.changelog.descendants(roots):
   176                         revs[rev] = phase
   178                         revs[rev] = phase
   177             self._phaserevs = revs
       
   178         return self._phaserevs
   179         return self._phaserevs
       
   180 
   179     def invalidate(self):
   181     def invalidate(self):
   180         self._phaserevs = None
   182         self._phaserevs = None
       
   183 
       
   184     def _populatephaseroots(self, repo):
       
   185         """Fills the _phaserevs cache with phases for the roots.
       
   186         """
       
   187         cl = repo.changelog
       
   188         phaserevs = self._phaserevs
       
   189         for phase in trackedphases:
       
   190             roots = map(cl.rev, self.phaseroots[phase])
       
   191             for root in roots:
       
   192                 phaserevs[root] = phase
   181 
   193 
   182     def phase(self, repo, rev):
   194     def phase(self, repo, rev):
   183         # We need a repo argument here to be able to build _phaserevs
   195         # We need a repo argument here to be able to build _phaserevs
   184         # if necessary. The repository instance is not stored in
   196         # if necessary. The repository instance is not stored in
   185         # phasecache to avoid reference cycles. The changelog instance
   197         # phasecache to avoid reference cycles. The changelog instance