##// END OF EJS Templates
phases: invalidate the phases set less often on retract boundary...
marmoute -
r52313:ac1c7518 default
parent child Browse files
Show More
@@ -269,9 +269,10 b' class bundlephasecache(phases.phasecache'
269 269 def _write(self, fp):
270 270 raise NotImplementedError
271 271
272 def _updateroots(self, repo, phase, newroots, tr):
272 def _updateroots(self, repo, phase, newroots, tr, invalidate=True):
273 273 self._phaseroots[phase] = newroots
274 self.invalidate()
274 if invalidate:
275 self.invalidate()
275 276 self.dirty = True
276 277
277 278
@@ -624,10 +624,11 b' class phasecache:'
624 624 fp.write(b'%i %s\n' % (phase, hex(h)))
625 625 self.dirty = False
626 626
627 def _updateroots(self, repo, phase, newroots, tr):
627 def _updateroots(self, repo, phase, newroots, tr, invalidate=True):
628 628 self._phaseroots[phase] = newroots
629 self.invalidate()
630 629 self.dirty = True
630 if invalidate:
631 self.invalidate()
631 632
632 633 assert repo.filtername is None
633 634 wrepo = weakref.ref(repo)
@@ -811,11 +812,23 b' class phasecache:'
811 812 changed_revs[r] = r_phase
812 813 elif r in currentroots:
813 814 replaced_roots.add(r)
815 sets = self._phasesets
816 sets[targetphase].update(changed_revs)
817 for r, old in changed_revs.items():
818 if old > public:
819 sets[old].discard(r)
814 820
815 821 if new_roots:
816 822 assert changed_revs
823
817 824 final_roots = new_roots | currentroots - replaced_roots
818 self._updateroots(repo, targetphase, final_roots, tr)
825 self._updateroots(
826 repo,
827 targetphase,
828 final_roots,
829 tr,
830 invalidate=False,
831 )
819 832 if targetphase > 1:
820 833 retracted = set(changed_revs)
821 834 for lower_phase in range(1, targetphase):
@@ -824,7 +837,13 b' class phasecache:'
824 837 continue
825 838 if lower_roots & retracted:
826 839 simpler_roots = lower_roots - retracted
827 self._updateroots(repo, lower_phase, simpler_roots, tr)
840 self._updateroots(
841 repo,
842 lower_phase,
843 simpler_roots,
844 tr,
845 invalidate=False,
846 )
828 847 return changed_revs
829 848 else:
830 849 assert not changed_revs
General Comments 0
You need to be logged in to leave comments. Login now