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

Re: Understanding Binary Deltas within Packfile

From
Duy Nguyen <pclouds@gmail.com>
Date
Mar 20, 2018, 19:12 UTC
Message-ID
<CACsJy8ChV5sXV7N0+N0y9ehO56UCJ8fuqjFbHbbnez35P5af4g@mail.gmail.com>
In-Reply-To
<751c0493-435c-4a98-4d1c-e3d6677c62d8@arlut.utexas.edu>
On Tue, Mar 20, 2018 at 7:34 PM, Luke Robison <robison@arlut.utexas.edu> wrote:
Show 20 quoted lines
> On 3/20/2018 11:03 AM, Duy Nguyen wrote:
>>
>> On Tue, Mar 20, 2018 at 4:43 PM, Luke Robison <robison@arlut.utexas.edu>
>> wrote:
>>>
>>> Is there any documentation of the contents of the binary delta datain a
>>> packfile, and how to interpret them?  I found
>>>
>>> https://github.com/git/git/blob/master/Documentation/technical/pack-format.txt
>>> documenting the packfile itself, but the "compressed delta data" seems
>>> largely undocumented.  The source code of
>>> https://github.com/git/git/blob/master/diff-delta.c is pretty dense.
>>
>> The output is consumed by patch_delta()  in patch-delta.c if I'm not
>> mistaken. This function is less than 100 lines, probably much easier
>> to see the delta format.
>
> Thank you, that was much easier to read, and I've got my prototype working
> now.  I also found this site to be quite helpful:
> http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/#delta_encoding

By the way, I forgot to add, if you want to improve pack-format.txt (since you study it anyway), patches are always welcome.

-- 
Duy
Previous: Luke Robison
Message 4 of 4 in “Understanding Binary Deltas within Packfile”
  1. Luke RobisonMar 20, 2018
  2. Duy NguyenMar 20, 2018
  3. Luke RobisonMar 20, 2018
  4. Duy NguyenMar 20, 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.