Rev 2218: Simplify mappings. in file:///data/jelmer/bzr-svn/mappings/
Jelmer Vernooij
jelmer at samba.org
Sun Dec 7 18:05:44 GMT 2008
At file:///data/jelmer/bzr-svn/mappings/
------------------------------------------------------------
revno: 2218
revision-id: jelmer at samba.org-20081207180541-evoqr8zzp8kvh4eq
parent: jelmer at samba.org-20081207061059-ldbljuldbmtgugmm
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: mappings
timestamp: Sun 2008-12-07 19:05:41 +0100
message:
Simplify mappings.
modified:
__init__.py __init__.py-20051008155114-eae558e6cf149e1d
logwalker.py logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
mapping3/__init__.py __init__.py-20080502174630-9324zh25kka98vlw-1
mapping4.py mapping4.py-20080827182338-y4xzpsf43vyiwcir-1
revids.py revids.py-20070416220458-36vfa0730cchevp1-1
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
tests/mapping3/__init__.py __init__.py-20080831152358-oy04n53cpnh64aj6-1
tests/test_commit.py test_commit.py-20060624213521-l5kcufywkh9mnilk-1
tests/test_mapping.py test_mapping.py-20080201131338-0zd86eznn4bojtee-1
tests/test_upgrade.py test_upgrade.py-20070106170128-64zt3eqggg4tng1c-1
=== modified file '__init__.py'
--- a/__init__.py 2008-12-07 05:20:26 +0000
+++ b/__init__.py 2008-12-07 18:05:41 +0000
@@ -461,7 +461,7 @@
from bzrlib.trace import info
from bzrlib.plugins.svn.repository import SvnRepository
from bzrlib.plugins.svn.mapping3.scheme import scheme_from_branch_list
- from bzrlib.plugins.svn.mapping3 import (BzrSvnMappingv3FileProps, config_set_scheme,
+ from bzrlib.plugins.svn.mapping3 import (BzrSvnMappingv3, config_set_scheme,
get_property_scheme, set_property_scheme)
def scheme_str(scheme):
if scheme is None:
@@ -474,7 +474,7 @@
if repository_wide:
scheme = get_property_scheme(repos)
else:
- scheme = BzrSvnMappingv3FileProps.from_repository(repos).scheme
+ scheme = BzrSvnMappingv3.from_repository(repos).scheme
if set:
schemestr = edit_commit_message("",
start_message=scheme_str(scheme))
=== modified file 'logwalker.py'
--- a/logwalker.py 2008-12-07 06:03:22 +0000
+++ b/logwalker.py 2008-12-07 18:05:41 +0000
@@ -302,7 +302,7 @@
else:
next = changes.find_prev_location(revpaths, path, revnum)
- revprops = lazy_dict({}, self.revprop_list, revnum)
+ revprops = self.revprop_list(revnum)
if path == "" or changes.changes_path(revpaths, path, True):
assert isinstance(revnum, int)
=== modified file 'mapping.py'
--- a/mapping.py 2008-12-07 05:20:26 +0000
+++ b/mapping.py 2008-12-07 18:05:41 +0000
@@ -785,7 +785,7 @@
revprops[SVN_REVPROP_BZR_LOG] = message.encode("utf-8")
def export_revision_revprops(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_revprops):
-
+ svn_revprops[SVN_REVPROP_BZR_MAPPING_VERSION] = self.name
if timestamp is not None:
svn_revprops[SVN_REVPROP_BZR_TIMESTAMP] = format_highres_date(timestamp, timezone)
@@ -811,6 +811,9 @@
svn_revprops[SVN_REVPROP_BZR_REVNO] = str(revno)
svn_revprops[SVN_REVPROP_BZR_USER_AGENT] = get_client_string()
+ def revprops_complete(self, revprops):
+ return (SVN_REVPROP_BZR_MAPPING_VERSION in revprops)
+
def export_fileid_map_revprops(self, fileids, revprops):
if fileids != {}:
revprops[SVN_REVPROP_BZR_FILEIDS] = generate_fileid_property(fileids)
@@ -851,7 +854,7 @@
'BzrSvnMappingv2',
'Second format (bzr-svn 0.3.x)')
mapping_registry.register_lazy('v3', 'bzrlib.plugins.svn.mapping3',
- 'BzrSvnMappingv3FileProps',
+ 'BzrSvnMappingv3',
'Third format (bzr-svn 0.4.x)')
mapping_registry.register_lazy('v4', 'bzrlib.plugins.svn.mapping4',
'BzrSvnMappingv4',
@@ -861,16 +864,7 @@
def find_mapping_revprops(revprops):
if SVN_REVPROP_BZR_MAPPING_VERSION in revprops:
- try:
- cls = mapping_registry.get(revprops[SVN_REVPROP_BZR_MAPPING_VERSION])
- ret = cls.from_revprops(revprops)
- except KeyError:
- pass
- except NotImplementedError:
- pass
- else:
- if ret is not None:
- return ret
+ return mapping_registry.parse_mapping_name("svn-" + revprops[SVN_REVPROP_BZR_MAPPING_VERSION])
return None
=== modified file 'mapping3/__init__.py'
--- a/mapping3/__init__.py 2008-12-07 06:03:22 +0000
+++ b/mapping3/__init__.py 2008-12-07 18:05:41 +0000
@@ -158,7 +158,7 @@
guessed_scheme_str, mandatory=mandatory)
-class BzrSvnMappingv3(mapping.BzrSvnMapping):
+class BzrSvnMappingv3(mapping.BzrSvnMappingFileProps, mapping.BzrSvnMappingRevProps, mapping.BzrSvnMapping):
"""The third version of the mappings as used in the 0.4.x series.
Relies exclusively on file properties, though
@@ -191,7 +191,7 @@
@classmethod
def from_revprops(cls, revprops):
- return None
+ return cls()
def get_mandated_layout(self, repository):
return SchemeDerivedLayout(repository, self.scheme)
@@ -304,44 +304,3 @@
@classmethod
def get_test_instance(cls):
return cls(NoBranchingScheme())
-
-
-class BzrSvnMappingv3FileProps(mapping.BzrSvnMappingFileProps, BzrSvnMappingv3):
-
- def __init__(self, scheme, guessed_scheme=None):
- BzrSvnMappingv3.__init__(self, scheme, guessed_scheme)
- self.revprop_map = mapping.BzrSvnMappingRevProps()
-
- def export_text_parents_revprops(self, text_parents, svn_revprops):
- self.revprop_map.export_text_parents_revprops(text_parents, svn_revprops)
-
- def export_text_revisions_revprops(self, text_revisions, svn_revprops):
- self.revprop_map.export_text_revisions_revprops(text_revisions, svn_revprops)
-
- def export_revision_revprops(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_revprops):
- self.revprop_map.export_revision_revprops(branch_root, timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_revprops)
- svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = self.name
-
- def revprops_complete(self, revprops):
- return (mapping.SVN_REVPROP_BZR_MAPPING_VERSION in revprops)
-
- def export_fileid_map_revprops(self, fileids, revprops):
- self.revprop_map.export_fileid_map_revprops(fileids, revprops)
-
- def import_fileid_map_revprops(self, revprops):
- return self.revprop_map.import_fileid_map_revprops(revprops)
-
- def import_text_revisions_revprops(self, revprops):
- return self.revprop_map.import_text_revisions_revprops(revprops)
-
- def import_text_parents_revprops(self, revprops):
- return self.revprop_map.import_text_parents_revprops(revprops)
-
- def import_revision_revprops(self, revprops, rev):
- return self.revprop_map.import_revision_revprops(revprops, rev)
-
- def export_message_revprops(self, log, revprops):
- self.revprop_map.export_message_revprops(log, revprops)
-
- def get_revision_id_revprops(self, revprops):
- return self.revprop_map.get_revision_id_revprops(revprops)
=== modified file 'mapping4.py'
--- a/mapping4.py 2008-12-07 06:03:22 +0000
+++ b/mapping4.py 2008-12-07 18:05:41 +0000
@@ -20,7 +20,7 @@
supported_features = set()
-class BzrSvnMappingv4(mapping.BzrSvnMapping):
+class BzrSvnMappingv4(mapping.BzrSvnMappingFileProps, mapping.BzrSvnMappingRevProps, mapping.BzrSvnMapping):
"""Mapping between Subversion and Bazaar, introduced in bzr-svn 0.5.
Tries to use revision properties when possible.
@@ -38,8 +38,6 @@
def __init__(self):
self.name = "v4"
- self.revprops = mapping.BzrSvnMappingRevProps()
- self.fileprops = mapping.BzrSvnMappingFileProps(self.name)
def __eq__(self, other):
return type(self) == type(other)
@@ -89,83 +87,21 @@
def __eq__(self, other):
return type(self) == type(other)
- def get_branch_root(self, revprops):
- return self.revprops.get_branch_root(revprops)
-
def get_lhs_parent_fileprops(self, fileprops):
return None
- def get_lhs_parent_revprops(self, svn_revprops):
- return self.revprops.get_lhs_parent_revprops(svn_revprops)
-
- def get_rhs_parents_revprops(self, svn_revprops):
- return self.revprops.get_rhs_parents_revprops(svn_revprops)
-
- def get_rhs_parents_fileprops(self, fileprops):
- return self.fileprops.get_rhs_parents_fileprops(fileprops)
-
- def get_revision_id_revprops(self, revprops):
- return self.revprops.get_revision_id_revprops(revprops)
-
- def get_revision_id_fileprops(self, fileprops):
- return self.fileprops.get_revision_id_fileprops(fileprops)
-
- def import_text_parents_fileprops(self, fileprops):
- return self.fileprops.import_text_parents_fileprops(fileprops)
-
- def import_text_parents_revprops(self, svn_revprops):
- return self.revprops.import_text_parents_revprops(svn_revprops)
-
- def import_text_revisions_revprops(self, svn_revprops):
- return self.revprops.import_text_revisions_revprops(svn_revprops)
-
- def import_text_revisions_fileprops(self, fileprops):
- return self.fileprops.import_text_revisions_fileprops(fileprops)
-
- def import_fileid_map_fileprops(self, fileprops):
- return self.fileprops.import_fileid_map_fileprops(fileprops)
-
- def import_fileid_map_revprops(self, revprops):
- return self.revprops.import_fileid_map_revprops(revprops)
-
- def export_revision_revprops(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_revprops):
- self.revprops.export_revision_revprops(branch_root, timestamp, timezone, committer,
- revprops, revision_id, revno, parent_ids, svn_revprops)
- svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = self.name
-
- def export_revision_fileprops(self, timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_fileprops):
- self.fileprops.export_revision_fileprops(timestamp, timezone, committer, revprops, revision_id, revno, parent_ids, svn_fileprops)
-
- def export_fileid_map_revprops(self, fileids, revprops):
- self.revprops.export_fileid_map_revprops(fileids, revprops)
-
- def export_fileid_map_fileprops(self, fileids, fileprops):
- self.fileprops.export_fileid_map_fileprops(fileids, fileprops)
-
- def export_text_parents_revprops(self, text_parents, revprops):
- self.revprops.export_text_parents_revprops(text_parents, revprops)
-
- def export_text_parents_fileprops(self, text_parents, fileprops):
- self.fileprops.export_text_parents_fileprops(text_parents, fileprops)
-
- def export_text_revisions_revprops(self, text_revisions, revprops):
- self.revprops.export_text_revisions_revprops(text_revisions, revprops)
-
- def export_text_revisions_fileprops(self, text_revisions, fileprops):
- self.fileprops.export_text_revisions_fileprops(text_revisions, fileprops)
-
def import_revision_revprops(self, svn_revprops, rev):
if svn_revprops.has_key(mapping.SVN_REVPROP_BZR_REQUIRED_FEATURES):
features = mapping.parse_required_features_property(svn_revprops[mapping.SVN_REVPROP_BZR_REQUIRED_FEATURES])
assert features.issubset(supported_features), "missing feature: %r" % features.difference(supported_features)
assert svn_revprops.get(mapping.SVN_REVPROP_BZR_MAPPING_VERSION) in (None, self.name), "unknown mapping: %s" % svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION]
- return self.revprops.import_revision_revprops(svn_revprops, rev)
+ return mapping.BzrSvnMappingRevProps.import_revision_revprops(self, svn_revprops, rev)
def import_revision_fileprops(self, fileprops, rev):
if fileprops.has_key(mapping.SVN_PROP_BZR_REQUIRED_FEATURES):
features = mapping.parse_required_features_property(fileprops[mapping.SVN_PROP_BZR_REQUIRED_FEATURES])
assert features.issubset(supported_features), "missing feature: %r" % features.difference(supported_features)
- return self.fileprops.import_revision_fileprops(fileprops, rev)
+ return mapping.BzrSvnMappingFileProps.import_revision_fileprops(self, fileprops, rev)
def get_mandated_layout(self, repository):
return None
@@ -193,6 +129,3 @@
def export_revprop_redirect(self, revnum, fileprops):
if not mapping.SVN_PROP_BZR_REVPROP_REDIRECT in fileprops:
fileprops[mapping.SVN_PROP_BZR_REVPROP_REDIRECT] = str(revnum)
-
- def revprops_complete(self, revprops):
- return (mapping.SVN_REVPROP_BZR_MAPPING_VERSION in revprops)
=== modified file 'revids.py'
--- a/revids.py 2008-12-06 21:38:00 +0000
+++ b/revids.py 2008-12-07 18:05:41 +0000
@@ -78,8 +78,11 @@
for revmeta in self.repos._revmeta_provider.iter_all_revisions(layout, None, from_revnum, to_revnum):
if is_bzr_revision_revprops(revmeta.get_revprops()):
mapping = revmeta.get_original_mapping()
+ assert mapping is not None
revid = revmeta.get_revision_id(mapping)
if revid is not None:
+ if mapping.get_branch_root(revmeta.get_revprops()) is None:
+ import pdb; pdb.set_trace()
yield (revid, mapping.get_branch_root(revmeta.get_revprops()).strip("/"), revmeta.revnum, revmeta.revnum, mapping)
def discover_fileprop_revids(self, layout, from_revnum, to_revnum, project=None):
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-12-07 06:10:59 +0000
+++ b/revmeta.py 2008-12-07 18:05:41 +0000
@@ -251,7 +251,7 @@
def knows_revprops(self):
"""Check whether all revision properties can be cheaply retrieved."""
revprops = self.get_revprops()
- return isinstance(revprops, dict) or revprops.is_loaded or (isinstance(self._log, CachingLogWalker) and self._log.cache.has_all_revprops(self.revnum))
+ return isinstance(revprops, dict) or revprops.is_loaded
def get_previous_fileprops(self):
"""Return the file properties set on the branch root before this
=== modified file 'tests/mapping3/__init__.py'
--- a/tests/mapping3/__init__.py 2008-11-18 01:54:17 +0000
+++ b/tests/mapping3/__init__.py 2008-12-07 18:05:41 +0000
@@ -26,7 +26,7 @@
from subvertpy import ra
from bzrlib.plugins.svn.layout.standard import TrunkLayout, RootLayout
from bzrlib.plugins.svn.mapping import SVN_PROP_BZR_REVISION_ID, mapping_registry
-from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3FileProps, SVN_PROP_BZR_BRANCHING_SCHEME, set_property_scheme
+from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3, SVN_PROP_BZR_BRANCHING_SCHEME, set_property_scheme
from bzrlib.plugins.svn.mapping3.scheme import NoBranchingScheme, ListBranchingScheme, InvalidSvnBranchPath
from bzrlib.plugins.svn.tests import SubversionTestCase
from bzrlib.plugins.svn.tests.test_mapping import sha1
@@ -35,32 +35,32 @@
class Mappingv3FilePropTests(TestCase):
def setUp(self):
- self.mapping = BzrSvnMappingv3FileProps(NoBranchingScheme())
+ self.mapping = BzrSvnMappingv3(NoBranchingScheme())
def test_generate_revid(self):
self.assertEqual("svn-v3-undefined:myuuid:branch:5",
- BzrSvnMappingv3FileProps._generate_revision_id("myuuid", 5, "branch", "undefined"))
+ BzrSvnMappingv3._generate_revision_id("myuuid", 5, "branch", "undefined"))
def test_generate_revid_nested(self):
self.assertEqual("svn-v3-undefined:myuuid:branch%2Fpath:5",
- BzrSvnMappingv3FileProps._generate_revision_id("myuuid", 5, "branch/path", "undefined"))
+ BzrSvnMappingv3._generate_revision_id("myuuid", 5, "branch/path", "undefined"))
def test_generate_revid_special_char(self):
self.assertEqual("svn-v3-undefined:myuuid:branch%2C:5",
- BzrSvnMappingv3FileProps._generate_revision_id("myuuid", 5, "branch\x2c", "undefined"))
+ BzrSvnMappingv3._generate_revision_id("myuuid", 5, "branch\x2c", "undefined"))
def test_generate_revid_nordic(self):
self.assertEqual("svn-v3-undefined:myuuid:branch%C3%A6:5",
- BzrSvnMappingv3FileProps._generate_revision_id("myuuid", 5, u"branch\xe6".encode("utf-8"), "undefined"))
+ BzrSvnMappingv3._generate_revision_id("myuuid", 5, u"branch\xe6".encode("utf-8"), "undefined"))
def test_parse_revid_simple(self):
self.assertEqual(("uuid", "", 4, "undefined"),
- BzrSvnMappingv3FileProps._parse_revision_id(
+ BzrSvnMappingv3._parse_revision_id(
"svn-v3-undefined:uuid::4"))
def test_parse_revid_nested(self):
self.assertEqual(("uuid", "bp/data", 4, "undefined"),
- BzrSvnMappingv3FileProps._parse_revision_id(
+ BzrSvnMappingv3._parse_revision_id(
"svn-v3-undefined:uuid:bp%2Fdata:4"))
def test_generate_file_id_root(self):
=== modified file 'tests/test_commit.py'
--- a/tests/test_commit.py 2008-12-05 21:26:27 +0000
+++ b/tests/test_commit.py 2008-12-07 18:05:41 +0000
@@ -577,11 +577,11 @@
dc.add_file("foo.txt").modify()
dc.close()
- transport = SvnRaTransport(repos_url)
- set_svn_revprops(transport, 1, {"svn:author": "Somebody",
+ repository = Repository.open(repos_url)
+ set_svn_revprops(repository, 1, {"svn:author": "Somebody",
"svn:date": time_to_cstring(1000000*473385600)})
- self.assertEquals(1, transport.get_latest_revnum())
+ self.assertEquals(1, repository.get_latest_revnum())
self.assertEquals(("Somebody", "1985-01-01T00:00:00.000000Z", "My commit"),
self.client_log(repos_url, 1, 1)[1][1:])
@@ -593,9 +593,9 @@
dc.add_file("foo.txt").modify()
dc.close()
- transport = SvnRaTransport(repos_url)
+ repository = Repository.open(repos_url)
self.assertRaises(RevpropChangeFailed,
- lambda: set_svn_revprops(transport, 1, {"svn:author": "Somebody", "svn:date": time_to_cstring(1000000*473385600)}))
+ lambda: set_svn_revprops(repository, 1, {"svn:author": "Somebody", "svn:date": time_to_cstring(1000000*473385600)}))
class SvkTestCase(TestCase):
=== modified file 'tests/test_mapping.py'
--- a/tests/test_mapping.py 2008-12-07 02:58:26 +0000
+++ b/tests/test_mapping.py 2008-12-07 18:05:41 +0000
@@ -29,7 +29,7 @@
escape_svn_path, unescape_svn_path, is_bzr_revision_fileprops,
get_roundtrip_ancestor_revids, is_bzr_revision_revprops)
from bzrlib.plugins.svn.mapping2 import BzrSvnMappingv1, BzrSvnMappingv2
-from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3FileProps
+from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3
from bzrlib.plugins.svn.mapping4 import BzrSvnMappingv4
@@ -154,11 +154,11 @@
mapping_registry.parse_revision_id("svn-v3:uuid:trunk:1"))
def test_v3(self):
- self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3FileProps(TrunkBranchingScheme())),
+ self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
mapping_registry.parse_revision_id("svn-v3-trunk0:uuid:trunk:1"))
def test_v3_undefined(self):
- self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3FileProps(TrunkBranchingScheme())),
+ self.assertEqual((("uuid", "trunk", 1), BzrSvnMappingv3(TrunkBranchingScheme())),
mapping_registry.parse_revision_id("svn-v3-undefined:uuid:trunk:1"))
def test_v2(self):
=== modified file 'tests/test_upgrade.py'
--- a/tests/test_upgrade.py 2008-11-12 11:42:18 +0000
+++ b/tests/test_upgrade.py 2008-12-07 18:05:41 +0000
@@ -23,7 +23,7 @@
from bzrlib.plugins.svn.format import get_rich_root_format
from bzrlib.plugins.svn.layout.standard import RootLayout
from bzrlib.plugins.svn.mapping import mapping_registry
-from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3FileProps
+from bzrlib.plugins.svn.mapping3 import BzrSvnMappingv3
from bzrlib.plugins.svn.mapping3.scheme import TrunkBranchingScheme
from bzrlib.plugins.svn.tests import SubversionTestCase
from bzrlib.plugins.svn.foreign.upgrade import (upgrade_repository, upgrade_branch,
@@ -347,7 +347,7 @@
class TestGenerateUpdateMapTests(TestCase):
def test_nothing(self):
- self.assertEquals({}, generate_upgrade_map(BzrSvnMappingv3FileProps(TrunkBranchingScheme()), ["bla", "bloe"], mapping_registry))
+ self.assertEquals({}, generate_upgrade_map(BzrSvnMappingv3(TrunkBranchingScheme()), ["bla", "bloe"], mapping_registry))
def test_v2_to_v3(self):
- self.assertEquals({"svn-v2:12 at 65390229-12b7-0310-b90b-f21a5aa7ec8e-trunk": "svn-v3-trunk0:65390229-12b7-0310-b90b-f21a5aa7ec8e:trunk:12"}, generate_upgrade_map(BzrSvnMappingv3FileProps(TrunkBranchingScheme()), ["svn-v2:12 at 65390229-12b7-0310-b90b-f21a5aa7ec8e-trunk", "bloe", "blaaa"], mapping_registry))
+ self.assertEquals({"svn-v2:12 at 65390229-12b7-0310-b90b-f21a5aa7ec8e-trunk": "svn-v3-trunk0:65390229-12b7-0310-b90b-f21a5aa7ec8e:trunk:12"}, generate_upgrade_map(BzrSvnMappingv3(TrunkBranchingScheme()), ["svn-v2:12 at 65390229-12b7-0310-b90b-f21a5aa7ec8e-trunk", "bloe", "blaaa"], mapping_registry))
More information about the bazaar-commits
mailing list