diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py
index 73baad28aae0422ab4fd8acb6926550a38c109ab_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ==..aba709289ed35790b4bb951d0777accf229d9de6_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ== 100644
--- a/benchmarks/basic_commands.py
+++ b/benchmarks/basic_commands.py
@@ -1,3 +1,4 @@
+import base64
 import contextlib
 import os
 import os.path
@@ -136,4 +137,7 @@
     def time_bundle(self, repo, n):
         self._execute("bundle", "--base", ":(-%d)" % (n+1), "/tmp/bundle.bundle")
 
+class ExchangeTimeSuite(BaseTimeTestSuite):
+    param_names = BaseTimeTestSuite.param_names + ['strip', 'revset']
+    params = BaseTrackTestSuite.params + [['last(all(), 10)'], [None, 'default']]
 
@@ -139,9 +143,5 @@
 
-class ExchangeTimeSuite(BaseTimeTestSuite):
-    param_names = BaseTimeTestSuite.param_names + ['revset']
-    params = BaseTrackTestSuite.params + [[None, 'default']]
-
-    def setup(self, repo_name, revset):
+    def setup(self, repo_name, strip, revset):
         self.timer = timeit.default_timer
         self.sample_time = 10
         super(ExchangeTimeSuite, self).setup(repo_name, revset)
@@ -145,7 +145,8 @@
         self.timer = timeit.default_timer
         self.sample_time = 10
         super(ExchangeTimeSuite, self).setup(repo_name, revset)
-        self.clone_path = os.path.join(REPOS_DIR, '.cache', repo_name)
+        self.clone_path = os.path.join(REPOS_DIR, '.cache', 'partial-{}-{}'.format(
+            repo_name, base64.b64encode(strip)))
         if revset is not None:
             self.rev = subprocess.check_output([
                 self.hgpath, '--cwd', self.repo_path, 'identify', '-i', "-r", revset
@@ -153,9 +154,9 @@
         else:
             self.rev = None
 
-    def time_incoming(self, repo_name, revset):
+    def time_incoming(self, repo_name, strip, revset):
         cmd = [self.hgpath, '--cwd', self.clone_path, 'incoming', self.repo_path]
         if self.rev:
             cmd.extend(['-r', self.rev])
         self._single_execute(cmd)
 
@@ -157,9 +158,9 @@
         cmd = [self.hgpath, '--cwd', self.clone_path, 'incoming', self.repo_path]
         if self.rev:
             cmd.extend(['-r', self.rev])
         self._single_execute(cmd)
 
-    def time_outgoing(self, repo_name, revset):
+    def time_outgoing(self, repo_name, strip, revset):
         cmd = [self.hgpath, '--cwd', self.repo_path, 'outgoing', self.clone_path]
         if self.rev:
             cmd.extend(['-r', self.rev])
diff --git a/prepare_repos.py b/prepare_repos.py
index 73baad28aae0422ab4fd8acb6926550a38c109ab_cHJlcGFyZV9yZXBvcy5weQ==..aba709289ed35790b4bb951d0777accf229d9de6_cHJlcGFyZV9yZXBvcy5weQ== 100644
--- a/prepare_repos.py
+++ b/prepare_repos.py
@@ -1,5 +1,6 @@
 """ Ensure that all repository are cloned and at their tip
 """
+import base64
 import errno
 import hglib
 import os
@@ -7,6 +8,9 @@
 from os.path import isdir, join
 import yaml
 
+# changesets stripped in partial clones
+PARTIAL_REVSET = ('last(all(), 10)',)
+
 
 def read_configuration(config_path):
     with open(config_path) as config_file:
@@ -25,15 +29,17 @@
         if not isdir(clonedir):
             print("Cloning %s (%s) into %s" % (repo_name, repo['url'], clonedir))
             hglib.clone(repo['url'], clonedir)
-        partialdir = join(cachedir, repo_name)
-        if not isdir(partialdir):
-            print("Cloning partial %s (%s) into %s (for exchange benchmarks)" % (
-                repo_name, clonedir, partialdir))
-            subprocess.check_call(['hg', 'clone', '--noupdate', clonedir,
-                                   partialdir])
-            subprocess.check_call(['hg', '--cwd', partialdir, 'strip', '-r',
-                                   'last(all(), 10)'])
-            subprocess.check_call(['hg', '--cwd', partialdir, 'debugupdatecache'])
+        for revset in PARTIAL_REVSET:
+            partialdir = join(cachedir, 'partial-{}-{}'.format(
+                repo_name, base64.b64encode(revset)))
+            if not isdir(partialdir):
+                print("Cloning partial %s (%s stripped off %s) into %s (for exchange benchmarks)" % (
+                    repo_name, clonedir, revset, partialdir))
+                subprocess.check_call(['hg', 'clone', '--noupdate', clonedir,
+                                       partialdir])
+                subprocess.check_call(['hg', '--cwd', partialdir, 'strip', '-r',
+                                       revset])
+                subprocess.check_call(['hg', '--cwd', partialdir, 'debugupdatecache'])
 
 
 config = read_configuration("config.yaml")