D10730: updatecaches: use the `caches` argument instead of a special `full` value

marmoute (Pierre-Yves David) phabricator at mercurial-scm.org
Tue May 18 07:49:11 UTC 2021


marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  After a clone we want to update most cachem, but not exactly all of them. We
  can now cleanly express this.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D10730

AFFECTED FILES
  mercurial/hg.py
  mercurial/interfaces/repository.py
  mercurial/localrepo.py

CHANGE DETAILS

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -2744,8 +2744,7 @@
             if full:
                 caches = repository.CACHES_ALL
                 if full == b"post-clone":
-                    caches = caches.copy()
-                    caches.discard(repository.CACHE_FILE_NODE_TAGS)
+                    caches = repository.CACHES_POST_CLONE
             else:
                 caches = repository.CACHES_DEFAULT
 
diff --git a/mercurial/interfaces/repository.py b/mercurial/interfaces/repository.py
--- a/mercurial/interfaces/repository.py
+++ b/mercurial/interfaces/repository.py
@@ -87,6 +87,11 @@
     CACHE_TAGS_SERVED,
 }
 
+# the cache to warm by default on simple call
+# (this is a mutable set to let extension update it)
+CACHES_POST_CLONE = CACHES_ALL.copy()
+CACHES_POST_CLONE.discard(CACHE_FILE_NODE_TAGS)
+
 
 class ipeerconnection(interfaceutil.Interface):
     """Represents a "connection" to a repository.
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -52,6 +52,7 @@
     verify as verifymod,
     vfs as vfsmod,
 )
+from .interfaces import repository as repositorymod
 from .utils import (
     hashutil,
     stringutil,
@@ -1054,7 +1055,7 @@
             # as the only "bad" outcome would be some slowness. That potential
             # slowness already affect reader.
             with destrepo.lock():
-                destrepo.updatecaches(full=b"post-clone")
+                destrepo.updatecaches(caches=repositorymod.CACHES_POST_CLONE)
     finally:
         release(srclock, destlock)
         if cleandir is not None:



To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list