Having chatted a bit about this with Aaron in #bzr, I've got as far as seeing that the code in do_catching_redirections in bzrdir.py to see if the end of the path bzr is being redirected to is the same as the end of the path bzr asked for is a bit screwy.
Maybe transport.get should remember the relpath it was asked for and stash this on the redirect exception. Or something.
Having chatted a bit about this with Aaron in #bzr, I've got as far as seeing that the code in do_catching_ redirections in bzrdir.py to see if the end of the path bzr is being redirected to is the same as the end of the path bzr asked for is a bit screwy.
Maybe transport.get should remember the relpath it was asked for and stash this on the redirect exception. Or something.