Re: Understanding pack format
- Date: Mon, 5 Nov 2018 21:23:45 -0500
- From: Farhan Khan <khanzf@xxxxxxxxx>
- Subject: Re: Understanding pack format
On Fri, Nov 2, 2018 at 12:00 PM Duy Nguyen <pclouds@xxxxxxxxx> wrote:
> 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).
To follow-up from the other day, I have been reading the code that
retrieves the pack entry for the past 3 days now without much success.
But there are quite a few abstractions and I get lost half-way down
I am trying to identify where the content from a pack comes from. I
traced it back to sha1-file.c:read_object(), which will return the
'content'. I want to know where the 'content' comes from, which seems
to come from sha1-file.c:oid_object_info_extended. This goes into
packfile.c:find_pack_entry(), but from here I get lost. I do not
understand what is happening.
How does it retrieve the pack content? I am lost here. Please assist.
This is in the technical git documentation, but it was not clear.
PGP Fingerprint: B28D 2726 E2BC A97E 3854 5ABE 9A9F 00BC D525 16EE