Rev 104: Use bzr-foreign function names for converting between git and bzr revids. in http://people.samba.org/bzr/jelmer/bzr-git/trunk

Jelmer Vernooij jelmer at samba.org
Fri Aug 29 16:58:27 BST 2008


At http://people.samba.org/bzr/jelmer/bzr-git/trunk

------------------------------------------------------------
revno: 104
revision-id: jelmer at samba.org-20080829155812-6v17f84xz0ey2o3f
parent: jelmer at samba.org-20080829152045-vxuc7fuovh0ttlmn
parent: jelmer at samba.org-20080829155157-l5fyndavfxy93zan
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Fri 2008-08-29 17:58:12 +0200
message:
  Use bzr-foreign function names for converting between git and bzr revids.
modified:
  branch.py                      git_branch.py-20071108230535-su8dxk529f4uk9fx-2
  foreign/TODO                   todo-20080829114504-q5cgsdfdxefd6paf-1
  foreign/__init__.py            foreign.py-20080827193306-rxeku2c2obec90c4-1
  mapping.py                     ids.py-20071108230535-su8dxk529f4uk9fx-3
  repository.py                  git_repository.py-20071108234408-ygidvy5hviixghsd-2
  tests/test_branch.py           test_git_branch.py-20071108234408-ygidvy5hviixghsd-3
  tests/test_ids.py              test_ids.py-20070202180809-x7e2o6nhz30onckb-1
  tests/test_repository.py       test_git_repository.-20071108234408-ygidvy5hviixghsd-5
    ------------------------------------------------------------
    revno: 0.1.9
    revision-id: jelmer at samba.org-20080829155157-l5fyndavfxy93zan
    parent: jelmer at samba.org-20080829151756-e7o2t2nz4o1bgrni
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: trunk
    timestamp: Fri 2008-08-29 17:51:57 +0200
    message:
      Add abstract functions for converting revision ids between bzr and foreign vcses.
    modified:
      TODO                           todo-20080829114504-q5cgsdfdxefd6paf-1
      __init__.py                    foreign.py-20080827193306-rxeku2c2obec90c4-1
=== modified file 'branch.py'
--- a/branch.py	2008-08-23 13:53:48 +0000
+++ b/branch.py	2008-08-29 15:58:12 +0000
@@ -35,7 +35,7 @@
     def get_tag_dict(self):
         ret = {}
         for tag in self.repository._git.tags:
-            ret[tag.name] = default_mapping.convert_revision_id_git_to_bzr(tag.commit.id)
+            ret[tag.name] = default_mapping.revision_id_foreign_to_bzr(tag.commit.id)
         return ret
 
     def set_tag(self, name, revid):
@@ -84,7 +84,7 @@
         # perhaps should escape this ?
         if self.head is None:
             return revision.NULL_REVISION
-        return default_mapping.convert_revision_id_git_to_bzr(self.head)
+        return default_mapping.revision_id_foreign_to_bzr(self.head)
 
     def _make_tags(self):
         return GitTagDict(self)
@@ -109,7 +109,7 @@
             skip += max_count
             for cm in cms:
                 if cm.id == nextid:
-                    ret.append(default_mapping.convert_revision_id_git_to_bzr(cm.id))
+                    ret.append(default_mapping.revision_id_foreign_to_bzr(cm.id))
                     if cm.parents == []:
                         nextid = None
                     else:

=== modified file 'foreign/TODO'
--- a/foreign/TODO	2008-08-29 11:45:07 +0000
+++ b/foreign/TODO	2008-08-29 15:51:57 +0000
@@ -1,3 +1,1 @@
-- Import VirtualRevisionTexts, VirtualInventoryTexts, VirtualSignatureTexts
-- Import dpush command
 - Import CommitBuilder-based fetcher

=== modified file 'foreign/__init__.py'
--- a/foreign/__init__.py	2008-08-29 15:17:56 +0000
+++ b/foreign/__init__.py	2008-08-29 15:51:57 +0000
@@ -28,6 +28,22 @@
     roundtripping = False
     revid_prefix = None
 
+    def revision_id_bzr_to_foreign(self, bzr_revid):
+        """Parse a bzr revision id and convert it to a foreign revid.
+
+        :param bzr_revid: The bzr revision id (a string).
+        :return: A foreign revision id, can be any sort of object.
+        """
+        raise NotImplementedError(self.revision_id_bzr_to_foreign)
+
+    def revision_id_foreign_to_bzr(self, foreign_revid):
+        """Parse a foreign revision id and convert it to a bzr revid.
+
+        :param foreign_revid: Foreign revision id, can be any sort of object.
+        :return: A bzr revision id.
+        """
+        raise NotImplementedError(self.revision_id_foreign_to_bzr)
+
 
 class VcsMappingRegistry(registry.Registry):
     """Registry for Bazaar<->foreign VCS mappings.

=== modified file 'mapping.py'
--- a/mapping.py	2008-08-27 19:40:33 +0000
+++ b/mapping.py	2008-08-29 15:58:12 +0000
@@ -22,18 +22,19 @@
     """Class that maps between Git and Bazaar semantics."""
     experimental = False
 
-    def convert_revision_id_git_to_bzr(self, git_rev_id):
+    def revision_id_foreign_to_bzr(self, git_rev_id):
         """Convert a git revision id handle to a Bazaar revision id."""
         return "%s:%s" % (self.revid_prefix, git_rev_id)
 
-    def convert_revision_id_bzr_to_git(self, bzr_rev_id):
+    def revision_id_bzr_to_foreign(self, bzr_rev_id):
         """Convert a Bazaar revision id to a git revision id handle."""
-        assert bzr_rev_id.startswith("%s:" % self.namespace)
+        assert bzr_rev_id.startswith("%s:" % self.revid_prefix)
         return bzr_rev_id[len(self.revid_prefix)+1:]
 
 
 class BzrGitMappingExperimental(BzrGitMapping):
-    namespace = 'git-experimental'
+    revid_prefix = 'git-experimental'
+    experimental = True
 
 
 default_mapping = BzrGitMappingExperimental()

=== modified file 'repository.py'
--- a/repository.py	2008-08-23 13:53:48 +0000
+++ b/repository.py	2008-08-29 15:58:12 +0000
@@ -66,7 +66,7 @@
         while cms != []:
             cms = self._git.commits("--all", max_count=max_count, skip=skip)
             skip += max_count
-            ret.update([default_mapping.convert_revision_id_git_to_bzr(cm.id) for cm in cms])
+            ret.update([default_mapping.revision_id_foreign_to_bzr(cm.id) for cm in cms])
         return ret
 
     def is_shared(self):
@@ -88,9 +88,9 @@
             max_count = 1000
             cms = None
             while cms != []:
-                cms = self._git.commits(default_mapping.convert_revision_id_bzr_to_git(revision_id), max_count=max_count, skip=skip)
+                cms = self._git.commits(default_mapping.revision_id_bzr_to_foreign(revision_id), max_count=max_count, skip=skip)
                 skip += max_count
-                ret += [default_mapping.convert_revision_id_git_to_bzr(cm.id) for cm in cms]
+                ret += [default_mapping.revision_id_foreign_to_bzr(cm.id) for cm in cms]
         return [None] + ret
 
     def get_signature_text(self, revision_id):
@@ -105,12 +105,12 @@
             if revid == revision.NULL_REVISION:
                 ret[revid] = ()
             else:
-                commit = self._git.commit(default_mapping.convert_revision_id_bzr_to_git(revid))
-                ret[revid] = tuple([default_mapping.convert_revision_id_git_to_bzr(p.id) for p in commit.parents])
+                commit = self._git.commit(default_mapping.revision_id_bzr_to_foreign(revid))
+                ret[revid] = tuple([default_mapping.revision_id_foreign_to_bzr(p.id) for p in commit.parents])
         return ret
 
     def get_revision(self, revision_id):
-        git_commit_id = default_mapping.convert_revision_id_bzr_to_git(revision_id)
+        git_commit_id = default_mapping.revision_id_bzr_to_foreign(revision_id)
         commit = self._git.commit(git_commit_id)
         # print "fetched revision:", git_commit_id
         revision = self._parse_rev(commit)
@@ -133,8 +133,8 @@
 
         :return: a `bzrlib.revision.Revision` object.
         """
-        rev = revision.Revision(default_mapping.convert_revision_id_git_to_bzr(commit.id))
-        rev.parent_ids = tuple([default_mapping.convert_revision_id_git_to_bzr(p.id) for p in commit.parents])
+        rev = revision.Revision(default_mapping.revision_id_foreign_to_bzr(commit.id))
+        rev.parent_ids = tuple([default_mapping.revision_id_foreign_to_bzr(p.id) for p in commit.parents])
         rev.inventory_sha1 = ""
         rev.message = commit.message.decode("utf-8", "replace")
         rev.committer = str(commit.committer)
@@ -175,7 +175,7 @@
     def __init__(self, repository, revision_id):
         self._repository = repository
         self.revision_id = revision_id
-        git_id = default_mapping.convert_revision_id_bzr_to_git(revision_id)
+        git_id = default_mapping.revision_id_bzr_to_foreign(revision_id)
         self.tree = repository._git.commit(git_id).tree
         self._inventory = inventory.Inventory(revision_id=revision_id)
         self._inventory.root.revision = revision_id

=== modified file 'tests/test_branch.py'
--- a/tests/test_branch.py	2008-08-23 13:53:48 +0000
+++ b/tests/test_branch.py	2008-08-29 15:58:12 +0000
@@ -57,7 +57,7 @@
         head = tests.run_git('rev-parse', 'HEAD').strip()
 
         thebranch = Branch.open('.')
-        self.assertEqual(default_mapping.convert_revision_id_git_to_bzr(head),
+        self.assertEqual(default_mapping.revision_id_foreign_to_bzr(head),
                          thebranch.last_revision())
 
     def test_revision_history(self):
@@ -69,7 +69,7 @@
         revb = tests.run_git('rev-parse', 'HEAD').strip()
 
         thebranch = Branch.open('.')
-        self.assertEqual([default_mapping.convert_revision_id_git_to_bzr(r) for r in (reva, revb)],
+        self.assertEqual([default_mapping.revision_id_foreign_to_bzr(r) for r in (reva, revb)],
                          thebranch.revision_history())
 
     def test_tags(self):
@@ -81,7 +81,7 @@
         newid = open('.git/refs/tags/foo').read().rstrip()
 
         thebranch = Branch.open('.')
-        self.assertEquals({"foo": default_mapping.convert_revision_id_git_to_bzr(newid)},
+        self.assertEquals({"foo": default_mapping.revision_id_foreign_to_bzr(newid)},
                           thebranch.tags.get_tag_dict())
         
 

=== modified file 'tests/test_ids.py'
--- a/tests/test_ids.py	2008-08-23 13:53:48 +0000
+++ b/tests/test_ids.py	2008-08-29 15:58:12 +0000
@@ -23,11 +23,11 @@
     def test_simple_git_to_bzr_revision_id(self):
         self.assertEqual("git-experimental:"
                          "c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
-                         default_mapping.convert_revision_id_git_to_bzr(
+                         default_mapping.revision_id_foreign_to_bzr(
                             "c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))
 
     def test_simple_bzr_to_git_revision_id(self):
         self.assertEqual("c6a4d8f1fa4ac650748e647c4b1b368f589a7356",
-                         default_mapping.convert_revision_id_bzr_to_git(
+                         default_mapping.revision_id_bzr_to_foreign(
                             "git-experimental:"
                             "c6a4d8f1fa4ac650748e647c4b1b368f589a7356"))

=== modified file 'tests/test_repository.py'
--- a/tests/test_repository.py	2008-08-23 13:53:48 +0000
+++ b/tests/test_repository.py	2008-08-29 15:58:12 +0000
@@ -62,7 +62,7 @@
         commit_id = mapping[commit_handle]
 
         # Get the corresponding Revision object.
-        revid = default_mapping.convert_revision_id_git_to_bzr(commit_id)
+        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
         repo = Repository.open('.')
         rev = repo.get_revision(revid)
         self.assertIsInstance(rev, revision.Revision)
@@ -82,7 +82,7 @@
 
     def test_revision_tree(self):
         commit_id = self.simple_commit()
-        revid = default_mapping.convert_revision_id_git_to_bzr(commit_id)
+        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
         repo = Repository.open('.')
         tree = repo.revision_tree(revid)
         self.assertEquals(tree.get_revision_id(), revid)
@@ -95,7 +95,7 @@
         commit_id = self.simple_commit()
 
         # Get the corresponding Inventory object.
-        revid = default_mapping.convert_revision_id_git_to_bzr(commit_id)
+        revid = default_mapping.revision_id_foreign_to_bzr(commit_id)
         repo = Repository.open('.')
         inv = repo.get_inventory(revid)
         self.assertIsInstance(inv, inventory.Inventory)




More information about the bazaar-commits mailing list