Re: [PATCH] git exproll: steps to tackle gc aggression
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 10, 2013, 05:26 UTC
- Message-ID
- <7vbo562k1i.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20130809221615.GA7160@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 6 quoted lines
> ... The reason we do not store thin-packs on disk is that you > run into problems with cycles in the delta graph (e.g., A deltas against > B, which deltas against C, which deltas against A; at one point you had > a full copy of one object which let you create the cycle, but you later > deleted it as redundant with the delta, and now you cannot reconstruct > any of the objects).
As an extension to that is that a thin-pack will make the "validity" of a single pack dependent on its surroundings, making "verify-pack" useless. It may say "everything is fine", but corruption of another pack that holds a base object a delta in it depends on will render the pack unusable.
With the current arrangement, if you grab a single pack and re-idx it, you know you can reconstruct all the objects in it.
The original reason was not cycles; it was primarily because we did not want to have to map more than one packfile while reconstructing the delta chain for a single object (this was way before the "open small mmap windows into a large packfile" was invented).