Parcourir la source

Remove local caching.

Jelmer Vernooij il y a 16 ans
Parent
commit
d7eee19158
1 fichiers modifiés avec 8 ajouts et 8 suppressions
  1. 8 8
      dulwich/pack.py

+ 8 - 8
dulwich/pack.py

@@ -397,7 +397,7 @@ class PackData(object):
         self._header_size = 12
         assert self._size >= self._header_size, "%s is too small for a packfile (%d < %d)" % (filename, self._size, self._header_size)
         self._read_header()
-        self._offset_cache = LRUSizeCache(compute_size=compute_object_size)
+        self._offset_cache = LRUSizeCache(1024*1024*100, compute_size=compute_object_size)
   
     def _read_header(self):
         f = open(self._filename, 'rb')
@@ -437,8 +437,8 @@ class PackData(object):
             (delta_offset, delta) = obj
             assert isinstance(delta_offset, int)
             assert isinstance(delta, str)
-            offset = offset-delta_offset
-            type, base_obj = get_offset(offset)
+            base_offset = offset-delta_offset
+            type, base_obj = get_offset(base_offset)
             assert isinstance(type, int)
         elif type == 7: # ref delta
             (basename, delta) = obj
@@ -446,7 +446,10 @@ class PackData(object):
             assert isinstance(delta, str)
             type, base_obj = get_ref(basename)
             assert isinstance(type, int)
-        type, base_text = self.resolve_object(offset, type, base_obj, get_ref)
+            # Can't be a ofs delta, as we wouldn't know the base offset
+            assert type != 6
+            base_offset = None
+        type, base_text = self.resolve_object(base_offset, type, base_obj, get_ref)
         ret = (type, apply_delta(base_text, delta))
         return ret
   
@@ -463,7 +466,6 @@ class PackData(object):
   
     def iterentries(self, ext_resolve_ref=None):
         found = {}
-        at = {}
         postponed = defaultdict(list)
         class Postpone(Exception):
             """Raised to postpone delta resolving."""
@@ -480,13 +482,11 @@ class PackData(object):
         todo = list(self.iterobjects())
         while todo:
             (offset, type, obj, crc32) = todo.pop(0)
-            at[offset] = (type, obj)
             assert isinstance(offset, int)
             assert isinstance(type, int)
             assert isinstance(obj, tuple) or isinstance(obj, str)
             try:
-                type, obj = self.resolve_object(offset, type, obj, get_ref_text,
-                    at.__getitem__)
+                type, obj = self.resolve_object(offset, type, obj, get_ref_text)
             except Postpone, (sha, ):
                 postponed[sha].append((offset, type, obj))
             else: