From: Jeff King Date: Fri, 18 Nov 2011 21:08:25 GMT Subject: Re: [PATCH] receive-pack, fetch-pack: reject bogus pack that records objects twice Message-ID: <20111118210825.GA14710@sigill.intra.peff.net> In-Reply-To: <7v62ihkzhb.fsf@alter.siamese.dyndns.org> On Fri, Nov 18, 2011 at 11:22:08AM -0800, Junio C Hamano wrote: > >> > If we are fixing a thin pack (which should be the case most of the > >> > time), we are rewriting the packfile anyway. Shouldn't we just omit > >> > the duplicate? > >> ... > > ... But I guess there is some complexity > > with deltified entries? As in, if the first entry is deltified but the > > second is not, you would want to keep the second one? > > I think you answered your own question here; it is not "some complexity" > but is exactly the "you need to memmove() in the output file" situation in > the message you are responding to. > > Upon seeing a delta, you would not know if the same object as this delta > represents appears later in the pack stream, which means until you read to > the end you wouldn't know. You obviously would not want to hold onto all > deltas in-core to "just omit the duplicate". OK, that makes sense to me. It's nice to hear it confirmed from somebody who obviously thought more about it. -Peff