path: root/Documentation/technical
diff options
authorJeff King <>2012-04-07 10:30:09 (GMT)
committerJunio C Hamano <>2012-04-11 18:09:49 (GMT)
commit7e52f5660e542cf801e8fc6902a30cc572c13736 (patch)
tree203e0339a37a81deb5ff7c65e933ae197e91a0d1 /Documentation/technical
parente8dde3e5f9ddb7cf95a6ff3cea6cf07c3a2db80d (diff)
gc: do not explode objects which will be immediately pruned
When we pack everything into one big pack with "git repack -Ad", any unreferenced objects in to-be-deleted packs are exploded into loose objects, with the intent that they will be examined and possibly cleaned up by the next run of "git prune". Since the exploded objects will receive the mtime of the pack from which they come, if the source pack is old, those loose objects will end up pruned immediately. In that case, it is much more efficient to skip the exploding step entirely for these objects. This patch teaches pack-objects to receive the expiration information and avoid writing these objects out. It also teaches "git gc" to pass the value of gc.pruneexpire to repack (which in turn learns to pass it along to pack-objects) so that this optimization happens automatically during "git gc" and "git gc --auto". Signed-off-by: Jeff King <> Acked-by: Nicolas Pitre <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/technical')
0 files changed, 0 insertions, 0 deletions