Rev 2203: Split up import_revision. in file:///data/jelmer/bzr-svn/mappings/
Jelmer Vernooij
jelmer at samba.org
Sat Dec 6 22:16:18 GMT 2008
At file:///data/jelmer/bzr-svn/mappings/
------------------------------------------------------------
revno: 2203
revision-id: jelmer at samba.org-20081206221614-fvcjh7g7n0fqa0wy
parent: jelmer at samba.org-20081206213800-dvskxzcu9qwq0332
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: mappings
timestamp: Sat 2008-12-06 23:16:14 +0100
message:
Split up import_revision.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
mapping2.py mapping.py-20080904055555-lw057kjuadn0r2ma-2
mapping4.py mapping4.py-20080827182338-y4xzpsf43vyiwcir-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
tests/mapping_implementations/test_base.py test_base.py-20080904055908-3t0g1y0qnmr6aeiq-1
=== modified file 'commit.py'
--- a/commit.py 2008-12-05 04:33:30 +0000
+++ b/commit.py 2008-12-06 22:16:14 +0000
@@ -750,7 +750,7 @@
fileprops = dict(revmeta.get_fileprops().iteritems())
if set_metadata:
assert mapping.supports_hidden
- mapping.export_hidden(revprops, fileprops)
+ mapping.export_hidden(branch_path, revprops, fileprops)
parent = urlutils.dirname(branch_path)
bp_parts = branch_path.split("/")
=== modified file 'mapping.py'
--- a/mapping.py 2008-12-06 21:38:00 +0000
+++ b/mapping.py 2008-12-06 22:16:14 +0000
@@ -369,17 +369,26 @@
"""
raise NotImplementedError
- def import_revision(self, revprops, fileprops, foreign_revid, rev):
+ def import_revision_revprops(self, revprops, foreign_revid, rev):
"""Update a Revision object from Subversion revision and branch
properties.
:param revprops: Dictionary with Subversion revision properties.
+ :param revnum: Revision number in Subversion.
+ :param rev: Revision object to import data into.
+ """
+ raise NotImplementedError(self.import_revision_revprops)
+
+ def import_revision_fileprops(self, fileprops, foreign_revid, rev):
+ """Update a Revision object from Subversion revision and branch
+ properties.
+
:param fileprops: Dictionary with Subversion file properties on the
branch root.
:param revnum: Revision number in Subversion.
:param rev: Revision object to import data into.
"""
- raise NotImplementedError(self.import_revision)
+ raise NotImplementedError(self.import_revision_fileprops)
def get_lhs_parent_revprops(self, revprops):
"""Determine the left hand side parent, if it was explicitly recorded.
@@ -500,10 +509,13 @@
def get_test_instance(cls):
return cls()
- def is_bzr_revision_hidden(self, revprops, changed_fileprops):
+ def is_bzr_revision_hidden_revprops(self, revprops):
+ return False
+
+ def is_bzr_revision_hidden_fileprops(self, changed_fileprops):
return False
- def export_hidden(self, revprops, fileprops):
+ def export_hidden(self, branch_path, revprops, fileprops):
raise NotImplementedError(self.export_hidden)
def show_foreign_revid(self, (uuid, bp, revnum)):
@@ -561,14 +573,16 @@
def __init__(self, name):
self.name = name
- def import_revision(self, svn_revprops, fileprops, foreign_revid, rev):
- parse_svn_revprops(svn_revprops, rev)
+ def import_revision_fileprops(self, fileprops, foreign_revid, rev):
if SVN_PROP_BZR_LOG in fileprops:
rev.message = fileprops[SVN_PROP_BZR_LOG][1]
metadata = fileprops.get(SVN_PROP_BZR_REVISION_INFO)
if metadata is not None:
parse_revision_metadata(metadata[1], rev)
+ def import_revision_revprops(self, svn_revprops, foreign_revid, rev):
+ parse_svn_revprops(svn_revprops, rev)
+
def import_text_parents_fileprops(self, fileprops):
metadata = fileprops.get(SVN_PROP_BZR_TEXT_PARENTS)
if metadata is None:
@@ -693,10 +707,13 @@
class BzrSvnMappingRevProps(object):
- def import_revision(self, svn_revprops, fileprops, foreign_revid, rev):
+ def import_revision_revprops(self, svn_revprops, foreign_revid, rev):
parse_svn_revprops(svn_revprops, rev)
parse_bzr_svn_revprops(svn_revprops, rev)
+ def import_revision_fileprops(self, fileprops, foreign_revid, rev):
+ pass
+
def import_fileid_map_revprops(self, svn_revprops):
if not svn_revprops.has_key(SVN_REVPROP_BZR_FILEIDS):
return {}
=== modified file 'mapping2.py'
--- a/mapping2.py 2008-12-06 21:04:26 +0000
+++ b/mapping2.py 2008-12-06 22:16:14 +0000
@@ -74,9 +74,12 @@
def is_tag(self, tag_path):
return False
- def import_revision(self, svn_revprops, fileprops, (uuid, branch, revnum), rev):
+ def import_revision_revprops(self, svn_revprops, foreign_revid, rev):
parse_svn_revprops(svn_revprops, rev)
+ def import_revision_fileprops(self, fileprops, foreign_revid, rev):
+ pass
+
def generate_file_id(self, uuid, revnum, branch, inv_path):
if inv_path == u"":
return ROOT_ID
=== modified file 'mapping4.py'
--- a/mapping4.py 2008-12-06 21:23:48 +0000
+++ b/mapping4.py 2008-12-06 22:16:14 +0000
@@ -156,36 +156,36 @@
else:
self.fileprops.export_text_revisions(text_revisions, revprops, fileprops)
- def import_revision(self, svn_revprops, fileprops, foreign_revid, rev):
+ def import_revision_revprops(self, svn_revprops, foreign_revid, 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)
if svn_revprops.has_key(mapping.SVN_REVPROP_BZR_MAPPING_VERSION):
assert svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] == self.name, "unknown mapping: %s" % svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION]
self.revprops.import_revision(svn_revprops, fileprops, foreign_revid, rev)
- else:
- 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)
- self.fileprops.import_revision(svn_revprops, fileprops, foreign_revid, rev)
+
+ def import_revision_fileprops(self, fileprops, foreign_revid, 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)
+ self.fileprops.import_revision(svn_revprops, fileprops, foreign_revid, rev)
def get_mandated_layout(self, repository):
return None
- def is_bzr_revision_hidden(self, revprops, changed_fileprops):
- if revprops.has_key(mapping.SVN_REVPROP_BZR_HIDDEN):
- return True
- if (changed_fileprops.has_key(mapping.SVN_PROP_BZR_HIDDEN) and
- changed_fileprops.get(mapping.SVN_PROP_BZR_HIDDEN) is not None):
- return True
- return False
+ def is_bzr_revision_hidden_revprops(self, revprops):
+ return revprops.has_key(mapping.SVN_REVPROP_BZR_HIDDEN)
+
+ def is_bzr_revision_hidden_fileprops(self, changed_fileprops):
+ return changed_fileprops.has_key(mapping.SVN_PROP_BZR_HIDDEN)
def get_hidden_lhs_ancestors_count(self, fileprops):
return int(fileprops.get(mapping.SVN_PROP_BZR_HIDDEN, "0"))
- def export_hidden(self, revprops, fileprops):
+ def export_hidden(self, branch_path, revprops, fileprops):
if revprops is not None:
revprops[mapping.SVN_REVPROP_BZR_HIDDEN] = ""
+ revprops[mapping.SVN_REVPROP_BZR_ROOT] = branch_path
return
old_value = fileprops.get(mapping.SVN_PROP_BZR_HIDDEN, "0")
fileprops[mapping.SVN_PROP_BZR_HIDDEN] = str(int(old_value)+1)
=== modified file 'repository.py'
--- a/repository.py 2008-12-05 21:26:27 +0000
+++ b/repository.py 2008-12-06 22:16:14 +0000
@@ -575,7 +575,7 @@
if self.transport.has_capability("commit-revprops") == False:
return False
for revmeta in self._revmeta_provider.iter_all_revisions(self.get_layout(), None, self.get_latest_revnum()):
- if revmeta.is_bzr_revision_revprops():
+ if is_bzr_revision_revprops(revmeta.get_revprops()):
return True
return False
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-12-06 21:38:00 +0000
+++ b/revmeta.py 2008-12-06 22:16:14 +0000
@@ -39,8 +39,8 @@
find_mapping_fileprops,
find_mapping_revprops,
get_roundtrip_ancestor_revids,
+ is_bzr_revision_revprops,
is_bzr_revision_fileprops,
- is_bzr_revision_revprops,
SVN_REVPROP_BZR_SIGNATURE,
)
from bzrlib.plugins.svn.svk import (
@@ -341,7 +341,7 @@
"""Find the original mapping that was used to store this revision
or None if it is not a bzr-svn revision.
"""
- return self._import_from_props(mapping,
+ return self._import_from_props(None,
find_mapping_fileprops,
find_mapping_revprops,
None)
@@ -402,16 +402,6 @@
def estimate_bzr_hidden_fileprop_ancestors(self, mapping):
return self._estimate_fileprop_ancestors("bzr:hidden", estimate_bzr_ancestors)
- def is_bzr_revision_revprops(self):
- """Check if any revision properties indicate this is a bzr revision.
- """
- return is_bzr_revision_revprops(self.get_revprops())
-
- def is_bzr_revision_fileprops(self):
- """Check if any file properties indicate this is a bzr revision.
- """
- return is_bzr_revision_fileprops(self.get_changed_fileprops())
-
def is_changes_root(self):
"""Check whether this revisions root is the root of the changes
in this svn revision.
@@ -425,12 +415,10 @@
"""Check whether this revision should be hidden from Bazaar history."""
if not mapping.supports_hidden:
return False
- if self.estimate_bzr_hidden_fileprop_ancestors(mapping) == 0:
- if self.check_revprops:
- return mapping.is_bzr_revision_hidden(self.get_revprops(), {})
- return False
- return mapping.is_bzr_revision_hidden(self.get_revprops(),
- self.get_changed_fileprops())
+ return self._import_from_props(mapping,
+ mapping.is_bzr_revision_hidden_fileprops,
+ mapping.is_bzr_revision_hidden_revprops,
+ False)
def is_bzr_revision(self):
"""Determine if this is a bzr revision.
@@ -441,13 +429,13 @@
return self._is_bzr_revision
order = []
# If the server already sent us all revprops, look at those first
- if self._log.quick_revprops:
- order.append(self.is_bzr_revision_revprops)
+ if self.knows_revprops():
+ order.append(lambda: is_bzr_revision_revprops(self.get_revprops()))
if self.consider_bzr_fileprops():
- order.append(self.is_bzr_revision_fileprops)
+ order.append(lambda: is_bzr_revision_fileprops(self.get_changed_fileprops()))
# Only look for revprops if they could've been committed
- if (self.check_revprops and not self.is_bzr_revision_revprops in order):
- order.append(self.is_bzr_revision_revprops)
+ if (self.check_revprops and not self.knows_revprops()):
+ order.append(lambda: is_bzr_revision_revprops(self.get_revprops()))
for fn in order:
ret = fn()
if ret is not None:
@@ -562,8 +550,10 @@
rev.svn_meta = self
- mapping.import_revision(self.get_revprops(),
- self.get_changed_fileprops(),
+ mapping.import_revision_revprops(self.get_revprops(),
+ self.get_foreign_revid(), rev)
+
+ mapping.import_revision_fileprops(self.get_changed_fileprops(),
self.get_foreign_revid(), rev)
return rev
@@ -573,7 +563,7 @@
ret = fileprop_fn(self.get_changed_fileprops())
if ret == default:
return ret
- if mapping.get_branch_root(self.get_revprops()) == self.branch_path:
+ if mapping is None or mapping.get_branch_root(self.get_revprops()) == self.branch_path:
return revprop_fn(self.get_revprops())
return default
=== modified file 'tests/mapping_implementations/test_base.py'
--- a/tests/mapping_implementations/test_base.py 2008-12-06 21:23:48 +0000
+++ b/tests/mapping_implementations/test_base.py 2008-12-06 22:16:14 +0000
@@ -106,11 +106,20 @@
{"arevprop": "val" }, "arevid", 4, ["parent", "merge1"], revprops, fileprops)
targetrev = Revision(None)
revprops["svn:date"] = "2008-11-03T09:33:00.716938Z"
- self.mapping.import_revision(revprops, changed_props(fileprops), ("someuuid", "somebp", 4), targetrev)
- self.assertEquals(targetrev.committer, "somebody")
- self.assertEquals(targetrev.properties, {"arevprop": "val"})
- self.assertEquals(targetrev.timestamp, 432432432.0)
- self.assertEquals(targetrev.timezone, 0)
+ if self.mapping.can_use_revprops:
+ self.mapping.import_revision_revprops(revprops, ("someuuid", "somebp", 4), targetrev)
+ self.assertEquals(targetrev.committer, "somebody")
+ self.assertEquals(targetrev.properties, {"arevprop": "val"})
+ self.assertEquals(targetrev.timestamp, 432432432.0)
+ self.assertEquals(targetrev.timezone, 0)
+
+ if self.mapping.can_use_fileprops:
+ self.mapping.import_revision_fileprops(changed_props(fileprops), ("someuuid", "somebp", 4), targetrev)
+ self.assertEquals(targetrev.committer, "somebody")
+ self.assertEquals(targetrev.properties, {"arevprop": "val"})
+ self.assertEquals(targetrev.timestamp, 432432432.0)
+ self.assertEquals(targetrev.timezone, 0)
+
def test_revision_id(self):
if not self.mapping.roundtripping:
@@ -143,9 +152,9 @@
def test_import_revision_svnprops(self):
rev = Revision(None)
- self.mapping.import_revision({"svn:log": "A log msg",
+ self.mapping.import_revision_revprops({"svn:log": "A log msg",
"svn:author": "Somebody",
- "svn:date": "2008-11-03T09:33:00.716938Z"}, {}, ("someuuid", "trunk", 23), rev)
+ "svn:date": "2008-11-03T09:33:00.716938Z"}, ("someuuid", "trunk", 23), rev)
self.assertEquals("Somebody", rev.committer)
self.assertEquals("A log msg", rev.message)
self.assertEquals({}, rev.properties)
More information about the bazaar-commits
mailing list