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

Re: Initial push of a fully packed repo - why repack?

From
Nicolas Pitre <nico@cam.org>
Date
Apr 17, 2007, 02:49 UTC
Message-ID
<alpine.LFD.0.98.0704162235350.4504@xanadu.home>
In-Reply-To
<46a038f90704161928q4597c97ajd33106f119516328@mail.gmail.com>
On Tue, 17 Apr 2007, Martin Langhoff wrote:
Show 8 quoted lines
> On 4/17/07, Nicolas Pitre <nico@cam.org> wrote:
> > On Tue, 17 Apr 2007, Martin Langhoff wrote:
> > > Does it make sense to detect and optimise for this case?
> > Maybe...  Although the second repack during the push should be much much
> > faster than the first one.
> 
> It is - but it still burns through perhaps 1 minute of CPU and IO
> rewriting the exact same pack as you can see:

Sure. On the IO you can't save. You'll have to copy the packanyway and with all objects being "reused" the pack-objects code is basically not doing much more than a straight cp would do.

What is costly is figuring out if the single pack you have actually contains all the objects you wish to push, and _only_ the objects you wish to push. That is the real cost. By the time all those objects are listed and accounted then repacking is basically copying the data over with almost no CPU usage. In other words, the cost to determine if it is OK to simply send the pack you already have and actually sending it would be sensibly the same.

Nicolas
Previous: Martin Langhoff
Message 4 of 4 in “Initial push of a fully packed repo - why repack?”
  1. Martin LanghoffApr 17, 2007
  2. Nicolas PitreApr 17, 2007
  3. Martin LanghoffApr 17, 2007
  4. Nicolas PitreApr 17, 2007

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.