Using a highly experimental patch (i.e. I just put it together a few minutes ago for this very bug) to use cgitb for tracebacks, I get this:
naesten@hydrogen:~/.emacs/dvc% ~/hacking/bzr.dev/bzr -Derror pull
Unable to load plugin 'gtk'. It requested API version (1, 15, 0) of module <module 'bzrlib' from '/home/naesten/hacking/bzr.dev/bzrlib/__init__.pyc'> but the minimum exported version is (1, 17, 0), and the maximum is (1, 18, 0)
Using saved parent location: http://bzr.xsteve.at/dvc/
bzr: ERROR: bzrlib.errors.TransportError: Transport error: Server refuses to fulfill the request (403 Forbidden) for http://bzr.xsteve.at/dvc/
<class 'bzrlib.errors.TransportError'>
Python 2.5.4: /usr/bin/python
Wed Jul 15 16:23:06 2009
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/home/naesten/hacking/bzr.dev/bzrlib/commands.py in exception_to_return_code(the_callable=<function run_bzr at 0xb79df41c>, *args=([u'-Derror', u'pull'],), **kwargs={})
833 """
834 try:
835 return the_callable(*args, **kwargs)
836 except (KeyboardInterrupt, Exception), e:
837 # used to handle AssertionError and KeyboardInterrupt
the_callable = <function run_bzr at 0xb79df41c>
args = ([u'-Derror', u'pull'],)
kwargs = {}
/home/naesten/hacking/bzr.dev/bzrlib/commands.py in run_bzr(argv=[])
1028 ret = apply_coveraged(opt_coverage_dir, run, *run_argv)
1029 else:
1030 ret = run(*run_argv)
1031 if 'memory' in debug.debug_flags:
1032 trace.debug_memory('Process status after command:', short=False)
ret undefined
run = <bound method cmd_pull.run_argv_aliases of <bzrlib.builtins.cmd_pull object at 0xb78c3bec>>
run_argv = [[], None]
/home/naesten/hacking/bzr.dev/bzrlib/commands.py in run_argv_aliases(self=<bzrlib.builtins.cmd_pull object at 0xb78c3bec>, argv=[], alias_argv=None)
645 self._setup_outf()
646
647 return self.run(**all_cmd_args)
648
649 def run(self):
self = <bzrlib.builtins.cmd_pull object at 0xb78c3bec>
self.run = <bound method cmd_pull.run of <bzrlib.builtins.cmd_pull object at 0xb78c3bec>>
all_cmd_args = {'verbose': False}
/home/naesten/hacking/bzr.dev/bzrlib/builtins.py in run(self=<bzrlib.builtins.cmd_pull object at 0xb78c3bec>, location=u'http://bzr.xsteve.at/dvc/', remember=False, overwrite=False, revision=None, verbose=False, directory=u'.', local=False)
991 else:
992 branch_from = Branch.open(location,
993 possible_transports=possible_transports)
994
995 if branch_to.get_parent() is None or remember:
possible_transports = [<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>]
/home/naesten/hacking/bzr.dev/bzrlib/branch.py in open(base=u'http://bzr.xsteve.at/dvc/', _unsupported=False, possible_transports=[<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>])
157 """
158 control = bzrdir.BzrDir.open(base, _unsupported,
159 possible_transports=possible_transports)
160 return control.open_branch(_unsupported)
161
possible_transports = [<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>]
/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py in open(base=u'http://bzr.xsteve.at/dvc/', _unsupported=False, possible_transports=[<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>])
834 """
835 t = get_transport(base, possible_transports=possible_transports)
836 return BzrDir.open_from_transport(t, _unsupported=_unsupported)
837
838 @staticmethod
global BzrDir = <class 'bzrlib.bzrdir.BzrDir'>
BzrDir.open_from_transport = <function open_from_transport at 0xb78345dc>
t = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
_unsupported = False
/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py in open_from_transport(transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>, _unsupported=False, _server_formats=True)
864 transport, format = do_catching_redirections(find_format,
865 transport,
866 redirected)
867 except errors.TooManyRedirections:
868 raise errors.NotBranchError(base)
redirected = <function redirected at 0x945625c>
/home/naesten/hacking/bzr.dev/bzrlib/transport/__init__.py in do_catching_redirections(action=<function find_format at 0x9456294>, transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>, redirected=<function redirected at 0x945625c>)
1640 for redirections in range(MAX_REDIRECTIONS):
1641 try:
1642 return action(transport)
1643 except errors.RedirectRequested, e:
1644 redirection_notice = '%s is%s redirected to %s' % (
action = <function find_format at 0x9456294>
transport = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py in find_format(transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>)
851 def find_format(transport):
852 return transport, BzrDirFormat.find_format(
853 transport, _server_formats=_server_formats)
854
855 def redirected(transport, e, redirection_notice):
transport = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
_server_formats = True
/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py in find_format(klass=<class 'bzrlib.bzrdir.BzrDirFormat'>, transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>, _server_formats=True)
1782 for format in formats:
1783 try:
1784 return format.probe_transport(transport)
1785 except errors.NotBranchError:
1786 # this format does not find a control dir here.
format = <class 'bzrlib.plugins.svn.format.SvnRemoteFormat'>
format.probe_transport = <bound method type.probe_transport of <class 'bzrlib.plugins.svn.format.SvnRemoteFormat'>>
transport = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
/home/naesten/.bazaar/plugins/svn/format.py in probe_transport(klass=<class 'bzrlib.plugins.svn.format.SvnRemoteFormat'>, transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>)
107 import subvertpy
108 try:
109 transport = get_svn_ra_transport(transport)
110 except subvertpy.SubversionException, (msg, num):
111 if num == subvertpy.ERR_RA_DAV_NOT_VCC:
transport = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
get_svn_ra_transport = <function get_svn_ra_transport at 0x961a5dc>
/home/naesten/.bazaar/plugins/svn/transport.py in get_svn_ra_transport(bzr_transport=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>)
101 req = Request('OPTIONS', url, accepted_errors=[200])
102 req.follow_redirections = True
103 resp = bzr_transport._perform(req)
104 dav_entries = list(itertools.chain(*[entry.split(",") for entry in resp.headers.getheaders('DAV')]))
105 if not "version-control" in dav_entries:
resp undefined
bzr_transport = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
bzr_transport._perform = <bound method HttpTransport_urllib._perform of <...pTransport_urllib url=http://bzr.xsteve.at/dvc/>>
req = <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>
/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib.py in _perform(self=<bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>, request=<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>)
77 print 'perform: %s base: %s, url: %s' % (request.method, self.base,
78 request.get_full_url())
79 response = self._opener.open(request)
80 if self._get_connection() is not request.connection:
81 # First connection or reconnection
response undefined
self = <bzrlib.transport.http._urllib.HttpTransport_urllib url=http://bzr.xsteve.at/dvc/>
self._opener = <bzrlib.transport.http._urllib2_wrappers.Opener object at 0x94ddf8c>
self._opener.open = <bound method OpenerDirector.open of <urllib2.OpenerDirector instance at 0x94e7b6c>>
request = <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>
/usr/lib/python2.5/urllib2.py in open(self=<urllib2.OpenerDirector instance at 0x94e7b6c>, fullurl=<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, data=None)
385 for processor in self.process_response.get(protocol, []):
386 meth = getattr(processor, meth_name)
387 response = meth(req, response)
388
389 return response
response = <addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>
meth = <bound method HTTPErrorProcessor.http_response o...appers.HTTPErrorProcessor instance at 0x94e7dcc>>
req = <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>
/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib2_wrappers.py in http_response(self=<bzrlib.transport.http._urllib2_wrappers.HTTPErrorProcessor instance at 0x94e7dcc>, request=<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, response=<addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>)
1529 if code not in accepted_errors:
1530 response = self.parent.error('http', request, response,
1531 code, msg, hdrs)
1532 return response
1533
code = 403
msg = 'Forbidden'
hdrs = <httplib.HTTPMessage instance at 0x962190c>
/usr/lib/python2.5/urllib2.py in error(self=<urllib2.OpenerDirector instance at 0x94e7b6c>, proto=403, *args=({301: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 302: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 303: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 307: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 401: [<bzrlib.transport.http._urllib2_wrappers.HTTPNegotiateAuthHandler instance at 0x94e7aec>, <bzrlib.transport.http._urllib2_wrappers.HTTPDigestAuthHandler instance at 0x94e7aac>, <bzrlib.transport.http._urllib2_wrappers.HTTPBasicAuthHandler instance at 0x94e7acc>], 407: [<bzrlib.transport.http._urllib2_wrappers.ProxyNegotiateAuthHandler instance at 0x94e7b4c>, <bzrlib.transport.http._urllib2_wrappers.ProxyDigestAuthHandler instance at 0x94e7b2c>, <bzrlib.transport.http._urllib2_wrappers.ProxyBasicAuthHandler instance at 0x94e7b0c>], 'default': [<bzrlib.transport.http._urllib2_wrappers.HTTPDefaultErrorHandler instance at 0x94e7e8c>]}, 'default', 'http_error_default', <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, <addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>, 403, 'Forbidden', <httplib.HTTPMessage instance at 0x962190c>))
423 if http_err:
424 args = (dict, 'default', 'http_error_default') + orig_args
425 return self._call_chain(*args)
426
427 # XXX probably also want an abstract factory that knows when it makes
self = <urllib2.OpenerDirector instance at 0x94e7b6c>
self._call_chain = <bound method OpenerDirector._call_chain of <urllib2.OpenerDirector instance at 0x94e7b6c>>
args = ({301: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 302: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 303: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 307: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 401: [<bzrlib.transport.http._urllib2_wrappers.HTTPNegotiateAuthHandler instance at 0x94e7aec>, <bzrlib.transport.http._urllib2_wrappers.HTTPDigestAuthHandler instance at 0x94e7aac>, <bzrlib.transport.http._urllib2_wrappers.HTTPBasicAuthHandler instance at 0x94e7acc>], 407: [<bzrlib.transport.http._urllib2_wrappers.ProxyNegotiateAuthHandler instance at 0x94e7b4c>, <bzrlib.transport.http._urllib2_wrappers.ProxyDigestAuthHandler instance at 0x94e7b2c>, <bzrlib.transport.http._urllib2_wrappers.ProxyBasicAuthHandler instance at 0x94e7b0c>], 'default': [<bzrlib.transport.http._urllib2_wrappers.HTTPDefaultErrorHandler instance at 0x94e7e8c>]}, 'default', 'http_error_default', <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, <addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>, 403, 'Forbidden', <httplib.HTTPMessage instance at 0x962190c>)
/usr/lib/python2.5/urllib2.py in _call_chain(self=<urllib2.OpenerDirector instance at 0x94e7b6c>, chain={301: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 302: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 303: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 307: [<bzrlib.transport.http._urllib2_wrappers.HTTPRedirectHandler instance at 0x94e7d8c>], 401: [<bzrlib.transport.http._urllib2_wrappers.HTTPNegotiateAuthHandler instance at 0x94e7aec>, <bzrlib.transport.http._urllib2_wrappers.HTTPDigestAuthHandler instance at 0x94e7aac>, <bzrlib.transport.http._urllib2_wrappers.HTTPBasicAuthHandler instance at 0x94e7acc>], 407: [<bzrlib.transport.http._urllib2_wrappers.ProxyNegotiateAuthHandler instance at 0x94e7b4c>, <bzrlib.transport.http._urllib2_wrappers.ProxyDigestAuthHandler instance at 0x94e7b2c>, <bzrlib.transport.http._urllib2_wrappers.ProxyBasicAuthHandler instance at 0x94e7b0c>], 'default': [<bzrlib.transport.http._urllib2_wrappers.HTTPDefaultErrorHandler instance at 0x94e7e8c>]}, kind='default', meth_name='http_error_default', *args=(<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, <addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>, 403, 'Forbidden', <httplib.HTTPMessage instance at 0x962190c>))
358 func = getattr(handler, meth_name)
359
360 result = func(*args)
361 if result is not None:
362 return result
result undefined
func = <bound method HTTPDefaultErrorHandler.http_error...s.HTTPDefaultErrorHandler instance at 0x94e7e8c>>
args = (<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, <addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>, 403, 'Forbidden', <httplib.HTTPMessage instance at 0x962190c>)
/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib2_wrappers.py in http_error_default(self=<bzrlib.transport.http._urllib2_wrappers.HTTPDefaultErrorHandler instance at 0x94e7e8c>, req=<bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>, fp=<addinfourl at 157424076 whose fp = <socket._fileobject object at 0x961fc6c>>, code=403, msg='Forbidden', hdrs=<httplib.HTTPMessage instance at 0x962190c>)
1542 raise errors.TransportError(
1543 'Server refuses to fulfill the request (403 Forbidden)'
1544 ' for %s' % req.get_full_url())
1545 else:
1546 raise errors.InvalidHttpResponse(req.get_full_url(),
req = <bzrlib.transport.http._urllib2_wrappers.Request instance at 0x961424c>
req.get_full_url = <bound method Request.get_full_url of <bzrlib.tr..._urllib2_wrappers.Request instance at 0x961424c>>
<class 'bzrlib.errors.TransportError'>: Transport error: Server refuses to fulfill the request (403 Forbidden) for http://bzr.xsteve.at/dvc/
__class__ = <class 'bzrlib.errors.TransportError'>
__delattr__ = <method-wrapper '__delattr__' of TransportError object at 0x961bd9c>
__dict__ = {'_preformatted_string': None, 'msg': 'Server refuses to fulfill the request (403 Forbidden) for http://bzr.xsteve.at/dvc/', 'orig_error': ''}
__doc__ = None
__eq__ = <bound method TransportError.__eq__ of Transport... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
__getattribute__ = <method-wrapper '__getattribute__' of TransportError object at 0x961bd9c>
__getitem__ = <method-wrapper '__getitem__' of TransportError object at 0x961bd9c>
__getslice__ = <method-wrapper '__getslice__' of TransportError object at 0x961bd9c>
__hash__ = <method-wrapper '__hash__' of TransportError object at 0x961bd9c>
__init__ = <bound method TransportError.__init__ of Transpo... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
__module__ = 'bzrlib.errors'
__new__ = <built-in method __new__ of type object at 0x8144400>
__reduce__ = <built-in method __reduce__ of TransportError object at 0x961bd9c>
__reduce_ex__ = <built-in method __reduce_ex__ of TransportError object at 0x961bd9c>
__repr__ = <bound method TransportError.__repr__ of Transpo... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
__setattr__ = <method-wrapper '__setattr__' of TransportError object at 0x961bd9c>
__setstate__ = <built-in method __setstate__ of TransportError object at 0x961bd9c>
__str__ = <bound method TransportError.__str__ of Transpor... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
__unicode__ = <bound method TransportError.__unicode__ of Tran... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
__weakref__ = None
_fmt = 'Transport error: %(msg)s %(orig_error)s'
_format = <bound method TransportError._format of Transpor... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
_get_format_string = <bound method TransportError._get_format_string ... (403 Forbidden) for http://bzr.xsteve.at/dvc/ )>
_preformatted_string = None
args = ()
internal_error = False
message = ''
msg = 'Server refuses to fulfill the request (403 Forbidden) for http://bzr.xsteve.at/dvc/'
orig_error = ''
The above is a description of an error in a Python program. Here is
the original traceback:
Traceback (most recent call last):
File "/home/naesten/hacking/bzr.dev/bzrlib/commands.py", line 835, in exception_to_return_code
return the_callable(*args, **kwargs)
File "/home/naesten/hacking/bzr.dev/bzrlib/commands.py", line 1030, in run_bzr
ret = run(*run_argv)
File "/home/naesten/hacking/bzr.dev/bzrlib/commands.py", line 647, in run_argv_aliases
return self.run(**all_cmd_args)
File "/home/naesten/hacking/bzr.dev/bzrlib/builtins.py", line 993, in run
possible_transports=possible_transports)
File "/home/naesten/hacking/bzr.dev/bzrlib/branch.py", line 159, in open
possible_transports=possible_transports)
File "/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py", line 836, in open
return BzrDir.open_from_transport(t, _unsupported=_unsupported)
File "/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py", line 866, in open_from_transport
redirected)
File "/home/naesten/hacking/bzr.dev/bzrlib/transport/__init__.py", line 1642, in do_catching_redirections
return action(transport)
File "/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py", line 853, in find_format
transport, _server_formats=_server_formats)
File "/home/naesten/hacking/bzr.dev/bzrlib/bzrdir.py", line 1784, in find_format
return format.probe_transport(transport)
File "/home/naesten/.bazaar/plugins/svn/format.py", line 109, in probe_transport
transport = get_svn_ra_transport(transport)
File "/home/naesten/.bazaar/plugins/svn/transport.py", line 103, in get_svn_ra_transport
resp = bzr_transport._perform(req)
File "/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib.py", line 79, in _perform
response = self._opener.open(request)
File "/usr/lib/python2.5/urllib2.py", line 387, in open
response = meth(req, response)
File "/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib2_wrappers.py", line 1531, in http_response
code, msg, hdrs)
File "/usr/lib/python2.5/urllib2.py", line 425, in error
return self._call_chain(*args)
File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain
result = func(*args)
File "/home/naesten/hacking/bzr.dev/bzrlib/transport/http/_urllib2_wrappers.py", line 1544, in http_error_default
' for %s' % req.get_full_url())
TransportError: Transport error: Server refuses to fulfill the request (403 Forbidden) for http://bzr.xsteve.at/dvc/
and yes, this works fine with --no-plugins:
naesten@hydrogen:~/.emacs/dvc% ~/hacking/bzr.dev/bzr -Derror --no-plugins pull
Using saved parent location: http://bzr.xsteve.at/dvc/
No revisions to pull.