Rev 298: Add --scheme option to svn-import command. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev

Jelmer Vernooij jelmer at samba.org
Tue Dec 26 00:44:47 GMT 2006


------------------------------------------------------------
revno: 298
revision-id: jelmer at samba.org-20061226004354-6ky4mphocf8qe6cp
parent: jelmer at samba.org-20061226002708-dpl9ryphuyi9i63v
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Tue 2006-12-26 01:43:54 +0100
message:
  Add --scheme option to svn-import command.
modified:
  __init__.py                    __init__.py-20051008155114-eae558e6cf149e1d
  scheme.py                      scheme.py-20060516195850-95181aae6b272f9e
  tests/test_scheme.py           test_scheme.py-20060621221855-va2xabhlxpmc9llx-1
=== modified file '__init__.py'
--- a/__init__.py	2006-12-19 21:23:21 +0000
+++ b/__init__.py	2006-12-26 00:43:54 +0000
@@ -103,14 +103,19 @@
     """
     takes_args = ['url', 'output_dir']
     takes_options = [Option('trees', help='Create working trees'),
-                     Option('shared', help='Create shared repository')]
+                     Option('shared', help='Create shared repository'),
+                     Option('scheme', help='Branching scheme (none, trunk, or trunk-INT)')]
 
     @display_command
-    def run(self, url, output_dir, trees=False, shared=False):
+    def run(self, url, output_dir, trees=False, shared=False, scheme="trunk"):
         from convert import convert_repository
-        from scheme import TrunkBranchingScheme
-        # TODO: support non-trunk branching schemes
-        convert_repository(url, output_dir, TrunkBranchingScheme(), shared, 
+        from scheme import BranchingScheme
+
+        scheme_ = BranchingScheme.find_scheme(scheme)
+        if scheme_ is None:
+            raise BzrError('No such branching scheme %r' % scheme)
+
+        convert_repository(url, output_dir, scheme_, shared, 
                            trees)
 
 

=== modified file 'scheme.py'
--- a/scheme.py	2006-07-30 11:56:36 +0000
+++ b/scheme.py	2006-12-26 00:43:54 +0000
@@ -51,6 +51,22 @@
                 return TrunkBranchingScheme(level=i)
 
         return NoBranchingScheme()
+
+    @staticmethod
+    def find_scheme(name):
+        if name == "trunk":
+            return TrunkBranchingScheme()
+
+        if name.startswith("trunk-"):
+            try:
+                return TrunkBranchingScheme(level=int(name[len("trunk-"):]))
+            except ValueError:
+                return None
+
+        if name == "none":
+            return NoBranchingScheme()
+
+        return None
                 
 
 class TrunkBranchingScheme:

=== modified file 'tests/test_scheme.py'
--- a/tests/test_scheme.py	2006-07-30 11:56:36 +0000
+++ b/tests/test_scheme.py	2006-12-26 00:43:54 +0000
@@ -20,29 +20,67 @@
 from scheme import (ListBranchingScheme, NoBranchingScheme, 
                     BranchingScheme, TrunkBranchingScheme)
 
-class NoScheme(TestCase):
-    def test_is_branch(self):
-        scheme = NoBranchingScheme()
-        self.assertTrue(scheme.is_branch(""))
-        self.assertTrue(scheme.is_branch("/"))
-        self.assertFalse(scheme.is_branch("/foo"))
-        self.assertFalse(scheme.is_branch("/foo/foo"))
-        self.assertFalse(scheme.is_branch("foo/bar"))
-        self.assertFalse(scheme.is_branch("//foo/bar"))
-
-    def test_unprefix(self):
-        scheme = NoBranchingScheme()
-        self.assertEqual(scheme.unprefix(""), ("", ""))
-        self.assertEqual(scheme.unprefix("/"), ("", ""))
-        self.assertEqual(scheme.unprefix("foo/foo"), ("", "foo/foo"))
-        self.assertEqual(scheme.unprefix("/foo/foo"), ("", "foo/foo"))
-
-    def test_guess(self):
+class BranchingSchemeTest(TestCase):
+    def test_guess_empty(self):
         self.assertIsInstance(BranchingScheme.guess_scheme(""), 
                               NoBranchingScheme)
+
+    def test_guess_not_convenience(self):
         self.assertIsInstance(BranchingScheme.guess_scheme("foo"), 
                               NoBranchingScheme)
 
+    def test_find_scheme_no(self):
+        self.assertIsInstance(BranchingScheme.find_scheme("none"),
+                              NoBranchingScheme)
+
+    def test_find_scheme_invalid(self):
+        self.assertIs(None, BranchingScheme.find_scheme("foo"))
+
+    def test_find_scheme_trunk(self):
+        scheme = BranchingScheme.find_scheme("trunk")
+        self.assertIsInstance(scheme, TrunkBranchingScheme)
+        self.assertEqual(0, scheme.level)
+
+    def test_find_scheme_trunk_0(self):
+        scheme = BranchingScheme.find_scheme("trunk-0")
+        self.assertIsInstance(scheme, TrunkBranchingScheme)
+        self.assertEqual(0, scheme.level)
+
+    def test_find_scheme_trunk_2(self):
+        scheme = BranchingScheme.find_scheme("trunk-2")
+        self.assertIsInstance(scheme, TrunkBranchingScheme)
+        self.assertEqual(2, scheme.level)
+
+    def test_find_scheme_trunk_invalid(self):
+        scheme = BranchingScheme.find_scheme("trunk-invalid")
+        self.assertIs(None, scheme)
+
+
+class NoScheme(TestCase):
+    def test_is_branch_empty(self):
+        self.assertTrue(NoBranchingScheme().is_branch(""))
+
+    def test_is_branch_slash(self):
+        self.assertTrue(NoBranchingScheme().is_branch("/"))
+
+    def test_is_branch_dir_slash(self):
+        self.assertFalse(NoBranchingScheme().is_branch("/foo"))
+
+    def test_is_branch_dir_slash_nested(self):
+        self.assertFalse(NoBranchingScheme().is_branch("/foo/foo"))
+
+    def test_is_branch_dir(self):
+        self.assertFalse(NoBranchingScheme().is_branch("foo/bar"))
+
+    def test_is_branch_dir_doubleslash(self):
+        self.assertFalse(NoBranchingScheme().is_branch("//foo/bar"))
+
+    def test_unprefix(self):
+        self.assertEqual(NoBranchingScheme().unprefix(""), ("", ""))
+        self.assertEqual(NoBranchingScheme().unprefix("/"), ("", ""))
+        self.assertEqual(NoBranchingScheme().unprefix("foo/foo"), ("", "foo/foo"))
+        self.assertEqual(NoBranchingScheme().unprefix("/foo/foo"), ("", "foo/foo"))
+
 class ListScheme(TestCase):
     def test_is_branch(self):
         scheme = ListBranchingScheme(["foo", "bar/bloe"])
@@ -121,17 +159,17 @@
     def test_guess(self):
         scheme = BranchingScheme.guess_scheme("trunk") 
         self.assertIsInstance(scheme, TrunkBranchingScheme)
-        self.assertEqual(scheme.level, 0)
+        self.assertEqual(0, scheme.level)
         scheme = BranchingScheme.guess_scheme("branches/foo/bar")
         self.assertIsInstance(scheme, TrunkBranchingScheme)
-        self.assertEqual(scheme.level, 0)
+        self.assertEqual(0, scheme.level)
         scheme = BranchingScheme.guess_scheme("test/branches/foo/bar")
         self.assertIsInstance(scheme, TrunkBranchingScheme)
-        self.assertEqual(scheme.level, 1)
+        self.assertEqual(1, scheme.level)
         scheme = BranchingScheme.guess_scheme("test/bar/branches/foo/bar")
         self.assertIsInstance(scheme, TrunkBranchingScheme)
-        self.assertEqual(scheme.level, 2)
+        self.assertEqual(2, scheme.level)
         scheme = BranchingScheme.guess_scheme("branches/trunk")
         self.assertIsInstance(scheme, TrunkBranchingScheme)
-        self.assertEqual(scheme.level, 0)
+        self.assertEqual(0, scheme.level)
 




More information about the bazaar-commits mailing list