tags-cache: add a dedicated warm cache function to hgtagsfnodescache
Having a dedicated API point will help to optimize that specific usage. Right
doing a full phases weam takes a long time, even when the cache is already
filled.
--- a/mercurial/localrepo.py Tue Apr 09 22:37:15 2024 +0200
+++ b/mercurial/localrepo.py Wed Mar 13 11:34:21 2024 +0100
@@ -2959,7 +2959,7 @@
if repository.CACHE_FILE_NODE_TAGS in caches:
# accessing fnode cache warms the cache
- tagsmod.fnoderevs(self.ui, unfi, unfi.changelog.revs())
+ tagsmod.warm_cache(self)
if repository.CACHE_TAGS_DEFAULT in caches:
# accessing tags warm the cache
--- a/mercurial/tags.py Tue Apr 09 22:37:15 2024 +0200
+++ b/mercurial/tags.py Wed Mar 13 11:34:21 2024 +0100
@@ -80,6 +80,12 @@
# setting it) for each tag is last.
+def warm_cache(repo):
+ """ensure the cache is properly filled"""
+ unfi = repo.unfiltered()
+ fnoderevs(repo.ui, unfi, unfi.changelog.revs())
+
+
def fnoderevs(ui, repo, revs):
"""return the list of '.hgtags' fnodes used in a set revisions