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

Re: Ideas to speed up repacking

From
Duy Nguyen <pclouds@gmail.com>
Date
Dec 3, 2013, 10:17 UTC
Message-ID
<CACsJy8CBOp_5nwm=WWBG_AZ+h6M7L6WpdX4ACeJxwuJ0kqu0Gw@mail.gmail.com>
In-Reply-To
<xmqqli02pfnf.fsf@gitster.dls.corp.google.com>
On Tue, Dec 3, 2013 at 2:17 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 31 quoted lines
> Duy Nguyen <pclouds@gmail.com> writes:
>
>>> If nothing else has happened in the repository, perhaps, but I
>>> suspect that the real problem is how you would prove it.  For
>>> example, I am guessing that your Scenario 4 could be something like:
>>>
>>>     : setup #1
>>>     $ git repack -a -d -f
>>>     $ git prune
>>>
>>>     : scenario #4
>>>     $ git commit --allow-empty -m 'new commit'
>>>
>>> which would add a single loose object to the repository, advancing
>>> the current branch ref by one commit, fast-forwarding relative to
>>> the state you were in after setup #1.
>>>
>>> But how would you efficiently prove that it was the only thing that
>>> happened?
>>
>> Shawn mentioned elsewhere that we could generate bundle header in and
>> keep it in pack-XXX.bh file at pack creation time. With that
>> information we could verify if a ref has been reset, just fast
>> forwarded or even deleted.
>
> With what information? If you keep the back-then-current information
> and nothing else, how would you differentiate between the simple
> scenario #4 above vs 'lost and new' two commit versions of the
> scenario?  The endpoints should both show that one ref (and only one
> ref) advanced by one commit, but one has cruft in the object
> database while the other does not.

Yeah I was wrong. Reading Martin's mail again I wonder how we just "grab all objects and skip history traversal". Who will decide object order in the new pack if we don't traverse history and collect path information.

-- 
Duy
Previous: Junio C HamanoNext: Junio C Hamano
Message 5 of 7 in “Ideas to speed up repacking”
  1. Martin FickDec 2, 2013
  2. Junio C HamanoDec 3, 2013
  3. Duy NguyenDec 3, 2013
  4. Junio C HamanoDec 3, 2013
  5. Duy NguyenDec 3, 2013
  6. Junio C HamanoDec 3, 2013
  7. Martin FickDec 3, 2013

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.