From: Duy Nguyen Date: Sat, 28 Feb 2015 11:44:07 GMT Subject: Re: [PATCH v2 2/2] index-pack: kill union delta_base to save memory Message-ID: In-Reply-To: On Sat, Feb 28, 2015 at 4:18 AM, Junio C Hamano wrote: > Nguyễn Thái Ngọc Duy writes: > >> Notice that with "recent" Git versions, ofs-delta objects are >> preferred over ref-delta objects and ref-delta objects have no reason >> to be present in a clone pack. > > It is true that we try to use ofs-delta as much as possible, but > where does "have no reason to be present" come from? Lack of knowledge, or writing without double checking the code. > When an object cannot be represented as an ofs-delta (which can only > refer backwards), don't we use ref-delta, instead of storing it as a > deflated-full object? Ah I think you're right. The decision to choose ofs-delta in pack-objects is if ofs-delta is enabled _and_ the offset to base is available (i.e. base is already written). > Probably "Not so ancient versions of Git tries to use ofs-delta > encoding whenever possible, so it is expected that objects encoded > using ref-delta are minority" may be closer to the truth. And that > observation does justify why using two separate pools (one with > 8-byte entries for ofs-delta, the other with 20-byte entries for > ref-delta) is a better idean than using one pool with 20-byte > entries for both kinds. Yes. Looks good. Should I send a patch, or you fix the commit message locally? -- Duy