Rev 723: Support svn+ hack when committing in bound branches. (#150699) in file:///data/jelmer/bzr-svn/0.4/

Jelmer Vernooij jelmer at samba.org
Wed Oct 17 01:14:31 BST 2007


At file:///data/jelmer/bzr-svn/0.4/

------------------------------------------------------------
revno: 723
revision-id: jelmer at samba.org-20071009122742-6225g53fkeloojea
parent: jelmer at samba.org-20071005131929-gr11wakccqjyqcd1
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Tue 2007-10-09 14:27:42 +0200
message:
  Support svn+ hack when committing in bound branches. (#150699)
modified:
  NEWS                           news-20061231030336-h9fhq245ie0de8bs-1
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
  logwalker.py                   logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
  remote.py                      format.py-20060406233823-b6fa009fe35dfde7
  tests/test_transport.py        test_transport.py-20060621232111-xh7xvoblzsrgj79t-1
  transport.py                   transport.py-20060406231150-b3472d06b3a0818d
  tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
=== modified file 'NEWS'
--- a/NEWS	2007-10-02 01:05:30 +0000
+++ b/NEWS	2007-10-09 12:27:42 +0000
@@ -28,6 +28,8 @@
    * 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)

=== modified file 'fetch.py'
--- a/fetch.py	2007-09-23 23:27:45 +0000
+++ b/fetch.py	2007-10-09 12:27:42 +0000
@@ -428,7 +428,7 @@
             # 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

=== modified file 'logwalker.py'
--- a/logwalker.py	2007-09-20 19:28:59 +0000
+++ b/logwalker.py	2007-10-09 12:27:42 +0000
@@ -335,7 +335,7 @@
         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)

=== modified file 'remote.py'
--- a/remote.py	2007-09-17 13:18:46 +0000
+++ b/remote.py	2007-10-09 12:27:42 +0000
@@ -46,7 +46,8 @@
         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):]
@@ -95,7 +96,7 @@
         :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)
 

=== modified file 'tests/test_transport.py'
--- a/tests/test_transport.py	2007-08-28 01:54:14 +0000
+++ b/tests/test_transport.py	2007-10-09 12:27:42 +0000
@@ -167,7 +167,7 @@
         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):

=== modified file 'transport.py'
--- a/transport.py	2007-10-02 01:05:30 +0000
+++ b/transport.py	2007-10-09 12:27:42 +0000
@@ -282,9 +282,16 @@
         self.mutter('svn get-uuid')
         return svn.ra.get_uuid(self._ra)
 
-    @convert_svn_error
-    @needs_busy
     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_svn_repos_root(self):
         if self._root is None:
             self.mutter("svn get-repos-root")
             self._root = svn.ra.get_repos_root(self._ra)
@@ -313,12 +320,13 @@
 
     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())
 
@@ -327,17 +335,17 @@
     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

=== modified file 'tree.py'
--- a/tree.py	2007-08-09 14:54:13 +0000
+++ b/tree.py	2007-10-09 12:27:42 +0000
@@ -68,7 +68,7 @@
         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)




More information about the bazaar-commits mailing list