hgsubversion plugin no longer loads (2010-10-03)

Create issue
Issue #212 resolved
Russel Winder created an issue

A commit sometime between 2010-09-26 and 2010-10-03 has made the hgsubversion plugin unusable as it will not load.

Running hgview (which then goes on to work) reports:

{{{

|> hgview *** failed to import extension svn from /home/Checkouts/Mercurial/HgSubversion/hgsubversion: 'module' object has no attribute 'api_version'

}}}

whilst trying to pull to a Mercurial repository which is a clone of a Subversion repository leads to things like:

{{{

|> hg pull real URL is https://svn.codehaus.org/groovy/trunk/groovy/modules/native_launcher/ pulling from https://svn.codehaus.org/groovy/trunk/groovy/modules/native_launcher unknown exception encountered, details follow report bug details to http://mercurial.selenic.com/bts/ or mercurial@selenic.com Mercurial Distributed SCM (version 1.4.3) Extensions loaded: rebase, svn, convert Traceback (most recent call last): File "/usr/bin/hg", line 27, in <module> mercurial.dispatch.run() File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 16, in run sys.exit(dispatch(sys.argv[1:])) File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 30, in dispatch return _runcatch(u, args) File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 46, in _runcatch return _dispatch(ui, args) File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 454, in _dispatch return runcommand(lui, repo, cmd, fullargs, ui, options, d) File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 324, in runcommand ret = _runcommand(ui, options, cmd, d) File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 505, in _runcommand return checkargs() File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 459, in checkargs return cmdfunc() File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 453, in <lambda> d = lambda: util.checksignature(func)(ui, *args, cmdoptions) File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 386, in check return func(args, kwargs) File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 116, in wrap util.checksignature(origfn), *args, kwargs) File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 386, in check return func(args, kwargs) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/wrappers.py", line 483, in generic return orig(ui, repo, *args, opts) File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 386, in check return func(args, kwargs) File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 116, in wrap util.checksignature(origfn), *args, kwargs) File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 386, in check return func(args, kwargs) File "/usr/lib/pymodules/python2.6/hgext/rebase.py", line 453, in pullrebase orig(ui, repo, *args, opts) File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 386, in check return func(args, kwargs) File "/usr/lib/pymodules/python2.6/mercurial/commands.py", line 2318, in pull modheads = repo.pull(other, heads=revs, force=opts.get('force')) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnrepo.py", line 48, in wrapper return fn(self, *args, opts) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnrepo.py", line 63, in pull return wrappers.pull(self, remote, heads, force) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/wrappers.py", line 221, in pull svn_url = source.svnurl File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnrepo.py", line 98, in svnurl return self.svn.svn_url File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 150, in get result = self.func(obj) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnrepo.py", line 104, in svn except svnwrap.SubversionConnectionException, e: File "/usr/lib/pymodules/python2.6/mercurial/demandimport.py", line 75, in getattribute self._load() File "/usr/lib/pymodules/python2.6/mercurial/demandimport.py", line 47, in _load mod = _origimport(head, globals, locals) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnwrap/init.py", line 25, in <module> from subvertpy_wrapper import File "/usr/lib/pymodules/python2.6/mercurial/demandimport.py", line 85, in _demandimport return _origimport(name, globals, locals, fromlist) File "/home/Checkouts/Mercurial/HgSubversion/hgsubversion/svnwrap/subvertpy_wrapper.py", line 29, in <module> subversion_version = subvertpy.wc.api_version() AttributeError: 'module' object has no attribute 'api_version'

}}}

Comments (3)

  1. Dan Villiom Podlaski Christiansen

    We recently bumped our version requirement for Subvertpy to 0.7.4 — released last Saturday. Unfortunately, it appears that the code used an API introduced in 0.7.4 before checking that it was present, and this lead to the breakage you saw.

    Could you please try the attached patch before upgrading Subvertpy?

  2. Log in to comment