* Give proper warning message when running 'bzr svn-import' on
something that is not a Subversion repository.
+ * Support svn+ hack when committing in bound branches. (#150699)
+
DOCUMENTATION
* Add simple FAQ file. (#144388)
# Nothing to fetch
return
- repos_root = self.source.transport.get_repos_root()
+ repos_root = self.source.transport.get_svn_repos_root()
prev_revid = None
transport = self.source.transport
edit, baton = svn.delta.make_editor(editor, pool)
old_base = transport.base
try:
- root_repos = transport.get_repos_root()
+ root_repos = transport.get_svn_repos_root()
transport.reparent(urlutils.join(root_repos, path))
reporter = transport.do_update(revnum, True, edit, baton, pool)
reporter.set_path("", revnum, True, None, pool)
self.root_transport = _transport
svn_url = bzr_to_svn_url(self.root_transport.base)
- self.svn_root_url = _transport.get_repos_root()
+ self.svn_root_url = _transport.get_svn_repos_root()
+ self.root_url = _transport.get_repos_root()
assert svn_url.startswith(self.svn_root_url)
self.branch_path = svn_url[len(self.svn_root_url):]
:return: instance of SvnRepository.
"""
transport = self.root_transport
- if self.svn_root_url != transport.base:
+ if self.root_url != transport.base:
transport = transport.clone_root()
return SvnRepository(self, transport, self.branch_path)
self.client_commit("dc", "Bla")
t = SvnRaTransport("%s/dir" % repos_url)
- root = t.get_repos_root()
+ root = t.get_svn_repos_root()
self.assertEqual(repos_url, root)
def test_local_abspath(self):
self.mutter('svn get-uuid')
return svn.ra.get_uuid(self._ra)
+ def get_repos_root(self):
+ root = self.get_svn_repos_root()
+ if (self.base.startswith("svn+http:") or
+ self.base.startswith("svn+https:")):
+ return "svn+%s" % root
+ return root
+
@convert_svn_error
@needs_busy
- def get_repos_root(self):
+ def get_svn_repos_root(self):
if self._root is None:
self.mutter("svn get-repos-root")
self._root = svn.ra.get_repos_root(self._ra)
def _open_real_transport(self):
if self._backing_url != self.svn_url:
- self.reparent(self.svn_url)
+ self.reparent(self.base)
assert self._backing_url == self.svn_url
def reparent_root(self):
if self._is_http_transport():
- self.svn_url = self.base = self.get_repos_root()
+ self.svn_url = self.get_svn_repos_root()
+ self.base = self.get_repos_root()
else:
self.reparent(self.get_repos_root())
def reparent(self, url):
url = url.rstrip("/")
self.base = url
- self.svn_url = url
- if url == self._backing_url:
+ self.svn_url = bzr_to_svn_url(url)
+ if self.svn_url == self._backing_url:
return
if hasattr(svn.ra, 'reparent'):
self.mutter('svn reparent %r' % url)
- svn.ra.reparent(self._ra, url, self.pool)
+ svn.ra.reparent(self._ra, self.svn_url, self.pool)
else:
self.mutter('svn reparent (reconnect) %r' % url)
self._ra = svn.client.open_ra_session(self.svn_url.encode('utf8'),
self._client, self.pool)
- self._backing_url = url
+ self._backing_url = self.svn_url
@convert_svn_error
@needs_busy
self.editor = TreeBuildEditor(self, pool)
self.file_data = {}
editor, baton = svn.delta.make_editor(self.editor, pool)
- root_repos = repository.transport.get_repos_root()
+ root_repos = repository.transport.get_svn_repos_root()
reporter = repository.transport.do_switch(
self.revnum, True,
urlutils.join(root_repos, self.branch_path), editor, baton, pool)