A proč vám nevyhovuje Git?
Netuším, jestli je to tím, že dříve jsem měl „práce až nad hlavu“ a teď se „flákám“, takže mám více času sledovat internetové dění; nebo se prostě teprve teď něco děje. Ale Git a vůbec opouštění SVN a přechod na nějaký DVCS je v poslední době dost žhavé téma. Už asi nezjistím, kdo s tím začal jako první. Ale nějaký počáteční impuls, a to dosti silný tu být musel.
Nejspíš to je díky tomu, že se to přivalilo z více směrů:
-
@karmi nahlodal Davida Grudla. Takže se teď rozhoduje, jestli Nette bude používat Git, nebo Mercurial (možnost zůstat u SVN, zdá se, už nepřipadá v úvahu).
-
@dmajda zase šťouchl do Borka Bernarda, který rozpoutal diskusi na téma GUI vs. příkazová řádka.
Nejdřív k druhému bodu. Shrnu to krátce. Byl jsem rád, že jsem mohl taky přihodit do diskuse pár postřehů. A musím souhlasit s tím, že Google Docs jsou pro kolaboraci bída s nouzí. A je vidět, jak lidé ze světa Windows a UNIXu mají neuvěřitelně rozdílný pohled na to, co je důležité (pozor, tím se nesnažím nikomu vnutit, že zrovna hodnoty UNIXu jsou ty důležité (i když podle mě samozřejmě jsou)). Hezky je to popsané v článku Joela Spolského Biculturalism.
Teď k věci první, a tedy přechodu Nette. Toto je pro mě trochu důležitější téma, než jestli se někomu líbí více GUI, nebo příkazová řádka, protože přeci jenom mám jednu aplikaci na Nette, kterou budu muset asi ještě chvilku udržovat.
Na úvod musím říct, že můj pohled může být zkreslený, protože celá „éra“ CéVéeSek a eSVéeNek se mi nějak vyhla. SVN použiji maximálně stylem checkout, make, make install, cd .. && rm -rf foo. Takže můj pohled na centralizované vs. distribuované VCS je a bude zkreslený. Stejně jako je a bude zkreslený pohled všech, kteří používají některou z centralizovaných mršek (myšleno v nejlepším slova smyslu, slovo „mrška“ využívám skoro pro všechno).
Co je tedy tím největším problémem, proč ne Git? Čeho se všichni bojí? Kvůli čemu se povedou svaté války? Čekal jsem, že by tím mohla být workflow. Pro efektivnější využívání možností DVCS se workflow bude trochu lišit. Ale tohle většina lidí přešla. Asi bez toho, že by DVCS použila v akci (alespoň pro nějaké Hello, world!). Vítězem v „nepoužitelnosti“ Gitu je:
Čísílkování revizí. Toto trápí nejvíce lidí! „V revizi FOO přibyla nějaká fičurka. Já mám BAR. Podle hashe nepoznám, jestli bude fičurka fungovat,“ je odevšad slyšet. Jak jsem psal, na SVN jsem nevyrůstal, takže nechápu, proč zrovna tuhle věc lidé shledávají tak úžasnou. Když jim člověk řekne, že pokud se nechtějí vzdát čísílek, mohou je vytvářet jako tagy, tak jenom slyší: „Proč bych tedy měl přecházet na Git, když SVN tak krásně čísluje samo od sebe?“ I když některé věci lidé shledávají na DVCS skvělé, nedokáží se odpoutat od pár generovaných čísílek.
Spíše by se ale člověk měl ptát sám sebe: „Proč Git nemá čísílka?“ Všechno je to opět v tom rozdílu centralizovaný vs. distribuovaný. Takové erekční (přívlastek přesně vystihující věc; samo se zvedá a pomáhá ho zvednout čísílkářům) čísílko v distribuovaném prostředí nemůže fungovat. Proč? Každým naklonováním repozitáře člověk získá identickou kopii toho původního (neberu teď v potaz možnost specifikovat --depth v Gitu). Člověk si vesele commituje na svém písečku, občas se koukne, jestli v nějakém jiném repozitáři nepřibyly nové věci a kdyžtak je stáhne k sobě. Ale pozor! Člověk nemusí nové věci stahovat jenom z jednoho repozitáře. Můžete si přes LANku a stahovat změny od kolegy na sousedním počítači, současně si fetchnout změny z centrálního serveru v budově a na to si ještě přibalit ty z veřejného repozitáře, nebo dalšího vývojáře od protinožců.
Kde by se pak, čísílkoví fanatici, měla skladovat ona záhadná erekční modla? Erekční číslo je globální stav. A takový stav se musí někde globálně udržovat. A aby se mohl udržovat globálně potřebujeme nějakou autoritu, která ho bude udržovat. A taková autorita, aby takový stav vyl v golbálu jenom jeden musí samozřejmě taky být jenom jedna. A to jsme zpět u centralizovaného VCS!
Ale Mercurial to umí! A v dokumentaci se dočtete, že jedno čísílko v jednom repozitáři může označovat úplně jiný commit v jiném repozitáři. Mercurial je pěkná děvka a jenom předstírá, že to s čísílky umí. Nenechte se oblbnout. Čísílka v Mercurialu jsou jen pro tuhle konkrétní kopii repozitáře a nelze se na ně spoléhat.
vydáno 14. 8. 2009, 22:11:01