On Fri, Jan 29, 2021 at 03:03:08PM -0800, Junio C Hamano wrote: > Taylor Blau <me@xxxxxxxxxxxx> writes: > > > So, I think that teaching pack-objects a way to understand a caller that > > says "include objects from packs X, Y, and Z, but not if they appear in > > packs A, B, or C, and also pull in any loose objects" is the best way > > forward here. > > Are our goals still include that the resulting packfile has good > delta compression and object locality? Reachability traversal > discovers which commit comes close to which other commits to help > pack-objects to arrange the resulting pack so that objects that > appear close together in history appears close together. It also > gives each object a pathname hint to help group objects of the same > type (either blobs or trees) with like-paths together for better > deltification. I think our goals here are somewhere between having fewer packfiles while also ensuring that the packfiles we had to create don't have horrible delta compression and locality. But now that you do mention it, I remember the reachability traversal's bringing in object names was a reason that we decided to implement this series using a reachability traversal in the first place. > Without reachability traversal, I would imagine that it would become > quite important to keep the order in which objects appear in the > original pack, and existing delta chain, as much as possible, or > we'd be seeing a horribly inefficient pack like fast-import would > produce. Yeah; we'd definitely want to feed the objects to pack-objects in the order that they appear in the original pack. Maybe that's not that bad a tradeoff to make, though... > Thanks. Thanks, Taylor