Browse Source

Keep entries in dictionary.

Jelmer Vernooij 13 years ago
parent
commit
a03d84b0f5
1 changed files with 4 additions and 3 deletions
  1. 4 3
      dulwich/pack.py

+ 4 - 3
dulwich/pack.py

@@ -1139,6 +1139,7 @@ def write_pack(filename, objects, num_objects=None):
         entries, data_sum = write_pack_data(f, objects, num_objects=num_objects)
     finally:
         f.close()
+    entries = [(k, v[0], v[1]) for (k, v) in entries.iteritems()]
     entries.sort()
     f = GitFile(filename + ".idx", 'wb')
     try:
@@ -1162,7 +1163,7 @@ def write_pack_data(f, objects, num_objects=None, window=10):
         Should provide __len__
     :param window: Sliding window size for searching for deltas; currently
                    unimplemented
-    :return: List with (name, offset, crc32 checksum) entries, pack checksum
+    :return: Dictionary mapping id -> (offset, crc32 checksum) entries, pack checksum
     """
     if num_objects is not None:
         warnings.warn("num_objects argument to write_pack_data is deprecated",
@@ -1183,7 +1184,7 @@ def write_pack_data(f, objects, num_objects=None, window=10):
     possible_bases = deque()
 
     # Write the pack
-    entries = []
+    entries = {}
     f = SHA1Writer(f)
     write_pack_header(f, num_objects)
     for type_num, path, neg_length, o in magic:
@@ -1202,7 +1203,7 @@ def write_pack_data(f, objects, num_objects=None, window=10):
         while len(possible_bases) > window:
             possible_bases.pop()
         crc32 = write_pack_object(f, winner[0], winner[1])
-        entries.append((o.sha().digest(), offset, crc32))
+        entries[o.sha().digest()] = (offset, crc32)
     return entries, f.write_sha()