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