Mercurial > hg > mercurial-crew-with-dirclash
diff hgext/convert/subversion.py @ 4759:95cbb6b74790
convert: activate subversion engine
Fail gracefully if the subversion python bindings are not installed.
Support --rev option to convert as well as URL@rev.
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Sun, 01 Jul 2007 20:30:04 -0700 |
parents | b6a1f2c46c6c |
children | 81b170c41986 |
line wrap: on
line diff
--- a/hgext/convert/subversion.py +++ b/hgext/convert/subversion.py @@ -11,15 +11,19 @@ from mercurial import util # e.g. SVN 1.5 or backports. Thanks to the bzr folks for enhancing # these bindings. -from svn.core import SubversionException, Pool -import svn.core -import svn.ra -import svn.delta -import svn -import transport from cStringIO import StringIO -from common import NoRepo, commit, converter_source, recode, nocommitmsg +from common import NoRepo, commit, converter_source + +try: + from svn.core import SubversionException, Pool + import svn.core + import svn.ra + import svn.delta + import svn + import transport +except ImportError: + pass class CompatibilityException(Exception): pass @@ -74,16 +78,29 @@ class svn_paths(object): # SVN conversion code stolen from bzr-svn and tailor class convert_svn(converter_source): - def __init__(self, ui, url): + def __init__(self, ui, url, rev=None): + try: + SubversionException + except NameError: + msg = 'subversion python bindings could not be loaded\n' + ui.warn(msg) + raise NoRepo(msg) + self.ui = ui self.encoding = locale.getpreferredencoding() + latest = None + if rev: + try: + latest = int(rev) + except ValueError: + raise util.Abort('svn: revision %s is not an integer' % rev) try: # Support file://path@rev syntax. Useful e.g. to convert # deleted branches. url, latest = url.rsplit("@", 1) latest = int(latest) except ValueError, e: - latest = None + pass self.url = url self.encoding = 'UTF-8' # Subversion is always nominal UTF-8 try: @@ -368,7 +385,7 @@ class convert_svn(converter_source): # '2007-01-04T17:35:00.902377Z' date = util.parsedate(date[:18] + " UTC", ["%Y-%m-%dT%H:%M:%S"]) - log = message and self.recode(message) or nocommitmsg + log = message and self.recode(message) author = author and self.recode(author) or '' cset = commit(author=author, @@ -506,6 +523,3 @@ class convert_svn(converter_source): self.reparent(self.module) return [path + "/" + c for c in children] - - def recode(self, s): - return recode(self.encoding, s)