Add function for setting the branching scheme of a repository.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 30 Jul 2007 22:04:01 +0000 (23:04 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 30 Jul 2007 22:04:01 +0000 (23:04 +0100)
TODO
repository.py
tests/test_repos.py

diff --git a/TODO b/TODO
index 43d0c167352bf8d860333b49a7dcc77987e0f592..65c8d06265ed64f71e33015d57d4ec4f39fbec61 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,3 +1,7 @@
+todo before 0.4:
+- support a 'svn-branching-scheme' command
+- make ListBranchingScheme() reconstructable from a string
+
 todo:
 - BzrDir.create_branch() should set the revision id to NULL_REVISION
 - fix reuse of listbranchingscheme
index bb6622952051d691167a48b6d90725d4ed84d5af..a11cbad4c257a1c52e0ae6522e93076334050c7b 100644 (file)
@@ -254,6 +254,17 @@ class SvnRepository(Repository):
             return None
         return ListBranchingScheme(parse_list_scheme_text(text))
 
+    def set_property_scheme(self, scheme):
+        def done(revision, date, author):
+            pass
+        editor = self.transport.get_commit_editor(
+                "Updating branching scheme for Bazaar.",
+                done, None, False)
+        root = editor.open_root(-1)
+        editor.change_dir_prop(root, SVN_PROP_BZR_BRANCHING_SCHEME, 
+                "".join(map(lambda x: x+"\n", scheme.branch_list)))
+        editor.close()
+
     def _guess_scheme(self, last_revnum, branch_path=None):
         scheme = guess_scheme_from_history(
             self._log.follow_path("", last_revnum), last_revnum, 
index bbea386fea3f7c07250709357c259f8b31a6ec9f..4578990918ff0959ae3b6ac4ee0681804ec19a01 100644 (file)
@@ -800,6 +800,16 @@ class TestSubversionRepositoryWorks(TestCaseWithSubversionRepository):
         self.assertEquals(ListBranchingScheme(["trunk", "branches/*", "branches/tmp/*"]).branch_list,
                           repository.get_scheme().branch_list)
 
+    def test_set_property_scheme(self):
+        repos_url = self.make_client('d', 'dc')
+        repos = Repository.open(repos_url)
+        repos.set_property_scheme(ListBranchingScheme(["bla/*"]))
+        self.client_update("dc")
+        self.assertEquals("bla/*\n", 
+                   self.client_get_prop("dc", SVN_PROP_BZR_BRANCHING_SCHEME))
+        self.assertEquals("Updating branching scheme for Bazaar.", 
+                self.client_log("dc", 1, 1)[1][3])
+
     def test_lookup_revision_id_invalid_uuid(self):
         repos_url = self.make_client('d', 'dc')
         repository = Repository.open("svn+%s" % repos_url)