On Fri, Nov 2, 2018 at 7:19 AM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Farhan Khan <khanzf@xxxxxxxxx> writes: > > > ...Where is this in the git code? That might > > serve as a good guide. > > There are two major codepaths. One is used at runtime, giving us > random access into the packfile with the help with .idx file. The > other is used when receiving a new packstream to create an .idx > file. The third path is copying/reusing objects in builtin/pack-objects.c::write_reuse_object(). Since it's mostly encoding the header of new objects in pack, it could also be a good starting point. Then you can move to write_no_reuse_object() and get how the data is encoded, deltified or not (yeah not parsed, but I think it's more or less the same thing conceptually). -- Duy