Rev 1802: More test fixes, add repository to Layout.get_{branches, tags} arguments. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Thu Sep 4 11:15:17 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1802
revision-id: jelmer at samba.org-20080904101515-u0ocn12dye7awxrr
parent: jelmer at samba.org-20080904094003-4tdx6l5fnhve6dip
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Thu 2008-09-04 12:15:15 +0200
message:
More test fixes, add repository to Layout.get_{branches,tags} arguments.
modified:
__init__.py __init__.py-20051008155114-eae558e6cf149e1d
convert.py svn2bzr.py-20051018015439-cb4563bff29e632d
layout.py layout.py-20080323165407-y9qw8nx4oykvoe1k-1
mapping3/__init__.py __init__.py-20080502174630-9324zh25kka98vlw-1
mapping3/scheme.py scheme.py-20060516195850-95181aae6b272f9e
tests/mapping_implementations/test_repository.py test_repository.py-20080902013845-ity7d1ymye69sobm-2
tests/test_fileids.py test_fileids.py-20060622131341-19gyrlgqy8yl2od5-1
=== modified file '__init__.py'
--- a/__init__.py 2008-09-04 08:54:40 +0000
+++ b/__init__.py 2008-09-04 10:15:15 +0000
@@ -189,19 +189,19 @@
InterRepository.register_optimiser(commit.InterToSvnRepository)
-def get_scheme(schemename):
- """Parse scheme identifier and return a branching scheme.
+def get_layout(layoutname):
+ """Parse layout name and return a layout.
- :param schemename: Name of the scheme to retrieve.
+ :param layout: Name of the layout to retrieve.
"""
- if isinstance(schemename, unicode):
- schemename = schemename.encode("ascii")
- from bzrlib.plugins.svn.mapping3.scheme import BranchingScheme
+ if isinstance(layoutname, unicode):
+ layoutname = layoutname.encode("ascii")
+ from bzrlib.plugins.svn.layout import layout_registry
from bzrlib.errors import BzrCommandError
- ret = BranchingScheme.find_scheme(schemename)
+ ret = layout_registry.parse(layoutname)
if ret is None:
- raise BzrCommandError('No such branching scheme %r' % schemename)
+ raise BzrCommandError('No such repository layout %r' % layoutname)
return ret
@@ -218,8 +218,8 @@
Option('all',
help='Convert all revisions, even those not in '
'current branch history (forbids --standalone).'),
- Option('scheme', type=get_scheme,
- help='Branching scheme (none, trunk, etc). '
+ Option('layout', type=get_layout,
+ help='Repository layout (none, trunk, etc). '
'Default: auto.'),
Option('keep',
help="Don't delete branches removed in Subversion."),
@@ -232,13 +232,13 @@
@display_command
def run(self, from_location, to_location=None, trees=False,
- standalone=False, scheme=None, all=False, prefix=None, keep=False,
+ standalone=False, layout=None, all=False, prefix=None, keep=False,
incremental=False):
from bzrlib.bzrdir import BzrDir
from bzrlib.errors import BzrCommandError, NoRepositoryPresent
from bzrlib import osutils, urlutils
from bzrlib.plugins.svn.convert import convert_repository
- from bzrlib.plugins.svn.mapping3 import repository_guess_scheme
+ from bzrlib.plugins.svn.layout import repository_guess_layout
from bzrlib.plugins.svn.repository import SvnRepository
if to_location is None:
@@ -271,18 +271,21 @@
from_repos.lock_read()
try:
- (guessed_scheme, scheme) = repository_guess_scheme(from_repos,
+ (guessed_layout, layout) = repository_guess_layout(from_repos,
from_repos.get_latest_revnum())
if prefix is not None:
prefix = prefix.strip("/") + "/"
- if guessed_scheme.is_branch(prefix):
+ if guessed_layout.is_branch(prefix):
raise BzrCommandError("%s appears to contain a branch. "
"For individual branches, use 'bzr branch'." %
from_location)
-
- self.outf.write("Importing branches with prefix /%s\n" %
- urlutils.unescape_for_display(prefix, self.outf.encoding))
+ elif guessed_layout.is_branch_parent(prefix):
+ self.outf.write("Importing branches with prefix /%s\n" %
+ urlutils.unescape_for_display(prefix, self.outf.encoding))
+ else:
+ raise BzrCommandError("The specified path is inside a branch. "
+ "Specify a different URL or a different repository layout.")
if not isinstance(from_repos, SvnRepository):
raise BzrCommandError(
@@ -294,7 +297,7 @@
return False
return True
- convert_repository(from_repos, to_location, scheme, None,
+ convert_repository(from_repos, to_location, layout,
not standalone, trees, all,
filter_branch=filter_branch,
keep=keep, incremental=incremental)
=== modified file 'convert.py'
--- a/convert.py 2008-08-28 14:41:24 +0000
+++ b/convert.py 2008-09-04 10:15:15 +0000
@@ -112,7 +112,7 @@
return r
-def convert_repository(source_repos, output_url, scheme=None, layout=None,
+def convert_repository(source_repos, output_url, layout=None,
create_shared_repo=True, working_trees=False, all=False,
format=None, filter_branch=None, keep=False,
incremental=False):
@@ -121,7 +121,6 @@
:param source_repos: Subversion repository
:param output_url: URL to write Bazaar repository to.
- :param scheme: Branching scheme to use.
:param layout: Repository layout (object) to use
:param create_shared_repo: Whether to create a shared Bazaar repository
:param working_trees: Whether to create working trees
@@ -129,7 +128,6 @@
branches, should be imported
:param format: Format to use
"""
- from mapping3 import SchemeDerivedLayout, set_branching_scheme
assert not all or create_shared_repo
if format is None:
format = get_rich_root_format()
@@ -148,9 +146,6 @@
if layout is not None:
source_repos.set_layout(layout)
- elif scheme is not None:
- set_branching_scheme(source_repos, scheme)
- layout = SchemeDerivedLayout(source_repos, scheme)
else:
layout = source_repos.get_layout()
=== modified file 'layout.py'
--- a/layout.py 2008-09-04 09:40:03 +0000
+++ b/layout.py 2008-09-04 10:15:15 +0000
@@ -24,7 +24,6 @@
"""Describes a repository layout."""
def __init__(self, repository):
- self.repository = repository
self._config = repository.get_config()
def get_tag_path(self, name, project=""):
@@ -103,14 +102,14 @@
def is_branch_or_tag_parent(self, path, project=None):
return self.is_branch_parent(path, project) or self.is_tag_parent(path, project)
- def get_branches(self, revnum, project="", pb=None):
+ def get_branches(self, repository, revnum, project="", pb=None):
"""Retrieve a list of paths that refer to branches in a specific revision.
:result: Iterator over tuples with (project, branch path)
"""
raise NotImplementedError
- def get_tags(self, revnum, project="", pb=None):
+ def get_tags(self, repository, revnum, project="", pb=None):
"""Retrieve a list of paths that refer to tags in a specific revision.
:result: Iterator over tuples with (project, branch path)
@@ -120,12 +119,8 @@
class TrunkLayout(RepositoryLayout):
- def __init__(self, repository=None):
- self.repository = repository
- if repository is not None:
- self._config = repository.get_config()
- else:
- self._config = None
+ def __init__(self, level=None):
+ self.level = level
def get_tag_path(self, name, project=""):
"""Return the path at which the tag with specified name should be found.
@@ -194,21 +189,21 @@
return path
return urlutils.join(project, path)
- def get_branches(self, revnum, project=None, pb=None):
+ def get_branches(self, repository, revnum, project=None, pb=None):
"""Retrieve a list of paths that refer to branches in a specific revision.
:result: Iterator over tuples with (project, branch path)
"""
- return get_root_paths(self.repository,
+ return get_root_paths(repository,
[self._add_project(x, project) for x in "branches/*", "trunk"],
revnum, self.is_tag, project)
- def get_tags(self, revnum, project=None, pb=None):
+ def get_tags(self, repository, revnum, project=None, pb=None):
"""Retrieve a list of paths that refer to tags in a specific revision.
:result: Iterator over tuples with (project, branch path)
"""
- return get_root_paths(self.repository, [self._add_project("tags/*", project)], revnum, self.is_tag, project)
+ return get_root_paths(repository, [self._add_project("tags/*", project)], revnum, self.is_tag, project)
def __repr__(self):
return "%s()" % self.__class__.__name__
@@ -217,9 +212,9 @@
class RootLayout(RepositoryLayout):
"""Layout where the root of the repository is a branch."""
- def __init__(self, level=None):
- self.level = level
-
+ def __init__(self):
+ pass
+
def get_tag_path(self, name, project=""):
"""Return the path at which the tag with specified name should be found.
@@ -252,7 +247,7 @@
:param project: Optional name of the project the branch is for. Can include slashes.
:return: Path of the branch.
"""
- return None
+ raise AssertionError("can't created branches in this layout")
def parse(self, path):
"""Parse a path.
@@ -267,14 +262,14 @@
:result: Iterator over tuples with (project, branch path)
"""
- return []
+ raise NotImplementedError
def get_tags(self, revnum, project=None, pb=None):
"""Retrieve a list of paths that refer to tags in a specific revision.
:result: Iterator over tuples with (project, branch path)
"""
- return []
+ raise NotImplementedError
def __repr__(self):
return "%s()" % self.__class__.__name__
@@ -361,3 +356,5 @@
yield "", bp, bp.split("/")[-1]
+layout_registry = registry.Registry()
+
=== modified file 'mapping3/__init__.py'
--- a/mapping3/__init__.py 2008-09-04 09:40:03 +0000
+++ b/mapping3/__init__.py 2008-09-04 10:15:15 +0000
@@ -21,6 +21,7 @@
from bzrlib.plugins.svn.layout import RepositoryLayout, get_root_paths
from bzrlib.plugins.svn.mapping3.scheme import (BranchingScheme, guess_scheme_from_branch_path,
guess_scheme_from_history, ListBranchingScheme,
+ scheme_from_layout,
parse_list_scheme_text, NoBranchingScheme,
TrunkBranchingScheme, ListBranchingScheme)
from bzrlib.plugins.svn.ra import DIRENT_KIND
@@ -47,11 +48,11 @@
def get_tag_name(self, path, project=None):
return path.split("/")[-1]
- def get_branches(self, revnum, project=None, pb=None):
- return get_root_paths(self.repository, self.scheme.branch_list, revnum, self.scheme.is_branch, project, pb)
+ def get_branches(self, repository, revnum, project=None, pb=None):
+ return get_root_paths(repository, self.scheme.branch_list, revnum, self.scheme.is_branch, project, pb)
- def get_tags(self, revnum, project=None, pb=None):
- return get_root_paths(self.repository, self.scheme.tag_list, revnum, self.scheme.is_tag, project, pb)
+ def get_tags(self, repository, revnum, project=None, pb=None):
+ return get_root_paths(repository, self.scheme.tag_list, revnum, self.scheme.is_tag, project, pb)
def get_tag_path(self, name, project=""):
return self.scheme.get_tag_path(name, project)
@@ -59,9 +60,6 @@
def get_branch_path(self, name, project=""):
return self.scheme.get_branch_path(name, project)
- def get_branch_path(self, name, project=""):
- return self.scheme.get_branch_path(name, project)
-
def is_branch_parent(self, path, project=None):
# Na, na, na...
return self.scheme.is_branch_parent(path, project)
=== modified file 'mapping3/scheme.py'
--- a/mapping3/scheme.py 2008-09-01 13:22:31 +0000
+++ b/mapping3/scheme.py 2008-09-04 10:15:15 +0000
@@ -20,6 +20,7 @@
from bzrlib.trace import mutter
from base64 import urlsafe_b64decode, urlsafe_b64encode
+from bzrlib.plugins.svn.layout import TrunkLayout, RootLayout
from bzrlib.plugins.svn.errors import InvalidSvnBranchPath
from bzrlib.plugins.svn import properties
import bz2
@@ -538,9 +539,11 @@
def scheme_from_layout(layout):
if isinstance(layout, TrunkLayout):
- return TrunkBranchingScheme()
+ return TrunkBranchingScheme(layout.level or 0)
if isinstance(layout, RootLayout):
return NoBranchingScheme()
+ # FIXME: Handle CustomLayout
+ # FIXME: What about WildcardLayout
return TrunkBranchingScheme()
=== modified file 'tests/mapping_implementations/test_repository.py'
--- a/tests/mapping_implementations/test_repository.py 2008-09-04 09:40:03 +0000
+++ b/tests/mapping_implementations/test_repository.py 2008-09-04 10:15:15 +0000
@@ -25,6 +25,7 @@
from bzrlib.tests import TestCase, TestSkipped, TestNotApplicable
from bzrlib.plugins.svn import format, ra
+from bzrlib.plugins.svn.layout import TrunkLayout, RootLayout
from bzrlib.plugins.svn.mapping import mapping_registry
from bzrlib.plugins.svn.tests import SubversionTestCase
=== modified file 'tests/test_fileids.py'
--- a/tests/test_fileids.py 2008-09-04 09:40:03 +0000
+++ b/tests/test_fileids.py 2008-09-04 10:15:15 +0000
@@ -22,6 +22,7 @@
from bzrlib.tests import TestCase
from bzrlib.plugins.svn.fileids import simple_apply_changes
+from bzrlib.plugins.svn.layout import TrunkLayout, RootLayout
from bzrlib.plugins.svn.tests import SubversionTestCase
class MockRepo(object):
@@ -180,7 +181,7 @@
class TestFileMapping(TestCase):
def setUp(self):
- self.generate_file_id = lambda uuid, revnum, bp, ip: hash((uuid, revnum, bp, ip))
+ self.generate_file_id = lambda uuid, revnum, bp, ip: "%d@%s:%s:%s" % (uuid, revnum, bp, ip)
def apply_mappings(self, mappings, find_children=None, renames={}):
map = {}
@@ -270,13 +271,13 @@
self.repos = Repository.open(self.repos_url)
def test_empty(self):
- self.repos.set_layout(RootLayout(0))
+ self.repos.set_layout(RootLayout())
self.mapping = self.repos.get_mapping()
self.assertEqual({"": (self.mapping.generate_file_id(self.repos.uuid, 0, "", u""), self.repos.generate_revision_id(0, "", self.mapping))},
self.repos.get_fileid_map(0, "", self.mapping))
def test_empty_trunk(self):
- self.repos.set_layout(RootLayout(0))
+ self.repos.set_layout(TrunkLayout(0))
self.mapping = self.repos.get_mapping()
dc = self.get_commit_editor(self.repos_url)
dc.add_dir("trunk")
More information about the bazaar-commits
mailing list