Myslim ze o zakladni tezi clanku (ze je treba pouzivat changeset-based VCS) neni sporu. Ted je otazka jaky VCS pouzit. Ja jsem nedavno zkusil Mercurial: zda se ze to funguje a je to dobre dokumentovane. Muze nekdo znaly obou systemu popsat, proc bych mel chtit pouzivat Git a ne Mercurial? Git znam v podstate jen teoreticky (prakticky jsem si vyzkousel akorat reseni par chyb pres git bisect).
Nepoznám GIT. Mercurial sme skušali u nás nasadiť, ale mal nejaké pre nás dosť podstatné nedostatky (nesledujem jeho vývoj, ale myslím, že niektoré tak ľahko neodstránia):
- nemožno sa prihlasovať na SVN-WEBDAV pomocou klúčov. (nezvládal to klient, internetový prehliadač áno)
- na https SVN-WEBDAV sa nedá pristupovať cez http proxy. (nevie použiť CONNECT)
+ nejaké drobnosti, ktoré sa dali viac, či menej úspešne obísť.
Na co se Git nebo Hg potrebuje pripojovat na _SVN_-webdav? Ja si prave myslim ze krasa Gitu i Hg (i TLA/Arch) je v tom, ze repository je proste adresar, ktery zpristupnite _jakymkoli_ protokolem.
Historicky mel Mercurial (tez zvany Hg) mozna lepsi dokumentaci a intuitivnejsi ovladani, v tomhle za posledni pulrok az rok ale udelal Git hodne velky pokrok. Ja jsem zase prilis nepouzival Mercurial, takze rozdily znam jen teoreticky - Mercurial je portabilnejsi na non-POSIX systemy (Windows), v tom ale Git take ucinil vyrazny pokrok; Mercurial je pravdepodobne rychlejsi v cold cache situaci, Git je rychlejsi pri hot cache. Mercurial je psany v Pythonu, Git je psany v C (a trose shellu a Perlu). Bez nejakych tvrdych dat mam dojem, ze Git je pouzivan vice (krom kernelu projekty jako X.org, Ruby on Rails, Wine...). A Git ma hezci homepage! ;-))
Tezko se srovnavaji, protoze Git a Mercurial vznikly prakticky v tom samem okamziku (IIRC temer na den!) a od te doby jsou z nich do urcite miry rivalove, takze jejich moznosti jsou dosti vyrovnane; kazdy ze systemu ma trochu jinou filosofii a kazdemu asi bude vyhovovat jina.
Jinak je jeste zahodno zminit Bazaar, se kterym Git a Hg tvori takovou "velkou trojku" v soucasnosti siroce pouzivanych DVCS.
Mně se stejně víc líbí Git, ale taky bych se s ním už asi konečně měl naučit zacházet. :-) BTW, Pragmatic Programmers chystají knihu Pragmatic Version Controlwith Git, ale to asi víš. :-) (http://www.pragprog.com/titles/tsgit)
Je v pythonu a důraz klade na intuitivnost - ovládání je dost kompatibilní se SVN, dokumentace je bezva. Používají ho v Canonicalu - Ubuntu (launchpad.net).
Pokud vím, tak všechny tři systému jsou plus mínus ekvivalentní, záleží na chuti. Git by měl být oproti Bazaaru asi rychlejší.
Ja trosku mercurial pouzival (drive nez git) ale ne dostatecne abych vynasel nejake soudy. Treba e2fsprogs preslo z hg na git. Par veci na toto tema lze nejit v Tytsovo blogu:
Na mne to v soucasnosti dela dojem ze git prevazuje. Pohled do devel mailing listu gitu ukazujem, ze vyvoj je hodne zivy. Dokumentace je slusna (kazdy prikaz ma man stranku, je tutorial apod.).
Takovy zakladni prehled co GIT umi v podobe prezentace (mozna je to prehlednejsi nez tedle serialek):
Krom toho, ze se mi zda, ze mercurial je optimalizovany pro prenos po siti (mel by mit mensi objem prenesenych dat), lisi se ve valne vetsine ve funkcnosti.
Obcas se mi prihodi, ze musim pracovat s v4l stromem a je to neco jako presednout z bmw do favorita. Mozna s tim jenom neumim, ale chybi mi veci typu amend (prihozeni k poslednimu komitu), stash (zahodit zmeny do kontajneru bokem, udelat cokoliv, naaplikovat zpet), diff HEAD (po addu, ktery prihodi zmeny do indexu a dal se difuje oproti tomu).
* neumi to s arch, svn, cvs repositari, ikdyz git podpora taky neni prilis valna (hlavne svn properties a podobne speciality), ale pro zakladni zachazeni to staci. hg export neni nic moc vzhledem ke git format-patch.
* hg mozna dela cisteni nejak implicitne, v gitu je to v nocyh verzich volano z pull, ale je mozne volat git gc (vycisteni, mnohonasobne zrychleni -- dojde k reindexaci) a prune (nedosazitelnost) explicitne.
* describe (ukaz verzi, nad kterou tento komit je) a blame (na ktery radek kdo kdy sahl) se hodi casto, pokud clovek vyviji neco out-of-kernel a potrebuje zjistit, co kdy pribylo a jak se to zmenilo.
* nejsem si jisty, jestli hg umi rebase (stahnu si master a vsechny moje veci nahodim nad to + mi to samo mergne, popr. vyhodi konflikt, ktery se da jednoduse rucne opravit), show (ukaz ten a ten komit), hard/soft reset, send-mail;
Navic se na git da napasovat cogito, ktere dela barevne diffy a podobny lepsi vystup pro oci. Je toho spousta, clovek se to uci roky ;).
To me tesi, co jsem ale prave zkusil, tak nejak zapominaji spoustet less s -r, bo mi to vyplivne escape sekvence misto barev (mozna to ale bude nejaky lokalni problem).