Kiln » Dependencies » Dulwich Read More
Clone URL:  
Pushed to one repository · View In Graph Contained in master

Add PackBasedObjectStore.pack_loose_objects().

Changeset 1637a77fa457

Parent 7640d2b4051f

by Jelmer Vernooij

Changes to 3 files · Browse files at 1637a77fa457 Showing diff from parent 7640d2b4051f Diff from another changeset...

Change 1 of 1 Show Entire File NEWS Stacked
 
20
21
22
 
 
23
24
25
 
20
21
22
23
24
25
26
27
@@ -20,6 +20,8 @@
    * Allow overriding paths to executables in GitSSHClient.   (Ross Light, Jelmer Vernooij, #585204) + + * Add PackBasedObjectStore.pack_loose_objects(). (Jelmer Vernooij)     TESTS  
 
272
273
274
 
275
276
277
278
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
280
281
 
385
386
387
 
 
 
388
389
390
 
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
 
402
403
404
405
406
407
408
409
410
@@ -272,10 +272,27 @@
  return self._pack_cache     def _iter_loose_objects(self): + """Iterate over the SHAs of all loose objects."""   raise NotImplementedError(self._iter_loose_objects)     def _get_loose_object(self, sha):   raise NotImplementedError(self._get_loose_object) + + def _remove_loose_object(self, sha): + raise NotImplementedError(self._remove_loose_object) + + def pack_loose_objects(self): + """Pack loose objects. + + :return: Number of objects packed + """ + objects = set() + for sha in self._iter_loose_objects(): + objects.add((self._get_loose_object(sha), None)) + self.add_objects(objects) + for obj, path in objects: + self._remove_loose_object(obj.id) + return len(objects)     def __iter__(self):   """Iterate over the SHAs that are present in this store.""" @@ -385,6 +402,9 @@
  return None   raise   + def _remove_loose_object(self, sha): + os.remove(self._get_shafile_path(sha)) +   def move_in_thin_pack(self, path):   """Move a specific file containing a pack into the pack directory.  
 
83
84
85
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
88
89
 
98
99
100
101
102
103
104
105
106
 
83
84
85
 
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
116
117
118
 
 
 
 
 
119
@@ -83,7 +83,25 @@
  self.store = MemoryObjectStore()     -class DiskObjectStoreTests(ObjectStoreTests, TestCase): +class PackBasedObjectStoreTests(ObjectStoreTests): + + def test_empty_packs(self): + o = DiskObjectStore(self.store_dir) + self.assertEquals([], o.packs) + + def test_pack_loose_objects(self): + o = DiskObjectStore(self.store_dir) + b1 = make_object(Blob, data="yummy data") + o.add_object(b1) + b2 = make_object(Blob, data="more yummy data") + o.add_object(b2) + self.assertEquals([], o.packs) + self.assertEquals(2, o.pack_loose_objects()) + self.assertNotEquals([], o.packs) + self.assertEquals(0, o.pack_loose_objects()) + + +class DiskObjectStoreTests(PackBasedObjectStoreTests, TestCase):     def setUp(self):   TestCase.setUp(self) @@ -98,9 +116,4 @@
  o = DiskObjectStore(self.store_dir)   self.assertEquals(os.path.join(self.store_dir, "pack"), o.pack_dir)   - def test_empty_packs(self): - o = DiskObjectStore(self.store_dir) - self.assertEquals([], o.packs) - -  # TODO: MissingObjectFinderTests