Rev 65: Implement get_ancestry properly. in http://people.samba.org/bzr/jelmer/bzr-git/trunk

Jelmer Vernooij jelmer at samba.org
Sat Jul 26 17:27:42 BST 2008


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

------------------------------------------------------------
revno: 65
revision-id: jelmer at samba.org-20080726153741-hkexn461eiqepxht
parent: jelmer at samba.org-20080726153041-h1xj8ufk0n0gz8jl
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sat 2008-07-26 17:37:41 +0200
message:
  Implement get_ancestry properly.
modified:
  git_repository.py              git_repository.py-20071108234408-ygidvy5hviixghsd-2
  tests/test_git_repository.py   test_git_repository.-20071108234408-ygidvy5hviixghsd-5
=== modified file 'git_repository.py'
--- a/git_repository.py	2008-07-26 15:30:20 +0000
+++ b/git_repository.py	2008-07-26 15:37:41 +0000
@@ -92,12 +92,17 @@
         return False
 
     def get_ancestry(self, revision_id):
-        param = [ids.convert_revision_id_bzr_to_git(revision_id)]
-        git_ancestry = self._git.get_ancestry(param)
-        # print "fetched ancestry:", param
-        return [None] + [
-            ids.convert_revision_id_git_to_bzr(git_id)
-            for git_id in git_ancestry]
+        revision_id = revision.ensure_null(revision_id)
+        ret = []
+        if revision_id != revision.NULL_REVISION:
+            skip = 0
+            max_count = 1000
+            cms = None
+            while cms != []:
+                cms = self._git.commits(ids.convert_revision_id_bzr_to_git(revision_id), max_count=max_count, skip=skip)
+                skip += max_count
+                ret += [ids.convert_revision_id_git_to_bzr(cm.id) for cm in cms]
+        return [None] + ret
 
     def get_signature_text(self, revision_id):
         raise errors.NoSuchRevision(self, revision_id)

=== modified file 'tests/test_git_repository.py'
--- a/tests/test_git_repository.py	2008-07-26 13:55:40 +0000
+++ b/tests/test_git_repository.py	2008-07-26 15:37:41 +0000
@@ -128,6 +128,9 @@
     def test_has_signature_for_revision_id(self):
         self.assertEquals(False, self.git_repo.has_signature_for_revision_id(revision.NULL_REVISION))
 
+    def test_get_ancestry_null(self):
+        self.assertEquals([None], self.git_repo.get_ancestry(revision.NULL_REVISION))
+
     def assertIsNullInventory(self, inv):
         self.assertEqual(inv.root, None)
         self.assertEqual(inv.revision_id, revision.NULL_REVISION)




More information about the bazaar-commits mailing list