From: Junio C Hamano Date: Sat, 10 Aug 2013 05:26:33 GMT Subject: Re: [PATCH] git exproll: steps to tackle gc aggression Message-ID: <7vbo562k1i.fsf@alter.siamese.dyndns.org> In-Reply-To: <20130809221615.GA7160@sigill.intra.peff.net> Jeff King writes: > ... 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).