Re: [PATCH] git exproll: steps to tackle gc aggression
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:58:23
Jeff King [off-list ref] 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).