2
0
Эх сурвалжийг харах

Sort entries before writing index file.

Jelmer Vernooij 16 жил өмнө
parent
commit
ae40d645de

+ 6 - 6
dulwich/pack.py

@@ -417,11 +417,15 @@ class PackData(object):
 
   def create_index_v1(self, filename):
     entries = list(self.iterentries())
+    # Sort entries first
+    entries = sorted(entries)
     write_pack_index_v1(filename, entries, self.calculate_checksum())
 
   def create_index_v2(self, filename):
     entries = list(self.iterentries())
-    write_pack_index_v1(filename, entries, self.calculate_checksum())
+    # Sort entries first
+    entries = sorted(entries)
+    write_pack_index_v2(filename, entries, self.calculate_checksum())
 
   def get_stored_checksum(self):
     return self._stored_checksum
@@ -544,6 +548,7 @@ def write_pack(filename, objects, num_objects):
         entries, data_sum = write_pack_data(f, objects, num_objects)
     except:
         f.close()
+    entries.sort()
     write_pack_index_v2(filename + ".idx", entries, data_sum)
 
 
@@ -577,9 +582,6 @@ def write_pack_index_v1(filename, entries, pack_checksum):
             crc32_checksum.
     :param pack_checksum: Checksum of the pack file.
     """
-    # Sort entries first
-
-    entries = sorted(entries)
     f = open(filename, 'w')
     f = SHA1Writer(f)
     fan_out_table = defaultdict(lambda: 0)
@@ -661,8 +663,6 @@ def write_pack_index_v2(filename, entries, pack_checksum):
             crc32_checksum.
     :param pack_checksum: Checksum of the pack file.
     """
-    # Sort entries first
-    entries = sorted(entries)
     f = open(filename, 'w')
     f = SHA1Writer(f)
     f.write('\377tOc')

+ 1 - 0
dulwich/tests/test_pack.py

@@ -198,6 +198,7 @@ class TestPackIndexWriting(object):
     def test_single(self):
         pack_checksum = 'r\x19\x80\xe8f\xaf\x9a_\x93\xadgAD\xe1E\x9b\x8b\xa3\xe7\xb7'
         my_entries = [('og\x0c\x0f\xb5?\x94cv\x0br\x95\xfb\xb8\x14\xe9e\xfb \xc8', 178, 42)]
+        my_entries.sort()
         self._write_fn("single.idx", my_entries, pack_checksum)
         idx = PackIndex("single.idx")
         self.assertEquals(idx.version, self._expected_version)