Pass external object resolve function rather than full object store to ThinPackData...
authorJelmer Vernooij <jelmer@samba.org>
Fri, 30 Apr 2010 00:38:39 +0000 (02:38 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 30 Apr 2010 00:38:39 +0000 (02:38 +0200)
dulwich/object_store.py
dulwich/pack.py

index 5c11a84cb51522aac8d496ea78b43d69e4f435f8..a3e6d22394450a1a5fcda77715b3d73c17c621f5 100644 (file)
@@ -392,7 +392,7 @@ class DiskObjectStore(PackBasedObjectStore):
 
         :param path: Path to the pack file.
         """
-        data = ThinPackData(self, path)
+        data = ThinPackData(self.get_raw, path)
 
         # Write index for the thin pack (do we really need this?)
         temppath = os.path.join(self.pack_dir, 
index f6e3ef906e0a6f202b1ef41e3e6ba895eae686a9..3a2cd30282ebc6a98b17ccd798a3491839baaa4d 100644 (file)
@@ -873,9 +873,9 @@ class PackData(object):
 class ThinPackData(PackData):
     """PackData for thin packs, which require an ObjectStore for resolving."""
 
-    def __init__(self, store, *args, **kwargs):
+    def __init__(self, resolve_ext_ref, *args, **kwargs):
         super(ThinPackData, self).__init__(*args, **kwargs)
-        self.store = store
+        self.resolve_ext_ref = resolve_ext_ref
 
     def get_ref(self, sha):
         """Resolve a reference looking in both this pack and the store."""
@@ -887,7 +887,7 @@ class ThinPackData(PackData):
             # rewritten.
             return super(ThinPackData, self).get_ref(sha)
         except KeyError:
-            type, obj = self.store.get_raw(sha)
+            type, obj = self.resolve_ext_ref(sha)
             return None, type, obj
 
     def iterentries(self, progress=None):