Re: Understanding pack format
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Nov 2, 2018, 16:00 UTC
- Message-ID
- <CACsJy8DFUeEddSa2z4VTSqhaUBJ4+SUf8xvjh6iWY2Phhh96iQ@mail.gmail.com>
- In-Reply-To
- <xmqqlg6covi6.fsf@gitster-ct.c.googlers.com>
On Fri, Nov 2, 2018 at 7:19 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> > Farhan Khan <khanzf@gmail.com> 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