[libvirt] Repack git repo?

Michal Privoznik mprivozn at redhat.com
Thu Aug 3 09:33:29 UTC 2017


On 08/03/2017 09:57 AM, Daniel P. Berrange wrote:
> On Thu, Aug 03, 2017 at 09:16:13AM +0200, Michal Privoznik wrote:
>> So I was checking out the repo the other day and it took ages. So it got
>> me thinking what might be the problem. Looks like a part of it is that
>> our pack is split among ~250 files. Therefore when somebody does
>> checkout git needs to repack it into a single pack every time. And this
>> may take ages on such slow processor as Atom is. However, reading some
>> docs on this it looks like 'git gc --aggressive' is not advised rather
>> than 'git repack'.
> 
> I created a 'tmp' repo and ran 'repack' on it, but afaict, there's no
> appreciable difference.

In fact, there is. I just finished running 'git repack -a -d' over the
'tmp' repo and here are the results:

$ time git clone git://libvirt.org/libvirt.git libvirt_temp.git
Cloning into 'libvirt_temp.git'...
remote: Counting objects: 236385, done.
remote: Compressing objects: 100% (38422/38422), done.
remote: Total 236385 (delta 200296), reused 232761 (delta 196975)
Receiving objects: 100% (236385/236385), 297.08 MiB | 5.55 MiB/s, done.
Resolving deltas: 100% (200296/200296), done.

real    2m40.089s
user    1m2.831s
sys     0m2.970s

$ time git clone git://libvirt.org/tmp tmp.git
Cloning into 'tmp.git'...
remote: Counting objects: 236365, done.
remote: Compressing objects: 100% (35400/35400), done.
remote: Total 236365 (delta 200277), reused 236065 (delta 199977)
Receiving objects: 100% (236365/236365), 297.19 MiB | 6.17 MiB/s, done.
Resolving deltas: 100% (200277/200277), done.

real    1m16.209s
user    1m7.782s
sys     0m2.940s

In the first case, the network transmission took ~54s, so prep work on
server took ~1m45s. In the second case, network transmission took 48s,
so prep work took just ~28s. Therefore I think it makes sense to run the
command. If nobody objects I can do that later today.

Michal




More information about the libvir-list mailing list