فهرست منبع

Support tweaking pack compression level.

Jelmer Vernooij 5 سال پیش
والد
کامیت
527467e4c5
2فایلهای تغییر یافته به همراه14 افزوده شده و 2 حذف شده
  1. 4 0
      NEWS
  2. 10 2
      dulwich/object_store.py

+ 4 - 0
NEWS

@@ -22,6 +22,10 @@
    loose objects through the "core.looseCompression" and
    "core.compression" settings. (Jelmer Vernooij)
 
+ * Support tweaking the compression level for
+   pack objects through the "core.packCompression" and
+   "core.compression" settings. (Jelmer Vernooij)
+
  * Add a "dulwich.contrib.diffstat" module.
    (Kevin Hendricks)
 

+ 10 - 2
dulwich/object_store.py

@@ -522,12 +522,14 @@ class PackBasedObjectStore(BaseObjectStore):
 class DiskObjectStore(PackBasedObjectStore):
     """Git-style object store that exists on disk."""
 
-    def __init__(self, path, loose_compression_level=-1):
+    def __init__(self, path, loose_compression_level=-1,
+                 pack_compression_level=-1):
         """Open an object store.
 
         Args:
           path: Path of the object store.
           loose_compression_level: zlib compression level for loose objects
+          pack_compression_level: zlib compression level for pack objects
         """
         super(DiskObjectStore, self).__init__(
             pack_compression_level=pack_compression_level)
@@ -535,6 +537,7 @@ class DiskObjectStore(PackBasedObjectStore):
         self.pack_dir = os.path.join(self.path, PACKDIR)
         self._alternates = None
         self.loose_compression_level = loose_compression_level
+        self.pack_compression_level = pack_compression_level
 
     def __repr__(self):
         return "<%s(%r)>" % (self.__class__.__name__, self.path)
@@ -551,7 +554,12 @@ class DiskObjectStore(PackBasedObjectStore):
                 (b'core', ), b'looseCompression').decode())
         except KeyError:
             loose_compression_level = default_compression_level
-        return cls(path, loose_compression_level)
+        try:
+            pack_compression_level = int(config.get(
+                (b'core', ), 'packCompression').decode())
+        except KeyError:
+            pack_compression_level = default_compression_level
+        return cls(path, loose_compression_level, pack_compression_level)
 
     @property
     def alternates(self):