changeset 41958:1fe278aa4ad5

manifestcache: support multiple cache addition in one debug command run This is more practical.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 15 Mar 2019 13:52:56 +0000
parents 131d0b7c3940
children e3307243d188
files mercurial/debugcommands.py tests/test-manifest.t
diffstat 2 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/debugcommands.py	Thu Mar 14 18:11:22 2019 -0700
+++ b/mercurial/debugcommands.py	Fri Mar 15 13:52:56 2019 +0000
@@ -1460,10 +1460,10 @@
 
 @command('debugmanifestfulltextcache', [
         ('', 'clear', False, _('clear the cache')),
-        ('a', 'add', '', _('add the given manifest node to the cache'),
+        ('a', 'add', [], _('add the given manifest nodes to the cache'),
          _('NODE'))
     ], '')
-def debugmanifestfulltextcache(ui, repo, add=None, **opts):
+def debugmanifestfulltextcache(ui, repo, add=(), **opts):
     """show, clear or amend the contents of the manifest fulltext cache"""
 
     def getcache():
@@ -1483,12 +1483,14 @@
 
     if add:
         with repo.lock():
-            try:
-                m = repo.manifestlog
-                manifest = m[m.getstorage(b'').lookup(add)]
-            except error.LookupError as e:
-                raise error.Abort(e, hint="Check your manifest node id")
-            manifest.read()  # stores revisision in cache too
+            m = repo.manifestlog
+            store = m.getstorage(b'')
+            for n in add:
+                try:
+                    manifest = m[store.lookup(n)]
+                except error.LookupError as e:
+                    raise error.Abort(e, hint="Check your manifest node id")
+                manifest.read()  # stores revisision in cache too
             return
 
     cache = getcache()
--- a/tests/test-manifest.t	Thu Mar 14 18:11:22 2019 -0700
+++ b/tests/test-manifest.t	Fri Mar 15 13:52:56 2019 +0000
@@ -148,3 +148,13 @@
   $ hg debugmanifestfulltextcache --clear
   $ hg debugmanifestfulltextcache
   cache empty
+
+Check adding multiple entry in one go:
+
+  $ hg debugmanifestfulltextcache --add fce2a30dedad1eef4da95ca1dc0004157aa527cf  --add 1e01206b1d2f72bd55f2a33fa8ccad74144825b7
+  $ hg debugmanifestfulltextcache
+  cache contains 2 manifest entries, in order of most to least recent:
+  id: 1e01206b1d2f72bd55f2a33fa8ccad74144825b7, size 133 bytes
+  id: fce2a30dedad1eef4da95ca1dc0004157aa527cf, size 87 bytes
+  total cache data size 268 bytes, on-disk 268 bytes
+  $ hg debugmanifestfulltextcache --clear