Initial push of a fully packed repo - why repack?

4 messages, 2 authors, 2016-06-15 · open the first message on its own page

Initial push of a fully packed repo - why repack?

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:04

Pushing to a new empty repo, git spends a lot of time repacking, even
if we have just run git-repack. The process looks like

 - use parsecvs to import a large CVS repo
 - git-repack -a -d (packs to ~550MB, taking ~1hr)
 - git-push --all git+ssh://host/newlycreatedrepo.git

Does it make sense to detect and optimise for this case?

cheers,


martin

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

From: Nicolas Pitre <hidden>
Date: 2016-06-15 22:43:04

On Tue, 17 Apr 2007, Martin Langhoff wrote:
Pushing to a new empty repo, git spends a lot of time repacking, even
if we have just run git-repack. The process looks like

- use parsecvs to import a large CVS repo
- git-repack -a -d (packs to ~550MB, taking ~1hr)
- git-push --all git+ssh://host/newlycreatedrepo.git

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.


Nicolas

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

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:04

On 4/17/07, Nicolas Pitre [off-list ref] wrote:
On Tue, 17 Apr 2007, Martin Langhoff wrote:
quoted
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:

Generating pack...
Done counting 290123 objects.
Deltifying 290123 objects.
 100% (290123/290123) done
Writing 290123 objects.
 100% (290123/290123) done
Total 290123 (delta 234293), reused 290123 (delta 234293)

cheers,


martin

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

From: Nicolas Pitre <hidden>
Date: 2016-06-15 22:43:04

On Tue, 17 Apr 2007, Martin Langhoff wrote:
On 4/17/07, Nicolas Pitre [off-list ref] wrote:
quoted
On Tue, 17 Apr 2007, Martin Langhoff wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help