diff --git a/remotefilelog/__init__.py b/remotefilelog/__init__.py --- a/remotefilelog/__init__.py +++ b/remotefilelog/__init__.py @@ -955,6 +955,7 @@ @command('prefetch', [ ('r', 'rev', [], _('prefetch the specified revisions'), _('REV')), ('', 'repack', False, _('run repack after prefetch')), + ('b', 'base', '', _("rev that is assumed to already be local")), ] + commands.walkopts, _('hg prefetch [OPTIONS] [FILE...]')) def prefetch(ui, repo, *pats, **opts): """prefetch file revisions from the server @@ -987,7 +988,11 @@ revs = scmutil.revrange(repo, opts.get('rev')) - repo.prefetch(revs, pats=pats, opts=opts) + base = opts.get('base') + if not base: + base = None + + repo.prefetch(revs, base, pats, opts) # Run repack in background if opts.get('repack'): diff --git a/tests/test-remotefilelog-prefetch.t b/tests/test-remotefilelog-prefetch.t --- a/tests/test-remotefilelog-prefetch.t +++ b/tests/test-remotefilelog-prefetch.t @@ -35,6 +35,25 @@ $ hg cat -r 0 x x +# prefetch with base + + $ hg prefetch -r 0::1 -b 0 + 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) + + $ hg cat -r 1 x + x2 + $ hg cat -r 1 y + y + + $ hg cat -r 0 x + x + $ hg cat -r 0 z + z + + $ hg prefetch -r 0::1 --base 0 + $ hg prefetch -r 0::1 -b 1 + $ hg prefetch -r 0::1 + # prefetch a range of revisions $ clearcache