Blog | Git a Mercurial

Git a Mercurial

Nechci tak úplně psát srovnání Git vs Mercurial. Spíš jen shrnu postřehy, které jsem za pár let používání DVCS nasbíral. Ale už teď předem říkám, že to Gitu hodlám pořádně nandat.

Git je prý rychlejší. Git i Mercurial jsou tak rychlé, že je to ale vlastně jedno. Já jsem nepoznal rozdíl.

Git je směsice C a Perlu. Tvrdí se o něm, že je modulární. Já si pod slovem modulární představuju něco jiného haldu funkcí navršených na sebe (stejným stylem, jako jsou navršené funkce v PHP).

O Mercurialu se tvrdí, že je monolitický. Je napsaný převážně v Pythonu a většina funkcionalit jsou moduly. Je snadné si další moduly stáhnout z internetu. Kdo má rád objektový kód a rád se hrabe ve zdrojácích svých nástrojů, bude z Mercurialu mnohem šťastnější. Takže přátelé ne Git, ale Mercurial je modulární.

Mercurial má debugger a celý průchod jakékoliv akce se dá krokovat. Už se mi to párkrát hodilo.

Mercurial při pádu vrátí tradiční stack trace a když potřebuju něco odladit (vlastní plugin), můžu si do daného bodu dát vlastní logování apod.

Mercurial rozumí pseudojazyku, který připomíná lidštinu (všechny commity z ledna: hg log -d „jan 2012 to feb 2012“). Příkazy v Gitu připomínají MD5 sebe samého.

Mercurial používá hashe i čísla revizí (pro vnitřní použití). Když s někým dělám code review ve dvou, je mnohem rychlejší říct: „koukni na 127“, než „koukni na há šest bé pět cé sedm osm jednaa… kua… je to pátý od vrchu“

Tak nějak celá příkazová řádka je v Mercurialu logická. Jestli SVN je CVS done right, tak Mercurial je Git done right. Tak například. Koho by napadlo, že push-pull nejsou opačné operace? Že Mercurial to má správně, zatímco Git tam musí ještě narvat update. A update? Koho napadlo, že update na gitu nebude a update se bude dělat stejným příkazem, jako se vytváří branch. O git resetu ani nemluvím, mám pocit, že reset je snad na všechno (tipnete si, co dělá git reset –hard HEAD~3 ? A vysvětlí mi někdo, proč v jednom příkazu používám malá a velká písmena s ASCII?). Napsat, že si vývojáři jádra Linuxu chtěli přenést něco z Windows a resetovat často a hodně, to už by byl asi moc velký hejt.

Jo, branchování. V tom jediném je snad Git lepší. Mercurial má 3 druhy branchování, žádný z nich není tak dobrý, jako to má git. Aspoň že tak.

Staging area? Prezentováno jako velký klad Gitu. Já to považuju za zbytečný mezikrok. Default má být přesně opačný – defaultně commitni všechno, pokud neřeknu jinak. Protože přesně takhle žije většina vývojářů (nebo aspoň těch, kteří dělají TDD a commitují pokaždé, když jim po úpravě projdou testy).

Proč má help ke git log 30 stránek a k hg jen 2 a půl? (ostatní příkazy to mají podobně) Je to proto, že má git a) o tolik víc užitečných přepínačů, b) o tolik víc neužitečných přepínačů, c) o tolik méně logické rozhraní, že musí být víc dokumentováno? Bude to asi kombinace.

Proč se na mazání commitů daleko za head používá git rebase a proč se commity opravdu smažou a nevzniknou místo toho inverzní commity, to nechápu dodnes. Když zjistím, že ty commity nebyly ve skutečnosti až tak špatné, kde je vyhrabu?

K distribuovaným verzovacím systémům mě před lety přivedl Karmi. A za to mu patří můj velký dík. Akorát já začal s Gitem a použitelnost z příkazové řádky byla proti SVN asi jako dostat na hraní Counterstrike volant Když jsem přešel z SVN na Mercurial, všechno šlo samo.

Neberte tento článek moc objektivně. Mercurial opravdu umím a od začátku mi funguje a vede mě k tomu psát příkazy, které se mi líbí. Git mi od začátku připomíná Linux. Se všemi klady i zápory.

Navíc se nám tu rýsují nástroje jako Veracity, které si berou správné branchování z Gitu a správné rozhraní v příkazové řádce z Mercurialu. Jen je nikdo nepoužívá.

Programování

Předejte zkušenosti i dalším a sdílejte tento článek!

Předchozí článek
Následující článek


Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích