Rev 88: Fix RevisionTree.get_file_text(). in http://people.samba.org/bzr/jelmer/bzr-git/trunk

Jelmer Vernooij jelmer at samba.org
Sat Jul 26 19:58:29 BST 2008


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

------------------------------------------------------------
revno: 88
revision-id: jelmer at samba.org-20080726185829-y9mgj1pzeyrpmdh3
parent: jelmer at samba.org-20080726184605-h3jtq9ceulnbbqr9
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Sat 2008-07-26 20:58:29 +0200
message:
  Fix RevisionTree.get_file_text().
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 18:46:05 +0000
+++ b/git_repository.py	2008-07-26 18:58:29 +0000
@@ -169,6 +169,10 @@
     return file_id.replace('_', '__').replace(' ', '_s')
 
 
+def unescape_file_id(file_id):
+    return file_id.replace("_s", " ").replace("__", "_")
+
+
 class GitRevisionTree(revisiontree.RevisionTree):
 
     def __init__(self, repository, revision_id):
@@ -186,10 +190,7 @@
     def get_file_text(self, file_id):
         entry = self._inventory[file_id]
         if entry.kind == 'directory': return ""
-        git_id = self._inventory.git_ids[file_id]
-        if git_id in self._inventory.git_file_data:
-            return self._inventory.git_file_data[git_id]
-        return self._repository._get_blob(git_id)
+        return self._repository._git.blob(entry.text_id).data
 
     def _build_inventory(self, tree, ie, path):
         assert isinstance(path, str)
@@ -212,14 +213,14 @@
                 else:
                     raise AssertionError(
                         "Unknown file kind, perms=%r." % (b.mode,))
+                child_ie.text_id = b.id
                 child_ie.text_size = b.size
             else:
                 raise AssertionError(
                     "Unknown blob kind, perms=%r." % (b.mode,))
             child_ie.executable = bool(int(b.mode[3:], 8) & 0111)
             child_ie.revision = self.revision_id
-            assert not basename in ie.children
-            ie.children[basename] = child_ie
+            self._inventory.add(child_ie)
             if b.mode[0] == '0':
                 self._build_inventory(b, child_ie, child_path)
 

=== modified file 'tests/test_git_repository.py'
--- a/tests/test_git_repository.py	2008-07-26 16:23:29 +0000
+++ b/tests/test_git_repository.py	2008-07-26 18:58:29 +0000
@@ -86,6 +86,7 @@
         repo = repository.Repository.open('.')
         tree = repo.revision_tree(revid)
         self.assertEquals(tree.get_revision_id(), revid)
+        self.assertEquals("text\n", tree.get_file_text(tree.path2id("data")))
 
     def test_get_inventory(self):
         # GitRepository.get_inventory gives a GitInventory object with




More information about the bazaar-commits mailing list