diff --git a/tests/test-treemanifest-prefetch.t b/tests/test-treemanifest-prefetch.t --- a/tests/test-treemanifest-prefetch.t +++ b/tests/test-treemanifest-prefetch.t @@ -368,3 +368,11 @@ $ rm -rf $CACHEDIR/master $ hg prefetchtrees -r '2 + 4' 5 trees fetched over * (glob) + +Test repack option + $ rm -rf $CACHEDIR/master + $ hg prefetchtrees -r '2 + 4' --repack + 5 trees fetched over *s (glob) + (running background incremental repack) + $ sleep 0.5 + $ hg debugwaitonrepack diff --git a/treemanifest/__init__.py b/treemanifest/__init__.py --- a/treemanifest/__init__.py +++ b/treemanifest/__init__.py @@ -113,6 +113,7 @@ _computeincrementalhistorypack, _runrepack, _topacks, + backgroundrepack, ) import cstore @@ -988,6 +989,7 @@ @command('prefetchtrees', [ ('r', 'rev', '', _("revs to prefetch the trees for")), + ('', 'repack', False, _('run repack after prefetch')), ('b', 'base', '', _("rev that is assumed to already be local")), ] + commands.walkopts, _('--rev REVS PATTERN..')) def prefetchtrees(ui, repo, *args, **opts): @@ -1003,6 +1005,10 @@ _prefetchtrees(repo, '', mfnodes, basemfnode, []) + # Run repack in background + if opts.get('repack'): + backgroundrepack(repo, incremental=True) + def _prefetchtrees(repo, rootdir, mfnodes, basemfnodes, directories): # If possible, use remotefilelog's more expressive fallbackpath if util.safehasattr(repo, 'fallbackpath'):