[Linuxtrent] Re: Subversion, che mal di testa!

  • From: Lele Gaifax <lelegaifax@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sat, 24 Mar 2012 19:33:59 +0100

Il giorno Fri, 23 Mar 2012 22:10:49 +0100
Davide Setti <davide.setti@xxxxxxxxx> ha scritto:

> Bhe, questione di gusti suppongo. Certamente rispetto a svn non ci
> sono paragoni, però una volta che ti abitui all'estrema velocità di
> git, mercurial sembra proprio un chiodo...

... se l'unico strumento che hai è un martello... tutto ti sembra un
chiodo! 8-)

<devil's lawyer mode>

Giusto per avere qualche numero, mentre facevo altro ho impegnato il
mio pc in qualche prova, mirando al repo git del kernel Linux e al
repo hg di mozilla, e questi sono i numeri...


#########
## GIT ##
#########

$ time git clone git://github.com/torvalds/linux.git
Initialized empty Git repository in /tmp/linux/.git/
remote: Counting objects: 2401052, done.
remote: Compressing objects: 100% (759901/759901), done.
remote: Total 2401052 (delta 1973209), reused 2039080 (delta 1618000)
Receiving objects: 100% (2401052/2401052), 711.75 MiB | 425 KiB/s, done.
Resolving deltas: 100% (1973209/1973209), done.

real    58m34.192s
user    3m9.360s
sys     0m33.590s

$ du -sh linux/
1,3G    linux/

$ du -sh linux/.git
780M    linux/.git

$ find linux -path linux/.git -prune -o -print | wc -l
40695

$ time git clone linux linux2
Initialized empty Git repository in /tmp/linux2/.git/

real    3m37.051s
user    0m5.500s
sys     0m3.840s

$ time git log --oneline | wc -l
295476

real    0m15.854s
user    0m9.580s
sys     0m3.870s

$ cd linux
$ find drivers -name '*.c' | while read f; do cat MAINTAINERS >> $f; done
$ time git st > /dev/null

real    0m12.070s
user    0m0.260s
sys     0m0.690s

$ time git commit -m "Fake" -a
[master ef7db68] Fake
 7959 files changed, 60703293 insertions(+), 0 deletions(-)

real    13m32.699s
user    1m59.740s
sys     0m19.440s


########
## HG ##
########

$ time hg clone http://hg.mozilla.org/mozilla-central
directory di destinazione: mozilla-central
sto richiedendo tutte le modifiche
sto aggiungendo i changeset
sto aggiungendo i manifesti
sto aggiungendo le modifiche ai file
aggiunti 90140 changeset con 437312 modifiche a 92505 file (+7 head)
sto aggiornando al branch default
57495 files updated, 0 files merged, 0 files removed, 0 files unresolved

real    29m51.612s
user    7m31.200s
sys     0m51.790s

$ du -sh mozilla-central/
1,4G    mozilla-central/

$ du -sh mozilla-central/.hg
864M    mozilla-central/.hg

$ time hg clone mozilla-central m2
sto aggiornando al branch default
57495 files updated, 0 files merged, 0 files removed, 0 files unresolved

real    9m10.966s
user    1m2.310s
sys     0m21.010s

$ time hg log --template "{node|short}: {author|person} {date|shortdate} 
{desc|firstline}\n" | wc -l
90140

real    0m29.566s
user    0m28.640s
sys     0m0.730s

$ cd mozilla-central
$ find . -name '*.c' | while read f; do cat configure.in >> $f; done
$ find . -name '*.cc' | while read f; do cat configure.in >> $f; done
$ find . -name '*.cpp' | while read f; do cat configure.in >> $f; done
$ time hg st > /dev/null

real    0m6.616s
user    0m0.970s
sys     0m0.750s

$ time hg ci -m "Fake"

real    5m23.312s
user    2m57.910s
sys     0m11.090s

$ hg log -l1 --stat | tail -1
6843 file modificati, 62408160 inserimenti(+), 4 cancellazioni(-)


Sulla macchina dove eseguo le prove ho un filesystem (probabilmente)
mal configurato, quindi non fa molto testo il tempo assoluto, ma
comparativamente ritengo sia decisamente *esagerato* definire “chiodo”
hg, considerato che ci mette la metà per scaricare un repository
leggermente più grosso e un quarto dei commit di quello git... e
[solo] quattro volte[#] tanto a elencare tutta la storia del
repository [con un template custom]

Il confronto sul commit parla da solo...

Viste le ragguardevoli dimensioni, che a spanne considero di vari
ordini di misura più grossi della media dei progetti che solitamente
si manipolano, per me è poco significativo scegliere uno strumento o
l'altro *solo* perché uno ci mette 9 minuti contro 3 minuti... ma è
una considerazione gratuita, ognuno mette l'enfasi dove vuole :-)

> Poi certamente che fa pendere per git c'è anche github: clonare pypy
> da bitbucket è un parto, credo di averci messo 15 minuti l'ultima
> volta. Qui si tratta soprattutto di bitbucket, non tanto di mercurial:
> su bitbucket è lento pure git.

Appunto, quel che dicevo: continua a farmi sorridere tutto questo hype
per la strepitosa velocità dello strumento, quando quasi sempre il
limite non è dettato da quello!

buona serata,
ciao, lele.

[#] git: 295k commit -> 15 secondi, hg: 90k commit -> 30 secondi

--
Alcuni usano la statistica come l'ubriaco il lampione... per
sorreggersi!                                      -- anonimo
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: