Rev 105: Add common function for finding git commit by bzr revid. in http://people.samba.org/bzr/jelmer/bzr-git/trunk

Jelmer Vernooij jelmer at samba.org
Sat Aug 30 18:22:06 BST 2008


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

------------------------------------------------------------
revno: 105
revision-id: jelmer at samba.org-20080830172205-lcix3iotfzk2agej
parent: jelmer at samba.org-20080829155812-6v17f84xz0ey2o3f
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sat 2008-08-30 19:22:05 +0200
message:
  Add common function for finding git commit by bzr revid.
modified:
  mapping.py                     ids.py-20071108230535-su8dxk529f4uk9fx-3
  repository.py                  git_repository.py-20071108234408-ygidvy5hviixghsd-2
=== modified file 'mapping.py'
--- a/mapping.py	2008-08-29 15:58:12 +0000
+++ b/mapping.py	2008-08-30 17:22:05 +0000
@@ -16,6 +16,7 @@
 
 """Converters, etc for going between Bazaar and Git ids."""
 
+from bzrlib import errors
 from bzrlib.plugins.git import foreign
 
 class BzrGitMapping(foreign.VcsMapping):
@@ -28,7 +29,8 @@
 
     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.revid_prefix)
+        if not bzr_rev_id.startswith("%s:" % self.revid_prefix):
+            raise errors.InvalidRevisionId(bzr_rev_id, self)
         return bzr_rev_id[len(self.revid_prefix)+1:]
 
 

=== modified file 'repository.py'
--- a/repository.py	2008-08-29 15:58:12 +0000
+++ b/repository.py	2008-08-30 17:22:05 +0000
@@ -88,7 +88,7 @@
             max_count = 1000
             cms = None
             while cms != []:
-                cms = self._git.commits(default_mapping.revision_id_bzr_to_foreign(revision_id), max_count=max_count, skip=skip)
+                cms = self._git.commits(self.lookup_git_revid(revision_id, self), max_count=max_count, skip=skip)
                 skip += max_count
                 ret += [default_mapping.revision_id_foreign_to_bzr(cm.id) for cm in cms]
         return [None] + ret
@@ -105,12 +105,18 @@
             if revid == revision.NULL_REVISION:
                 ret[revid] = ()
             else:
-                commit = self._git.commit(default_mapping.revision_id_bzr_to_foreign(revid))
+                commit = self._git.commit(self.lookup_git_revid(revid, default_mapping))
                 ret[revid] = tuple([default_mapping.revision_id_foreign_to_bzr(p.id) for p in commit.parents])
         return ret
 
+    def lookup_git_revid(self, bzr_revid, mapping):
+        try:
+            return mapping.revision_id_bzr_to_foreign(bzr_revid)
+        except errors.InvalidRevisionId:
+            raise errors.NoSuchRevision(bzr_revid, self)
+
     def get_revision(self, revision_id):
-        git_commit_id = default_mapping.revision_id_bzr_to_foreign(revision_id)
+        git_commit_id = self.lookup_git_revid(revision_id, default_mapping)
         commit = self._git.commit(git_commit_id)
         # print "fetched revision:", git_commit_id
         revision = self._parse_rev(commit)
@@ -175,7 +181,7 @@
     def __init__(self, repository, revision_id):
         self._repository = repository
         self.revision_id = revision_id
-        git_id = default_mapping.revision_id_bzr_to_foreign(revision_id)
+        git_id = repository.lookup_git_revid(revision_id, default_mapping)
         self.tree = repository._git.commit(git_id).tree
         self._inventory = inventory.Inventory(revision_id=revision_id)
         self._inventory.root.revision = revision_id




More information about the bazaar-commits mailing list