Přejít k navigační liště

Zdroják » Různé » Scott Chacon: Pro Git – česky o Gitu

Scott Chacon: Pro Git – česky o Gitu

Články Různé

O Gitu se v poslední době poměrně intenzivně hovoří. Git je představitel distribuovaných verzovacích systémů (DVCS). DVCS jsou používány zejména ve světě svobodného a open source softwaru. V knize od Scotta Chacona se dozvíme vše potřebné, co pro práci s tímto verzovacím systémem potřebujeme.

Nálepky:

Zatímco o některých technologiích vycházejí v češtině knihy až v době, kdy jsou tyto technologie již běžmě používané, nebo dokonce za zenitem, a mohou sloužit přinejlepším jako kompendia nebo příručky, do nichž nakoukneme, když si na něco nemůžeme vzpomenout, je Git v této oblasti světlou výjimkou.

Kniha Scotta Chacona s názvem „Pro Git“ vyšla nejprve jako volně šiřitelný text. V srpnu 2009 jej vydalo v papírové podobě nakladatelství Apress. Jejího českého překladu jsme se dočkali díky sdružení CZ.NIC na konci prosince 2009, tedy s minimálním zpožděním. Máme tak jedinečnou možnost přečíst si knihu o vývojářském nástroji v době, kdy je ještě aktuální (jak kniha, tak nástroj).

Český překlad knihy, který vyšel péčí již zmíněného sdružení CZ.NIC, je k dispozici ke stažení např. v naší knihovně (Pro Git). Pokud máte raději klasické papírové knihy, můžete si ji objednat za 289 Kč. Knihu jste mohli získat i v naší minisoutěži u článků Karla Minaříka Pět důvodů, proč zvolit Git.

Já osobně jsem velkým milovníkem knih. Rád si s knihou zalezu a čtu – nerozptylují mě maily, IM ani prokrastinace, jako při čtení PDF na počítači. I když jsem věděl o tom, že jsou „o Gitu“ informace na webu a že je dostupná kniha jako PDF, nenalezl jsem nikdy čas na to, abych si je pořádně pročetl. S papírovou knihou tomu bylo jinak: Za dva večery jsem měl přečteno, spousta věcí, co mi stále nebylo jasných (tagování a branchování například) do sebe začalo zapadat a celé to dostalo řád. Ale popořádku.

Git

Psát o Gitu na Zdrojáku je dnes už nošením sov do Athén, takže jen ve stručnosti – Git je decentralizovaný systém pro správu verzí, který klade důraz především na lokální práci a usnadňuje následné začleňování změn do hlavní větve vývoje, přičemž nijak neurčuje, jak přesně to má být uděláno, kde musí být společný server či jaké mají být role. Vychází tak vstříc zejména vývojářům OSS, kteří jsou často na různých místech po celém světě a pracují víceméně autonomně.

A přesně těmito informacemi začíná kniha Pro Git. V první kapitole je ještě stručně vysvětleno, jak Git nahlíží na verzování souborů, je popsán rozdíl mezi commitem a stagingem a popsána instalace Gitu. Vše je doprovázeno názornými obrázky a pro člověka, který se setkal alespoň s jedním VCS (nebo někdy vyvíjel alespoň s jedním dalším člověkem), jsou popisované myšlenky snadno pochopitelné.

Základy práce

Základem Gitu je, ať si kdo chce co chce říká, práce z konzole. I když existují nadstavby a GUI, je pro programátora, který někdy používal příkazovou řádku, Git snadno ovladatelný právě tímto způsobem. Git nemá nějak náročnou syntaxi příkazů a voleb, a pokud jste někdy viděli nějaký linuxový shell, bude vám polovina z nich připadat samozřejmá.

Ve druhé kapitole knihy jsou popsány základní operace se soubory. Dozvíme se z ní, jak přidat soubor do stage, jak odeslat změny, jak soubor smazat, jak si vypsat historii, jak založit lokální repozitář nebo jak klonovat vzdálený – tedy naprosto základní operace. Po druhé kapitole může čtenář začít používat Git jako sofistikovanější obdobu nástroje známého pod názvem „jednou za čas si zkopíruju práci do jiného adresáře“.

Pozitivní věcí na stylu Scotta Chacona je, že se zbytečně nevykecává u samozřejmostí, takže například přesouvání souborů, kde v podstatě není o čem vyprávět, projde ve třech odstavcích, a zastaví se až u věcí, které jsou nějak zajímavé, neobvyklé, zvláštní či prostě jen hodné trošku podrobnějšího popisu.

Po celou dobu je výklad ilustrován na ukázkovém příkladu vývoje nějakého software. Příkazy tak nevisí „ve vzduchu“, ale jsou hned demonstrovány prakticky, včetně ukázky toho, co Git vypíše a vysvětlení co to znamená. Knížku si tedy můžete číst opravdu např. na dovolené, kdy nesedíte u počítače, a přitom nemáte u četby dojem, že na vás autor hrne jen nějaké teoretické informace, které za chvíli zapomenete, pokud si je okamžitě nevyzkoušíte.

Já jsem s Gitem experimentoval už před čtením téhle knihy, na něco jsem si přišel sám, s něčím mi poradil Karel Minařík, takže jsem už jakési povědomí o stylu práce měl. Přesto mi druhá kapitola pomohla některé poznatky dát do souvislostí a „ukotvit“ – po přečtení začalo vše dávat smysl a logicky do sebe zapadat. Pustil jsem se tedy s nadšením do třetí kapitoly.

Větve

Větvení a tagování mi připadalo vždy jako „vyšší dívčí“, takže jsem se třetí kapitoly, která je právě větvím věnována, trochu obával a zarazilo mě, že není rozsahem o moc větší než druhá kapitola. Bál jsem se, že kniha sklouzne ke klasickému nešvaru některých odborných knih, které zevrubně popisují základy a s tím, jak se téma stává složitější, je i výklad stručnější… naštěstí se to nestalo.

V Pro Gitu je větvení popsáno tak samozřejmě jako třeba výše zmíněné klonování souborů. Tedy na názorném příkladu, včetně vysvětlení toho, co se má dít a proč, a jak to vlastně Git v pozadí dělá. To se nakonec ukázalo, alespoň u mne, jako ten rozhodující detail, který mi pomohl pochopit princip větvení, rebase a merge. Autor je si zjevně vědom starého přísloví, které říká, že „dobrý obrázek vydá za tisíc slov“, a důsledně se jej drží.

První tři kapitoly lze považovat za představení nejdůležitějších úkonů, které lze s Gitem dělat. S tím, co se naučíte v prvních třech kapitolách, si při běžné práci vystačíte v 90% případů. Ale pokud chcete s Gitem pracovat efektivně, potřebujete ještě další vědomosti, které přináší zbytek knihy. Kdybychom měli zvolit příměr s učebnicí programování, tak: V prvních třech kapitolách se naučíte příkazy a syntaxi, ale potřebujete znát ještě funkce, knihovny, překladače a styl práce…

Git na serveru

Čtvrtá kapitola se věnuje problematice instalace Gitu na server, tedy nespadá až tak do každodenní práce s Gitem a většina uživatelů se s něčím takovým asi ani nesetká. Přesto je dobré si tuto kapitolu alespoň přečíst, protože kromě čistě technických informací získáte přehled i o podporovaných protokolech, o nástrojích GitWeb, Gitosis či Gitolite, no a v neposlední řadě o hostování projektů s Gitem (ano, nechybí zde popis GitHubu ani konverze projektu ze SVN).

Po čtvrté kapitole tedy umíte používat Git a máte k dispozici vzdálený repozitář… Můžete se pustit směle do vývoje. Nebo ne?

Git je distribuovaný

Pátá kapitola popisuje distribuovaný charakter Gitu, tedy právě ten rys, který je poměrně nový a nezvyklý a s jehož pochopením mají někteří uživatelé největší potíže. Totiž s tím, že Git nemá jaksi z podstaty určeno, kde je hlavní větev a kdo se o ni stará. Tyto věci je potřeba si s ostatními vývojáři dohodnout. Existují pouze určitá ověřená pravidla, doporučené postupy a vyzkoušené rozdělení rolí – a právě to je náplní páté kapitoly.

Osobně považuju právě pátou kapitolu za snad informačně nejcennější – syntaxe příkazů a postup nastavení se dá přinejhorším vždy vyčíst z manuálů, ale doporučené postupy práce člověk musí lovit z nejrůznějších diskusí a blogů. V Pro Gitu jsou všechna doporučení na jednom místě, a jsou i vysvětlená – co je potřeba řešit, jak to lze řešit a proč to tak řešit. Bez těchto informací můžete Git používat, samozřejmě, pro sebe, ale pokud se bez nich pustíte do většího projektu, zůstanete beznadějně ztraceni, nebo (v tom lepším případě) znovuvynalezne­te kolo.

Kromě pracovních postupů a pravidel pro přispívání do projektů se pátá kapitola zabývá i správou projektů – jak integrovat příspěvky od přispěvatelů, jak aplikovat záplaty, kontrolovat provedené změny či připravovat verzi k vydání.

Drobnosti

Zbytek knihy, tedy kapitoly 6, 7 a 8, je věnováno operacím a vlastnostem, které člověk nepoužívá každý den, ale které mohou ušetřit spoustu práce, ať jde o nástroje pro odložení práce, přepisování historie či ladění v Gitu, nebo o přizpůsobení Gitu vlastním zvyklostem (ano, i na oblíbené konfigurační soubory dojde).

Celá osmá kapitola je pak věnována přechodu na Git z jiného verzovacího systému (Subversion) či koexistenci s jiným verzovacím nástrojem (např. tomu, jak je možno si svou lokální práci verzovat Gitem a přitom pracovat na projektu, který používá SVN).

Poslední kapitola, která má pořadové číslo 9, pojednává o „zákulisí Gitu“ – tedy mimo jiné o tom, co je v adresáři .git a jak to celé funguje, co se stane když uděláte ten či onen příkaz a jak to je implementováno.

Shrnutí

S odbornou IT literaturou v češtině je velký problém, protože až na výjimky se k nám dostávají knihy s několikaletým zpožděním, pokud vůbec. Některá IT témata v češtině stále pokryta nejsou (především technologické novinky, nové jazyky, frameworky, nové technologie) a pravděpodobně ani nikdy nebudou – knihy totiž morálně zastarají dřív, než se je podaří přeložit a vydat.

Z tohoto důvodu je potřeba jednoznačně ocenit počin sdružení CZ.NIC, které přineslo překlad velmi kvalitní knihy od renomovaného autora v době, kdy je téma ve světě aktuální (tedy s lehkým předstihem proti českému prostředí). Kniha je navíc dobře redakčně zpracována – nenarazil jsem na nějaké vyložené nesmysly, gramatické chyby či stylistické neobratnosti. Text plyne přirozeným tempem, styl je svěží, čtivý, neutápí se ani v rozvláčnosti, ani ve šroubovaných formulacích a kniha se tak čte „jedním dechem“. Trochu je jen škoda, že jsem v knize nenašel informaci o tom, kdo stojí za překladem.

K obsahu samotné knihy a formě výkladu nelze mít připomínek, obojí je jedním slovem perfektní. Jedinou výhradu bych měl snad k typografii – o stupeň větší písmo by se mi rozhodně četlo líp; v knize použitá velikost písma odpovídá zhruba velikosti písma používané např. v televizních programech. Okraje jsou navíc poměrně malé, takže vychází řádek příliš dlouhý a oko snadno přeskočí.

Mít tu zavedené hvězdičkování, dostal by český Pro Git maximální počet hvězdiček: Kniha je velmi dobře napsaná, dobře přeložená, výklad srozumitelný a pro cílovou skupinu, kterou jsou především vývojáři, snadno pochopitelný. Navíc přichází v době, kdy se o Gitu (a dalších DVCS) ve světě intenzivně hovoří, tudíž má určitě smysl si ji pořídit. Rozhodně nebudete mít dojem, že čtete o něčem, co je už dva roky překonané.

Komentáře

Subscribe
Upozornit na
guest
13 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Riny

I když jsem zatím celou knihu nepřečetl (zkouškové období :3), v rámci toho, co už ano, bych se mohl pod tento článek/recenzi podepsat. Včetně toho písma – nejenom že je docela malé, ale některé stránky, které používají jiné jsou kontrastně velké, což moc nepomůže. Ale jinak – perfektní nástroj a perfektní kniha.

jos

git není běžně používaná technologie?

Kit

Kdysi dávno jsem na radu kamaráda vyzkoušel systém CVS. Tenkrát mi vlastně ani nedošlo, k čemu by to mohlo být dobré. Bylo to pro mne tak obstruktivní, že jsem tyto systémy několik let ani nezkusil.

Ve chvíli, kdy o Gitu vyšel seriál na root.cz, jsem si řekl, že ho vyzkouším. V této chvíli v něm spravuji již několik projektů včetně větvení a slučování.

Osvědčilo se mi i verzování adresáře s dokumenty. Nyní je mnohem štíhlejší, protože vím, že v případě potřeby najdu v archivu i smazaný nebo modifikovaný soubor.

Ladislav Thon

> Trochu je jen škoda, že jsem v knize nenašel informaci o tom, kdo stojí za překladem.

S tím naprosto souhlasím. Kdybych tam jméno překladatele našel, ihned ho prokleju do sedmého kolene! Koho proboha napadlo přeložit commit jako zapsání, merge na spoustě míst jako začlenění, push jako nahrávání a hunk jako komplex? Na druhou stranu zase překlad rebase (přeskládání) mi přijde hodně pěkný.

Já vím, že se to asi nějak přeložit muselo, ale srozumitelnost tady klesá rychleji než impotentova erekce. Škoda toho, protože jinak je knížka opravdu výborná.

jos

to mi připomělo překlad jedný knihy (tušim že XP od Becka), kde překladatel přeložil i slovo „software“

shade

A jaké alternativní překlady těchto termínů byste navrhoval?

jos

commit – commit
merge – merge
push – push
hunk – hunk
rebase – rebase

Ladislav Thon

Commit je uložení/zapsání do repozitáře, push je uložení do a pull stažení ze vzdáleného repozitáře. Ta snaha nepoužít nikdy slovo zapsání v jiném významu než commitnutí je obdivuhodná, ale když se pro práci se soubory používají synonyma, tak to nutně musí být matoucí. Hunk bych klidně opsal jako část patche, merge může zůstat u sloučení (možná sloučení větví).

A minimálně u slova commit bych se vůbec nerozpakoval ho nepřekládat. Všichni to slovo (ten commit, commitnout) v češtině normálně používají.

Jinak já jsem notorický stěžovač na překlady odborné literatury, to neberte tak, že bych neoceňoval Vaši práci s vydáním knihy :-) Naopak jsem za ni rád.

Mastodont

Zkuste si někdy nějakou IT knížku přeložit a uvidíte, že to není jednoduché. Souhlasím s tím, že třeba „push“ jako „nahrávání“ není moc dobré, ale to samé je „upload“ a ten se také obvykle překládá jako „nahrát“ nebo „odeslat“.

„Commitnout“ je děs, to byste také mohl debugovat a checkovat …

Václav Novotný

No, vždyť také debugujeme a checkujeme :)

Ladislav Thon

Já samozřejmě vím, že to není jednoduché, ostatně mám dojem, že jsem to tady vyjádřil, ale překlady klíčových termínů v téhle knize jsou podle mne opravdu, no, nešťastné. A když už můžu checkoutovat, s commitováním nemám problém :-)

Jo, upload. A co download? Pokud se pamatuju, pull je přeložen jako stažení :-)

shade

Já si myslím, že by knížka měla být přístupná i lidem, kteří se s verzovacími systémy nikdy nepotkali.

S tím push a pull jsem tady dost váhal, když jsem konzultoval překladateli jeho slovníček. Nakonec jsem vyšel z terminologie Firefoxu.

Mě se například začlenění líbí víc než sloučení, ale to je asi otázka vlastního vkusu.

Každopádně právě pracujeme na konverzi textů do původního markupu, zcela jistě pak budeme přijímat rozumné changesety na změnu překladu :).

pepr

Zdravím Vás,

Jestli jsem to pochopil správně, překládal jste první vydání ProGit. K té poslední větě — měl jsem na to přijít dřív a nešmudlil bych to sám (https://github.com/pepr/progit). Začal jsem pracovat na překladu druhého vydání. Mohli bychom se nějak zkontaktovat?

Mějte se fajn,
Petr

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.