convert: attempt to check repo type before checking for tool
authorMatt Mackall <mpm@selenic.com>
Sat, 04 Apr 2009 12:28:13 -0500
changeset 7973 db3a68fd9387
parent 7972 425a30ddfff6
child 7974 a8a719ff150a
convert: attempt to check repo type before checking for tool
hgext/convert/bzr.py
hgext/convert/darcs.py
hgext/convert/monotone.py
hgext/convert/p4.py
hgext/convert/subversion.py
tests/test-convert.out
--- a/hgext/convert/bzr.py	Sat Apr 04 19:43:00 2009 +0200
+++ b/hgext/convert/bzr.py	Sat Apr 04 12:28:13 2009 -0500
@@ -27,15 +27,15 @@
     def __init__(self, ui, path, rev=None):
         super(bzr_source, self).__init__(ui, path, rev=rev)
 
+        if not os.path.exists(os.path.join(path, '.bzr')):
+            raise NoRepo('%s does not look like a Bazaar repo' % path)
+
         try:
             # access bzrlib stuff
             branch
         except NameError:
             raise NoRepo('Bazaar modules could not be loaded')
 
-        if not os.path.exists(os.path.join(path, '.bzr')):
-            raise NoRepo('%s does not look like a Bazaar repo' % path)
-
         path = os.path.abspath(path)
         self.branch = branch.Branch.open(path)
         self.sourcerepo = self.branch.repository
--- a/hgext/convert/darcs.py	Sat Apr 04 19:43:00 2009 +0200
+++ b/hgext/convert/darcs.py	Sat Apr 04 12:28:13 2009 -0500
@@ -24,6 +24,9 @@
 
         # check for _darcs, ElementTree, _darcs/inventory so that we can
         # easily skip test-convert-darcs if ElementTree is not around
+        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
+            raise NoRepo("%s does not look like a darcs repo" % path)
+
         if not os.path.exists(os.path.join(path, '_darcs')):
             raise NoRepo("%s does not look like a darcs repo" % path)
 
@@ -32,9 +35,6 @@
         if ElementTree is None:
             raise util.Abort(_("Python ElementTree module is not available"))
 
-        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
-            raise NoRepo("%s does not look like a darcs repo" % path)
-
         self.path = os.path.realpath(path)
 
         self.lastrev = None
--- a/hgext/convert/monotone.py	Sat Apr 04 19:43:00 2009 +0200
+++ b/hgext/convert/monotone.py	Sat Apr 04 12:28:13 2009 -0500
@@ -14,6 +14,10 @@
         self.ui = ui
         self.path = path
 
+        norepo = NoRepo (_("%s does not look like a monotone repo") % path)
+        if not os.path.exists(os.path.join(path, '_MTN')):
+            raise norepo
+
         # regular expressions for parsing monotone output
         space    = r'\s*'
         name     = r'\s+"((?:\\"|[^"])*)"\s*'
@@ -39,10 +43,6 @@
         self.files = None
         self.dirs  = None
 
-        norepo = NoRepo (_("%s does not look like a monotone repo") % path)
-        if not os.path.exists(path):
-            raise norepo
-
         checktool('mtn', abort=False)
 
         # test if there are any revisions
--- a/hgext/convert/p4.py	Sat Apr 04 19:43:00 2009 +0200
+++ b/hgext/convert/p4.py	Sat Apr 04 12:28:13 2009 -0500
@@ -10,7 +10,7 @@
 from mercurial import util
 from mercurial.i18n import _
 
-from common import commit, converter_source, checktool
+from common import commit, converter_source, checktool, NoRepo
 import marshal
 
 def loaditer(f):
@@ -28,6 +28,9 @@
     def __init__(self, ui, path, rev=None):
         super(p4_source, self).__init__(ui, path, rev=rev)
 
+        if not path.startswith('//'):
+            raise NoRepo('%s does not look like a P4 repo' % path)
+
         checktool('p4', abort=False)
 
         self.p4changes = {}
--- a/hgext/convert/subversion.py	Sat Apr 04 19:43:00 2009 +0200
+++ b/hgext/convert/subversion.py	Sat Apr 04 12:28:13 2009 -0500
@@ -152,6 +152,12 @@
     def __init__(self, ui, url, rev=None):
         super(svn_source, self).__init__(ui, url, rev=rev)
 
+        if not (url.startswith('svn://') or url.startswith('svn+ssh://') or
+                (os.path.exists(url) and
+                 os.path.exists(os.path.join(url, '.svn'))) or
+                 (url.startswith('file://'))):
+            raise NoRepo("%s does not look like a Subversion repo" % url)
+
         try:
             SubversionException
         except NameError:
--- a/tests/test-convert.out	Sat Apr 04 19:43:00 2009 +0200
+++ b/tests/test-convert.out	Sat Apr 04 12:28:13 2009 -0500
@@ -231,11 +231,11 @@
 initializing destination emptydir-hg repository
 emptydir does not look like a CVS checkout
 emptydir does not look like a Git repo
-.../emptydir does not look like a Subversion repo
+emptydir does not look like a Subversion repo
 emptydir is not a local Mercurial repo
 emptydir does not look like a darcs repo
-cannot find required "mtn" tool
+emptydir does not look like a monotone repo
 emptydir does not look like a GNU Arch repo
 emptydir does not look like a Bazaar repo
-cannot find required "p4" tool
+emptydir does not look like a P4 repo
 abort: emptydir: missing or unsupported repository