pack-objects: match prune logic for discarding objects
commitabcb86553d3ec4afffa4e3963089dffe0559740e
authorJeff King <peff@peff.net>
Wed, 15 Oct 2014 22:42:09 +0000 (15 18:42 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2014 17:10:43 +0000 (16 10:10 -0700)
tree4ad24dfe7d40b7b079bd186a77bfabd3c0570f9e
parentd0d46abc167d18fdbdbf2ece8ca6df704517c62f
pack-objects: match prune logic for discarding objects

A recent commit taught git-prune to keep non-recent objects
that are reachable from recent ones. However, pack-objects,
when loosening unreachable objects, tries to optimize out
the write in the case that the object will be immediately
pruned. It now gets this wrong, since its rule does not
reflect the new prune code (and this can be seen by running
t6501 with a strategically placed repack).

Let's teach pack-objects similar logic.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c
reachable.c
reachable.h
t/t6501-freshen-objects.sh