convert: display all errors if we couldn't open the source repo
This should give the user a better hint of what's going wrong.
Improve some error messages. In particular, mention "CVS checkout" instead
of "CVS repo".
Fixes
issue822 and
issue826.
--- a/hgext/convert/__init__.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/__init__.py Fri Nov 09 20:21:35 2007 -0200
@@ -32,12 +32,16 @@
]
def convertsource(ui, path, type, rev):
+ exceptions = []
for name, source in source_converters:
try:
if not type or name == type:
return source(ui, path, rev)
except NoRepo, inst:
- ui.note(_("convert: %s\n") % inst)
+ exceptions.append(inst)
+ if not ui.quiet:
+ for inst in exceptions:
+ ui.write(_("%s\n") % inst)
raise util.Abort('%s: unknown repository type' % path)
def convertsink(ui, path, type):
--- a/hgext/convert/cvs.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/cvs.py Fri Nov 09 20:21:35 2007 -0200
@@ -11,7 +11,7 @@
cvs = os.path.join(path, "CVS")
if not os.path.exists(cvs):
- raise NoRepo("couldn't open CVS repo %s" % path)
+ raise NoRepo("%s does not look like a CVS checkout" % path)
self.changeset = {}
self.files = {}
--- a/hgext/convert/darcs.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/darcs.py Fri Nov 09 20:21:35 2007 -0200
@@ -24,13 +24,13 @@
# 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')):
- raise NoRepo("couldn't open darcs repo %s" % path)
+ raise NoRepo("%s does not look like a darcs repo" % path)
if ElementTree is None:
raise util.Abort(_("Python ElementTree module is not available"))
if not os.path.exists(os.path.join(path, '_darcs', 'inventory')):
- raise NoRepo("couldn't open darcs repo %s" % path)
+ raise NoRepo("%s does not look like a darcs repo" % path)
self.path = os.path.realpath(path)
--- a/hgext/convert/git.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/git.py Fri Nov 09 20:21:35 2007 -0200
@@ -30,7 +30,7 @@
if os.path.isdir(path + "/.git"):
path += "/.git"
if not os.path.exists(path + "/objects"):
- raise NoRepo("couldn't open GIT repo %s" % path)
+ raise NoRepo("%s does not look like a Git repo" % path)
self.path = path
def getheads(self):
--- a/hgext/convert/hg.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/hg.py Fri Nov 09 20:21:35 2007 -0200
@@ -190,7 +190,7 @@
self.repo.heads()
except hg.RepoError:
ui.print_exc()
- raise NoRepo("could not open hg repo %s as source" % path)
+ raise NoRepo("%s does not look like a Mercurial repo" % path)
self.lastrev = None
self.lastctx = None
self._changescache = None
--- a/hgext/convert/subversion.py Fri Nov 09 20:21:35 2007 -0200
+++ b/hgext/convert/subversion.py Fri Nov 09 20:21:35 2007 -0200
@@ -102,7 +102,7 @@
try:
SubversionException
except NameError:
- raise NoRepo('subversion python bindings could not be loaded')
+ raise NoRepo('Subversion python bindings could not be loaded')
self.encoding = locale.getpreferredencoding()
self.lastrevs = {}
@@ -131,7 +131,7 @@
self.uuid = svn.ra.get_uuid(self.ra).decode(self.encoding)
except SubversionException, e:
ui.print_exc()
- raise NoRepo("couldn't open SVN repo %s" % self.url)
+ raise NoRepo("%s does not look like a Subversion repo" % self.url)
if rev:
try: