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

pack file object size question

From
FKFarhan Khan <khanzf@gmail.com>
Date
Dec 16, 2018, 21:52 UTC
Message-ID
<CAFd4kYCHefqRsiFK=K7MHp=MTwOBXB5979WobEm3w1J5q1bZ0w@mail.gmail.com>
Hi all,

I am trying to write an implementation of "git index-pack" and having a bit of trouble with understanding the ".pack" format. Specifically, I am having trouble figuring out the boundary between two objects in the pack file.

It seems that there is a 12 byte header (signature, version, number of objects), then it immediately jumps into each individual object. The object consists of the object header, then the zlib deflated object, followed by a SHA1 of the above. Is this accurate? If so, where is the size of the entire object size (object header + zlib deflated object + sha) identified in git source? I tracked it down to what I believe is builtin/index-pack.c under the function parse_pack_objects, the for-loop currently in line 1138, but I cannot find where that object size is calculated for the next iteration of the loop.

I think what I most specifically need is where the size of the deflated object is identified.

Thanks, -- Farhan Khan PGP Fingerprint: B28D 2726 E2BC A97E 3854 5ABE 9A9F 00BC D525 16EE

Next: Jonathan Nieder
Message 1 of 6 in “pack file object size question”
  1. Farhan KhanDec 16, 2018
  2. Jonathan NiederDec 16, 2018
  3. Farhan KhanDec 16, 2018
  4. Jonathan NiederDec 17, 2018
  5. Duy NguyenDec 17, 2018
  6. Jeff KingDec 17, 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.