On Thu, Jun 08, 2017 at 03:05:37AM -0400, Jeff King wrote: > On Thu, Jun 08, 2017 at 02:34:36PM +0900, Mike Hommey wrote: > > > In 618e613a70, 10 years ago, the default for pack depth used for > > git-pack-objects and git-repack was changed from 10 to 50, while > > leaving fast-import's default to 10. > > > > There doesn't seem to be a reason besides oversight for the change not > > having happened in fast-import as well. > > > > Interestingly, fast-import uses pack.depth when it's set, and the > > git-config manual says the default for pack.depth is 50. While the > > git-fast-import manual does say the default depth is 10, the > > inconsistency is also confusing. > > Makes sense. If anything, fast-import would want to allow a deeper depth > than normal, since (IIRC) its delta chains are always completely linear. > Whereas in a real pack, if we decide not to make a delta off the 50th > item in a chain, we usually find the 48th or 49th, and end up with a > bushier graph. > > It probably doesn't matter that much, though, as you'd really want to > `repack -f` afterwards if you care about getting good deltas. And one > base object every 50 versions is probably fine for keeping the initial > pack manageable. It actually is possible to have non-linear delta chains with fast-import, because the cat-blob command resets the delta base when storing a blob. See https://github.com/git/git/blob/v2.13.1/fast-import.c#L2984-L2987 As a side effect of that, git-cinnabar[1] ends up with decent-ish delta chains out of the box, without having to go with repack -f, when the mercurial server gives out changegroup version 2. Mike 1. https://github.com/glandium/git-cinnabar/