Show More
@@ -3371,17 +3371,6 b' class localrepository:' | |||
|
3371 | 3371 | Intended for use by strip and rollback, so there's a common |
|
3372 | 3372 | place for anything that has to be done after destroying history. |
|
3373 | 3373 | """ |
|
3374 | # When one tries to: | |
|
3375 | # 1) destroy nodes thus calling this method (e.g. strip) | |
|
3376 | # 2) use phasecache somewhere (e.g. commit) | |
|
3377 | # | |
|
3378 | # then 2) will fail because the phasecache contains nodes that were | |
|
3379 | # removed. We can either remove phasecache from the filecache, | |
|
3380 | # causing it to reload next time it is accessed, or simply filter | |
|
3381 | # the removed nodes now and write the updated cache. | |
|
3382 | self._phasecache.filterunknown(self) | |
|
3383 | self._phasecache.write() | |
|
3384 | ||
|
3385 | 3374 | # refresh all repository caches |
|
3386 | 3375 | self.updatecaches() |
|
3387 | 3376 |
@@ -702,6 +702,24 b' class phasecache:' | |||
|
702 | 702 | return True |
|
703 | 703 | return False |
|
704 | 704 | |
|
705 | def register_strip( | |
|
706 | self, | |
|
707 | repo: "localrepo.localrepository", | |
|
708 | tr, | |
|
709 | strip_rev: int, | |
|
710 | ): | |
|
711 | """announce a strip to the phase cache | |
|
712 | ||
|
713 | Any roots higher than the stripped revision should be dropped. | |
|
714 | """ | |
|
715 | assert repo.filtername is None | |
|
716 | to_rev = repo.changelog.index.rev | |
|
717 | for targetphase, nodes in list(self.phaseroots.items()): | |
|
718 | filtered = {n for n in nodes if to_rev(n) >= strip_rev} | |
|
719 | if filtered: | |
|
720 | self._updateroots(targetphase, nodes - filtered, tr) | |
|
721 | self.invalidate() | |
|
722 | ||
|
705 | 723 | def filterunknown(self, repo: "localrepo.localrepository") -> None: |
|
706 | 724 | """remove unknown nodes from the phase boundary |
|
707 | 725 |
@@ -218,6 +218,7 b' def strip(ui, repo, nodelist, backup=Tru' | |||
|
218 | 218 | oldfiles = set(tr._offsetmap.keys()) |
|
219 | 219 | oldfiles.update(tr._newfiles) |
|
220 | 220 | |
|
221 | repo._phasecache.register_strip(repo, tr, striprev) | |
|
221 | 222 | tr.startgroup() |
|
222 | 223 | cl.strip(striprev, tr) |
|
223 | 224 | stripmanifest(repo, striprev, tr, files) |
@@ -239,7 +240,6 b' def strip(ui, repo, nodelist, backup=Tru' | |||
|
239 | 240 | deleteobsmarkers(repo.obsstore, stripobsidx) |
|
240 | 241 | del repo.obsstore |
|
241 | 242 | repo.invalidatevolatilesets() |
|
242 | repo._phasecache.filterunknown(repo) | |
|
243 | 243 | |
|
244 | 244 | if tmpbundlefile: |
|
245 | 245 | ui.note(_(b"adding branch\n")) |
General Comments 0
You need to be logged in to leave comments.
Login now