convert: remove restriction on multiple --rev in hg source
authorDurham Goode <durham@fb.com>
Thu, 03 Sep 2015 10:29:42 -0700
changeset 26154 242853e14804
parent 26153 8aa6fb6de161
child 26155 51a30cae2bff
convert: remove restriction on multiple --rev in hg source Multiple --rev args on convert is a new feature, and was initially disabled for all sources. It has since been enabled on git sources, and this patch enables it on mercurial sources.
hgext/convert/hg.py
tests/test-convert-hg-startrev.t
--- a/hgext/convert/hg.py	Fri Sep 04 02:51:57 2015 +0800
+++ b/hgext/convert/hg.py	Thu Sep 03 10:29:42 2015 -0700
@@ -431,9 +431,6 @@
 class mercurial_source(converter_source):
     def __init__(self, ui, path, revs=None):
         converter_source.__init__(self, ui, path, revs)
-        if revs and len(revs) > 1:
-            raise util.Abort(_("mercurial source does not support specifying "
-                               "multiple revisions"))
         self.ignoreerrors = ui.configbool('convert', 'hg.ignoreerrors', False)
         self.ignored = set()
         self.saverev = ui.configbool('convert', 'hg.saverev', False)
@@ -468,7 +465,7 @@
             else:
                 self.keep = util.always
             if revs:
-                self._heads = [self.repo[revs[0]].node()]
+                self._heads = [self.repo[r].node() for r in revs]
             else:
                 self._heads = self.repo.heads()
         else:
--- a/tests/test-convert-hg-startrev.t	Fri Sep 04 02:51:57 2015 +0800
+++ b/tests/test-convert-hg-startrev.t	Thu Sep 03 10:29:42 2015 -0700
@@ -201,4 +201,23 @@
   |
   o  0 "0: add a b f" files: a b f
   
-  $ cd ..
+Convert from specified revs
+
+  $ hg convert --rev 3 --rev 2 source multiplerevs
+  initializing destination multiplerevs repository
+  scanning source...
+  sorting...
+  converting...
+  3 0: add a b f
+  2 1: add c, move f to d
+  1 2: copy e from a, change b
+  0 3: change a
+  $ glog multiplerevs
+  o  3 "3: change a" files: a
+  |
+  | o  2 "2: copy e from a, change b" files: b e
+  | |
+  | o  1 "1: add c, move f to d" files: c d f
+  |/
+  o  0 "0: add a b f" files: a b f
+