782
782
:param transport: Transport containing the bzrdir.
783
783
:param _unsupported: private.
785
# Keep initial base since 'transport' may be modified while following
785
787
base = transport.base
787
788
def find_format(transport):
788
789
return transport, BzrDirFormat.find_format(
789
790
transport, _server_formats=_server_formats)
791
792
def redirected(transport, e, redirection_notice):
792
qualified_source = e.get_source_url()
793
relpath = transport.relpath(qualified_source)
794
if not e.target.endswith(relpath):
795
# Not redirected to a branch-format, not a branch
796
raise errors.NotBranchError(path=e.target)
797
target = e.target[:-len(relpath)]
793
redirected_transport = transport._redirected_to(e.source, e.target)
794
if redirected_transport is None:
795
raise errors.NotBranchError(base)
798
796
note('%s is%s redirected to %s',
799
transport.base, e.permanently, target)
800
# Let's try with a new transport
801
# FIXME: If 'transport' has a qualifier, this should
802
# be applied again to the new transport *iff* the
803
# schemes used are the same. Uncomment this code
804
# once the function (and tests) exist.
806
#target = urlutils.copy_url_qualifiers(original, target)
807
return get_transport(target)
797
transport.base, e.permanently, redirected_transport.base)
798
return redirected_transport
810
801
transport, format = do_catching_redirections(find_format,