Mirin webspace

Nejbohatší život má ten, kdo žije s minimem nároků

28. 7. 2009 - Komentáře (6) Ostatní

Od Subversion k Mercurialu

Dnes jsem skončil se Subversion. Veškeré repositáře jsem převedl na Mercurial. Měl jsem k tomu víc důvodů. Asi ten nejdůležitější byl ten, že se Subversion se mě oproti Mercurialu pracovalo dost nepohodlně, druhý byl ten, že v práci používáme Mercurial co si pamatuji a pořád se mi to pletlo, dost často jsem u sebe na VPS dělal hg st a zejména hg ci -A a ono nic.

Musím uznat, že bych tuhle změnu asi neudělal, pokud bych delší dobu nepoužíval Mercurial. Dost mě pokaždé u svn rozhodilo zejména to, že když jsem byl zase u svn, tak ačkoli se svn a Mercurial co do ovládání příliš neliší, tak filozofie obou je naprosto jiná a to mě vadilo nejvíc.

Decentralizovaný Mercurial, centralizované Subversion

To je ten největší rozdíl. Mercurial je totiž decentralizovaný SCM nástroj oproti Subversion, které je centralizované. To znamená ve zkratce to, že každý vývojář si pracuje u sebe - commity, branche, tagy - tohle všechno končí u něj v repositáři. Z toho plyne i to, že každý pracuje jakoby na své větvi a v případě potřeby si spojí (merge) data s kýmkoli potřebuje, kdokoliv si také může mergovat s nim. Není tady centrální repositář s trunk, branches a tags. Je pravda, že v práci dospěli k takovému nějakému decentralizovaně centralizovanému systému. Máme jeden repositář ten se stanovil jako "main" a v něm se nachází "spolehlivý" kód, který se pak sype na produkční servery. To samozřejmě nebrání mergování vývojářů mezi sebou. Jestli to je správné nebo ne, těžko říci.

Drobné ale příjemné odlišnosti

Dále jsou to drobné, ale příjemné odlišnosti, kvůli kterým je práce s Mercurialem také o dost příjemnější:

  • má jen jeden "revizní" adresář .hg na celý repositář, žádné .svn kam se podíváš
  • .hgignore, mě to vyhovuje více než svn propset
  • hg ci -A, vyřeší za mě všechny mazání a přidávání při commitu. V svn jsem pořád musel dělat svn rm, svn add. Možná jde tohle i v svn, jen se špatně četl help.
  • je to celé takové rychlejší
  • integrace s web prostředím je mnohem jednodušší

Dát repositář na web a povolit na něm push mě přišlo jednodušší než u svn. Žádný modul do apache, jen CGI pár voleb v konfiguraci apache a hotovo. Dokonce je v Mercurialu integrovaný web server pro snadné publikování vašeho repositáře na web.

Python, univerzální mocný prostředek

Bez zajímavosti není ani to, že velká část Mercurialu je napsaná v Pythonu, kritické části pak v C. To je mi velmi sympatické, ukazuje to na univerzálnost a sílu jakou Python disponuje. Web server, verzovací systém, GUI klient, command line klienti, web aplikace, tohle všechno v Mercurialu je a je to z velké části v Pythonu. Python tak např. PHP naprosto válcuje, to je nutné si přiznat. Navíc ta rychlost Mercurialu není vůbec špatná. Kdybych nesetrvával pouze u webu, dávno jsem se na PHP vykašlal a přešel na Python.

P.S. Poslední dobou všichni migrují na git, na něj jsem se ještě nekoukal, ale nějaké výraznější odlišnosti od Mercurialu bych neočekával. Přece jen to je také distribuovaný SCM, takže principy budou podobné, uvidíme časem. Také proto mě trochu zarazila migrace PHP repositáře z CVS na Subversion. Opravdu bych čekal spíš git, alespoň se na githubu zrcadlí.


Komentáře (6)

  1. Dundee - 28. 7. 2009 20:02

    Git používám na synchronizaci dat mezi dvěma počítači a to kvůli jeho závratné rychlosti. Holt ruka Linuse Torvaldse je znát. Pro své projekty pak používám Bazaar, který je celkem podobný Mercurialu, ale je lépe integrovaný do Ubuntu a lze pak využít skvělé úložiště Launchpad.

  2. koubel - 28. 7. 2009 22:47

    [1], no vida Bazaar je taky Pythoní záležitost, vypadá taky dobře, to napojení na Ubuntu a Launchpad hosting mu určitě dost pomáhá.

  3. lukas ;) - 29. 7. 2009 11:30

    "Kdybych nesetrvával pouze u webu, dávno jsem se na PHP vykašlal a přešel na Python." - tak to klidne udelej, ja jsem presel na Python+Django a kdyz se ted musim vratit k necemu starsimu kvuli udrzbe, tak je mi do place ;)

  4. koubel - 29. 7. 2009 17:38

    [3] - právě protože dělám převážně web (v práci jen web a tam jinou možnost než PHP nemáme) a u web aplikací nevidím moc důvodů proč přecházet od PHP k Pythonu

  5. lukas ;) - 29. 7. 2009 18:03

    [4] - django server uz je dneska pohoda, neni s tim zadny problem, v cechach uz je nekolik hostingu, ale samozrejme je lepsi vlastni server. Duvody bys pochopil, kdyby sis zkusil udelat par aplikaci v Djangu, je to sice vic znalosti nez PHP, ale bohate se to vrati, vsecno je tam mnohem prehlednejsi a cloveka v tom bavi delat (coz se u me nedalo u php po par letech rict) .. ale je to o tom si to vyzkouset ;)

  6. dafodil - 4. 8. 2009 16:43

    Koukam ze je to v posledni dobe nejaka moda s tim Mercurialem. Zrovna dneska sem nad tou migraci premyslel.. Asi nahoda ;)

Komentáře jsou uzavřeny.