D11483: manifestlog: also monitor `00manifestlog.n` when applicable
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Sep 21 21:52:20 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This let the locarepo's file cache detect outdated nodemap docket and reload the
manifestlog after `localrepo.invalidate` when applicable.
The same problem than issue6554 could affect the Manifest too.
REPOSITORY
rHG Mercurial
BRANCH
stable
REVISION DETAIL
https://phab.mercurial-scm.org/D11483
AFFECTED FILES
mercurial/localrepo.py
CHANGE DETAILS
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -159,6 +159,21 @@
return paths
+class manifestlogcache(storecache):
+ """filecache for the manifestlog"""
+
+ def __init__(self):
+ super(manifestlogcache, self).__init__()
+ _cachedfiles.add((b'00manifestlog.i', b''))
+ _cachedfiles.add((b'00manifestlog.n', b''))
+
+ def tracked_paths(self, obj):
+ paths = [self.join(obj, b'00manifestlog.i')]
+ if obj.store.opener.options.get(b'persistent-nodemap', False):
+ paths.append(self.join(obj, b'00manifestlog.n'))
+ return paths
+
+
class mixedrepostorecache(_basefilecache):
"""filecache for a mix files in .hg/store and outside"""
@@ -1697,7 +1712,7 @@
concurrencychecker=revlogchecker.get_checker(repo.ui, b'changelog'),
)
- @storecache(b'00manifest.i')
+ @manifestlogcache()
def manifestlog(self):
return self.store.manifestlog(self, self._storenarrowmatch)
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list