git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Junio C HamanoNext: Farhan Khan
Message 3 of 7 in “Understanding pack format”
  1. Farhan KhanNov 2, 2018
  2. Junio C HamanoNov 2, 2018
  3. Duy NguyenNov 2, 2018
  4. Farhan KhanNov 6, 2018
  5. Jeff KingNov 6, 2018
  6. Duy NguyenNov 6, 2018
  7. Duy NguyenNov 2, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.