changeset 234:6f34aee64a3f

readd blob caching (~25% improvement in gexport) (was lost during the port to latest dulwich), this would also allow hg-git to take advantage of Sverre's fast-import script
author Abderrahim Kitouni <a.kitouni@gmail.com>
date Sun, 02 Aug 2009 19:12:16 +0100
parents 57f860801ab0
children 912d6a5837c8
files git_handler.py
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/git_handler.py	Sat Aug 01 18:33:58 2009 +0100
+++ b/git_handler.py	Sun Aug 02 19:12:16 2009 +0100
@@ -322,17 +322,23 @@
 
     def iterblobs(self, ctx):
         for f in ctx:
-            blob = Blob()
-            blob.data = ctx[f].data()
-            if not blob.id in self.git.object_store:
+            fctx = ctx[f]
+            blobid = self.map_git_get(hex(fctx.filenode()))
+
+            if not blobid:
+                blob = Blob.from_string(fctx.data())
                 self.git.object_store.add_object(blob)
+                self.map_set(blob.id, hex(fctx.filenode()))
+                blobid = blob.id
+
             if 'l' in ctx.flags(f):
                 mode = 0120000
             elif 'x' in ctx.flags(f):
                 mode = 0100755
             else:
                 mode = 0100644
-            yield f, blob.id, mode
+
+            yield f, blobid, mode
 
     def import_git_objects(self, remote_name=None, refs=None):
         self.ui.status(_("importing Git objects into Hg\n"))