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

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 8, 2018, 00:25 UTC
Message-ID
<xmqqy3dhiu08.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20180807232304.181764-1-jonathantanmy@google.com>
Jonathan Tan <jonathantanmy@google.com> writes:
Show 10 quoted lines
>> each other [*1*], so listing them in the offset order (with made-up
>> pathname information to _force_ that objects that live close
>> together in the original pack are grouped together by getting
>> similar names) might give us a better than horrible deltification.
>> I dunno.
>
> Before I write the NEEDSWORK comment, just to clarify - do you mean
> better than horrible object locality? I think deltification still occurs
> because pack-objects sorts the input when doing the windowed
> deltification, for example:

But what to delta against what else is determined by the pathname info, which is now lost by enumerating objects without tree/history walking. By giving phoney pathnames to objects while enumerating them in offset order and giving similar pathnames to objects closer to each other, I was hoping that better bases will likely to be in the same window. The order in which objects are prepared and fed to try_delta() is "group by type, and then sort by path-hash (major key) and size (descending order, used as minor key)", so that the largest among similarly named blobs is stored as base and other blobs with similar name try to become delta against that one.

>   git rev-parse HEAD:fetch-pack.c HEAD HEAD^ HEAD^^ \
> 	HEAD^^^ v2.17.0:fetch-pack.c | git pack-objects --window=2 abc
>
> produces a packfile with a delta, as checked by `verify-pack -v`.

Is that interesting? You can make the same argument that fast-import produces a packfile with a delta.

It is known to produce horrible delta---its delta base selection essentially is "you are giving me a new object? let me see if it deltas well with the object you gave me immediately before that (and nothing else)".

Previous: Jonathan TanNext: Jonathan Tan
Message 6 of 18 in “Repacking of promisor packfiles”
  1. 0/2 Repacking of promisor packfilesJonathan Tan, Aug 7, 2018
  2. 1/2 repack: refactor setup of pack-objects cmdJonathan Tan, Aug 7, 2018
  3. 2/2 repack: repack promisor objects if -a or -A is setJonathan Tan, Aug 7, 2018
  4. Junio C HamanoAug 7, 2018
  5. Jonathan TanAug 7, 2018
  6. Junio C HamanoAug 8, 2018
  7. Jonathan TanAug 8, 2018
  8. Jeff KingAug 8, 2018
  9. Junio C HamanoAug 8, 2018
  10. Junio C HamanoAug 7, 2018
  11. Jonathan TanAug 7, 2018
  12. Junio C HamanoAug 8, 2018
  13. 0/2 Repacking of promisor packfilesJonathan Tan, Aug 8, 2018
  14. 1/2 repack: refactor setup of pack-objects cmdJonathan Tan, Aug 8, 2018
  15. 2/2 repack: repack promisor objects if -a or -A is setJonathan Tan, Aug 8, 2018
  16. Junio C HamanoAug 9, 2018
  17. Jonathan TanAug 9, 2018
  18. Duy NguyenAug 18, 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.