virtualevn i hg vs git

Virtualenv

Ponieważ lubię testować różne, często mało popularne Pythonowe biblioteki, zazwyczaj zamiast domyślnego menadżera pakietów używam easy_install lub pip. Nie zawsze pamiętam o usuwaniu niepotrzebnych pakietów, do tego dochodzą zależności i powoli robi się w systemie syf. Sytuację ratuje jednak virtualenv, który pozwala szybko zbudować piaskownicę.

Ponieważ na zaliczenie mam napisać grę sieciową, jako główny język wybrałem Pythona. Z racji tego, że na docelowym komputerze nie ma ani twisted ani pyglet, zbudowałem własne środowisko w którym rozwijam projekt.

piotrek@archbook# mkdir pysandbox
piotrek@archbook# cd pysandbox
piotrek@archbook# virtualenv .
New python executable in ./bin/python
Installing setuptools............done.
piotrek@archbook# source bin/activate
(pysandbox)piotrek@archbook# easy_install twisted
...
(pysandbox)piotrek@archbook# easy_install pyglet
...

Hg vs Git

Jakiś czas temu google ogłosiło że oprócz svn, doda możliwość korzystania z mercuriala. Dodatkowo, umieścili wytłumaczenie dlaczego z trzech najpopularniejszych DVCS wybrali właśnie hg. Testowana była przede wszystkim wydajność transferu danych i szczerze mówiąc byłem mocno zaskoczony słabymi wynikami gita. Ponieważ akurat przygotowałem parę plików, wypróbowałem oba programy, tworząc nowe repozytoria i wysyłając kod odpowiednio do bitbucket i github.

piotrek@archbook# du -hca pysandbox  | tail -n1
25M     razem

Na początku mercurialem wysyłam na bitbucket:

piotrek@archbook# hg init
piotrek@archbook# hg add .
piotrek@archbook# hg commit -m init
piotrek@archbook# time hg push http://bitbucket.org/Husio/pysandbox/
pushing to http://bitbucket.org/Husio/pysandbox/
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: Husio
password: 
bb/acl: Husio is allowed. accepted payload.
quota: 9.1 MB in use, 150.0 MB available (6.05% used)
hg push http://bitbucket.org/Husio/pysandbox/  3,51s user 0,15s system 0% cpu 6:39,46 total

A następnie dla porównania git i github:

piotrek@archbook# git init
piotrek@archbook# git add .
piotrek@archbook# git commit -m init
piotrek@archbook# git remote add origin git@github.com:husio/pysandbox.git
piotrek@archbook# time git push origin master
Counting objects: 1814, done.
Delta compression using 2 threads.
Compressing objects: 100% (1717/1717), done.
Writing objects: 100% (1814/1814), 6.74 MiB | 32 KiB/s, done.
Total 1814 (delta 139), reused 0 (delta 0)
To git@github.com:husio/pysandbox.git
 * [new branch]      master -> master
git push origin master  6,10s user 0,14s system 2% cpu 3:50,52 total

Nie wiem jakie zasoby przyznaje darmowym użytkownikom każdy z portali, ale prawdopodobnie o wiele więcej niż jestem w stanie wysłać używając neostrady 1MB. Starałem się wykonać jak najbardziej obiektywne testy, używając domyślnych ustawień obu programów i popularnych opcji. Wyraźnie jedna widać, że wysyłanie tego samego zbioru plików mercurialem trwa dwa razy dłużej niż gitem. Dodatkowo, przez całe 6 minut, hg nie wypisał ani jednego komunikatu, więc nie wiedziałem czy coś robi, czy się zawiesił lub na coś czeka. Dopiero gdy skończył pracę, wydrukował podsumowanie (git przez cały czas pokazuje ile procent już przesłał). Był taki czas że chciałem nauczyć się hg żeby w razie potrzeby umieć z niego korzystać. Teraz jakoś odeszła mi ochota..

grizz

24.08.2009

Jeszcze miłośnicy mercuriala podnoszą, ze ten jest znacznie łatwiejszy w przyswojeniu... doświadczyłeś tej łatwości?

Husio

24.08.2009

Jeszcze miłośnicy mercuriala podnoszą, ze ten jest znacznie łatwiejszy w przyswojeniu... doświadczyłeś tej łatwości?

Nie znam mercuriala na tyle żeby móc powiedzieć, że jest łatwiejszy od gita. Gita znam jednak na tyle, żeby móc powiedzieć, że jest łatwiejszy od mercuriala ;)

Używałem hg bardzo krótko i jedynie podstawowych poleceń. Niewiele różnią się od tych które używa się w gicie.

salmon

24.08.2009

jako dodatek do virtualenv polecam virtualenvwrapper: http://www.doughellmann.com/projects/virtualenvwrapper/ bardzo dużo pomaga i ułatwia prace.

riklaunim

24.08.2009

porównaj czasy komitowania np. iso na lokalne repozytorim :)

grizz

24.08.2009

riklaunim powiedział:

porównaj czasy komitowania np. iso na lokalne repozytorim :)

Nie bądź taki tajemniczy... tylko sam napisz co i jak ;)

zgoda

20.10.2009

BitBucket daje Ci 150MB/repo (możesz mieć ile chcesz), GitHub 300MB na wszystkie.

Ja się przesiadałem na DVCS z SVN i łatwiej mi było przyswoić Mercuriala - polecenia bardzo podobne i nie musiałem za często sięgać do dokumentacji. Git dopiero przede mną i nie kusi.