pack: Factor out write_pack_header.
authorDave Borowitz <dborowitz@google.com>
Mon, 26 Jul 2010 17:34:36 +0000 (19:34 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 26 Jul 2010 17:34:36 +0000 (19:34 +0200)
NEWS
dulwich/pack.py

diff --git a/NEWS b/NEWS
index ec32c5f87f7d11144c0070a4cebf984d0dae76e7..5068f2de64b9ff2c3b80f63e92ff259dca1fc82e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@
 
   * Web server supports streaming progress/pack output. (Dave Borowitz)
 
+  * New public function dulwich.pack.write_pack_header. (Dave Borowitz)
+
 
 0.6.1  2010-07-22
 
index 5bba811473a28e7b9c4054399a3fa4a883d5ea3c..59f27c913b48ec508ce0e5770e9ef808d46e27e9 100644 (file)
@@ -1061,11 +1061,21 @@ def write_pack(filename, objects, num_objects):
         f.close()
 
 
+def write_pack_header(f, num_objects):
+    """Write a pack header for the given number of objects."""
+    f.write('PACK')                          # Pack header
+    f.write(struct.pack('>L', 2))            # Pack version
+    f.write(struct.pack('>L', num_objects))  # Number of objects in pack
+
+
 def write_pack_data(f, objects, num_objects, window=10):
-    """Write a new pack file.
+    """Write a new pack data file.
 
-    :param filename: The filename of the new pack file.
-    :param objects: List of objects to write (tuples with object and path)
+    :param f: File to write to
+    :param objects: Iterable over (object, path) tuples to write
+    :param num_objects: Number of objects to write
+    :param window: Sliding window size for searching for deltas; currently
+                   unimplemented
     :return: List with (name, offset, crc32 checksum) entries, pack checksum
     """
     recency = list(objects)
@@ -1085,9 +1095,7 @@ def write_pack_data(f, objects, num_objects, window=10):
     # Write the pack
     entries = []
     f = SHA1Writer(f)
-    f.write("PACK")               # Pack header
-    f.write(struct.pack(">L", 2)) # Pack version
-    f.write(struct.pack(">L", num_objects)) # Number of objects in pack
+    write_pack_header(f, num_objects)
     for o, path in recency:
         sha1 = o.sha().digest()
         orig_t = o.type_num