Show More
@@ -383,10 +383,7 b' class phasecache:' | |||||
383 | def hasnonpublicphases(self, repo: "localrepo.localrepository") -> bool: |
|
383 | def hasnonpublicphases(self, repo: "localrepo.localrepository") -> bool: | |
384 | """detect if there are revisions with non-public phase""" |
|
384 | """detect if there are revisions with non-public phase""" | |
385 | repo = repo.unfiltered() |
|
385 | repo = repo.unfiltered() | |
386 | cl = repo.changelog |
|
386 | self._ensure_phase_sets(repo) | |
387 | if len(cl) > self._loadedrevslen: |
|
|||
388 | self.invalidate() |
|
|||
389 | self.loadphaserevs(repo) |
|
|||
390 | return any( |
|
387 | return any( | |
391 | revs for phase, revs in self._phaseroots.items() if phase != public |
|
388 | revs for phase, revs in self._phaseroots.items() if phase != public | |
392 | ) |
|
389 | ) | |
@@ -400,10 +397,7 b' class phasecache:' | |||||
400 | descendants of draft revisions, their roots will still be present. |
|
397 | descendants of draft revisions, their roots will still be present. | |
401 | """ |
|
398 | """ | |
402 | repo = repo.unfiltered() |
|
399 | repo = repo.unfiltered() | |
403 | cl = repo.changelog |
|
400 | self._ensure_phase_sets(repo) | |
404 | if len(cl) > self._loadedrevslen: |
|
|||
405 | self.invalidate() |
|
|||
406 | self.loadphaserevs(repo) |
|
|||
407 | return set().union( |
|
401 | return set().union( | |
408 | *[ |
|
402 | *[ | |
409 | revs |
|
403 | revs | |
@@ -420,7 +414,7 b' class phasecache:' | |||||
420 | ) -> Any: |
|
414 | ) -> Any: | |
421 | # TODO: finish typing this |
|
415 | # TODO: finish typing this | |
422 | """return a smartset for the given phases""" |
|
416 | """return a smartset for the given phases""" | |
423 |
self. |
|
417 | self._ensure_phase_sets(repo) # ensure phase's sets are loaded | |
424 | phases = set(phases) |
|
418 | phases = set(phases) | |
425 | publicphase = public in phases |
|
419 | publicphase = public in phases | |
426 |
|
420 | |||
@@ -511,14 +505,20 b' class phasecache:' | |||||
511 | self._phasesets[phase] = ps |
|
505 | self._phasesets[phase] = ps | |
512 | self._loadedrevslen = len(cl) |
|
506 | self._loadedrevslen = len(cl) | |
513 |
|
507 | |||
514 |
def |
|
508 | def _ensure_phase_sets(self, repo: "localrepo.localrepository") -> None: | |
515 | """ensure phase information is loaded in the object""" |
|
509 | """ensure phase information is loaded in the object and up to date""" | |
|
510 | update = False | |||
516 | if self._phasesets is None: |
|
511 | if self._phasesets is None: | |
|
512 | update = True | |||
|
513 | elif len(repo.changelog) > self._loadedrevslen: | |||
|
514 | update = True | |||
|
515 | if update: | |||
517 | try: |
|
516 | try: | |
518 | res = self._getphaserevsnative(repo) |
|
517 | res = self._getphaserevsnative(repo) | |
519 | self._loadedrevslen, self._phasesets = res |
|
518 | self._loadedrevslen, self._phasesets = res | |
520 | except AttributeError: |
|
519 | except AttributeError: | |
521 | self._computephaserevspure(repo) |
|
520 | self._computephaserevspure(repo) | |
|
521 | assert self._loadedrevslen == len(repo.changelog) | |||
522 |
|
522 | |||
523 | def invalidate(self): |
|
523 | def invalidate(self): | |
524 | self._loadedrevslen = 0 |
|
524 | self._loadedrevslen = 0 | |
@@ -534,9 +534,10 b' class phasecache:' | |||||
534 | return public |
|
534 | return public | |
535 | if rev < nullrev: |
|
535 | if rev < nullrev: | |
536 | raise ValueError(_(b'cannot lookup negative revision')) |
|
536 | raise ValueError(_(b'cannot lookup negative revision')) | |
|
537 | # double check self._loadedrevslen to avoid an extra method call as | |||
|
538 | # python is slow for that. | |||
537 | if rev >= self._loadedrevslen: |
|
539 | if rev >= self._loadedrevslen: | |
538 |
self. |
|
540 | self._ensure_phase_sets(repo) | |
539 | self.loadphaserevs(repo) |
|
|||
540 | for phase in trackedphases: |
|
541 | for phase in trackedphases: | |
541 | if rev in self._phasesets[phase]: |
|
542 | if rev in self._phasesets[phase]: | |
542 | return phase |
|
543 | return phase |
General Comments 0
You need to be logged in to leave comments.
Login now