GitMagic (1) – úvod
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

GitMagic (1) – úvodGitMagic (1) – úvod

 

GitMagic (1) – úvod

Google       Google       18. 6. 2009       20 759×

Vítejte u úvodního dílu seriálu GitMagic – seriálu, který vás provede některými zákoutími verzovacího systému Git.

Reklama
Reklama

Použiju menší analogii k vysvětlení verzování. Pro rozumné vysvětlení si přečtěte článek na Wikipedii.

Hrát si je zábava

Počítačové hry jsem hrál takřka celý život. Naopak verzování jsem začal používat až jako dospělý. Mám takové podezření, že v tom nejsem sám, a právě porovnání těchto dvou věcí může přinést lepší možnost vysvětlení a pochopení problému.

Představte si, že změny v kódu, dokumentu či čemkoli, jsou vlastně hra. Jak uděláte velký pokrok, rádi byste uložili. A uděláte to tím, že kliknete na tlačítko „Uložit“ ve vašem věrném editoru.

Jenže tohle přepíše předchozí verzi. Je to jako ty staré hry, které umožňovaly uložit pouze jednu pozici: můžete si postup uložit, ale již nikdy se nedokážete vrátit ke starší rozehrané pozici. Což je docela škoda, protože předchozí uložení mohlo být zrovna v nějaké zvláště vydařené části hry, kterou byste si rádi jednoho dne zahráli znovu. Nebo hůře je právě rozehraná hra v nevyhratelném stavu a musíte tedy začít odznova.

Verzování

Když soubor upravíte, avšak chcete, aby starší verze byla zachována, můžete kliknout na „Uložit jako…“ a zvolit jiný název souboru, nebo nejdříve původní soubor někam zkopírovat. Taky můžete staré soubory zkomprimovat, abyste ušetřili místo. Toto je primitivní lopotný způsob verzování. Je to již dlouho, co se v tomto počítačové hry zlepšily, mnoho z nich obsahuje ukládání pozic i s časem, kdy k uložení došlo.

Udělejme si ale situaci ještě těžší. Řekněme, že máte pár souborů, které spolu souvisí (jako například kód nějakého projektu nebo webové stránky). Teď když potřebujete udržovat staré verze, musíte vždy zabalit celý adresář. Starat se takhle ručně o staré verze je nepohodlné a časově i prostorově náročné.

U některých počítačových her se uložená pozice opravdu skládá z celého adresáře plného souborů. Avšak hráči to může být jedno a hra mu pouze ukazuje hezké rozhraní pro spravování různých verzí tohoto adresáře.

Verzovací systémy se v tomto nijak neliší. Všechny mají hezké rozhraní ke spravování takového adresáře. Můžete kdykoli uložit stav adresáře a poté jakýkoli z předchozích stavů opět vyvolat. Narozdíl od her jsou taky verzovací systémy chytré v tom, jak ušetřit zabrané místo. Obvykle se od verze k verzi změní jen pár souborů, a to ne nijak výrazně – ukládání změn, a ne celých souborů, šetří místo.

Verzování distribuovaně

Teď si ale představte velmi složitou počítačovou hru. Dokonce tak těžkou k dokončení, že se mnoho zkušených hráčů z celého světa rozhodne spojit a sdílet své uložené hry, aby se konečně dobrali vítězství. Speedrun hry mohou být příkladem: hráči se specializují na různá kola hry a spolupracují, aby předvedli úžasné výsledky.

Jak byste vytvořili takový systém, kde by hráči mohli jednoduše získávat uložené hry ostatních? A nahrávat nové?

Dříve každý projekt používal centralizované verzování. Na jednom serveru byly uloženy všechny pozice, nikde jinde, a každý hráč u sebe měl jen pár uložených pozic. Pokud hráč chtěl ve hře nějak pokročit, stáhnul si poslední uloženou hru z hlavního serveru, chvíli hrál, uložil hru a nahrál ji zpět na server, aby mohli hrát zase další.

Ale co když hráč chtěl získat starší verzi hry? Možná že současný stav byl nevyhratelný, protože někdo zapomněl vzít objekt v kole číslo tři, tudíž by se hodila poslední uložená pozice, ze které může být hra dokončena. Nebo by někdo chtěl porovnat uložené hry, aby bylo vidět, kolik toho který hráč udělal.

Existuje hodně důvodů, proč chtít vidět starší verzi, ale výsledek je stejný – je potřeba se zeptat centrálního serveru pro každou starší verzi. A čím více jich je potřeba, tím více se musí se serverem komunikovat.

Nová generace verzovacích systémů, do které patří i Git, je známa jako generace distribuovaných verzovacích systémů a tyto systémy mohou být brány jako zobecnění těch centralizovaných. Když hráči stahují z hlavního serveru, získávájí každou uloženou pozici, nikoli jen tu poslední. Je to, jako by byli zrcadlem hlavního serveru.

Tato první operace naklonování hlav­ního serveru může být náročná, zvláště pokud má projekt velkou historii. Ale dlouhodoběji se vyplatí. Bezprostřední výhodou je, že pokud je potřeba starší verze, není nutno již více komunikovat s hlavním serverem.

Hloupá pověra

Častý omyl některých je, že distribuované verzovací systémy jsou nepatřičné pro projekty, které potřebují mít oficiální centrální repozitář. Jen těžko by mohli být dál od pravdy. Vyfotografovat někoho nezpůsobí, že duše té osoby bude ukradena. Stejně tak naklonování oficiálního repozitáře nezmenší jeho význam.

Dobrý první odhad je to, že cokoli dokáže centralizovaný verzovací systém, dokáže dobře navrhnutý distribuovaný verzovací systém lépe. Síťové zdroje jsou prostě dražší než zdroje lokální. Jak uvidíme později, i distribuovaný přístup má své nedostatky.

Malý projekt může potřebovat pouze zlomek z funkcí, které distribuovaný systém nabídne. Ale říkat, že by jeden měl použít systém, u kterého využije všechny funkce, pokud je projekt malý, je jako říkat, že by se pro počítání s malými čísly měly používat římské číslice.

Navíc projekt může přerůst vaše původní očekávání. Používat Git od začátku je jako nosit s sebou švýcarský armádní nůž (Swiss army knife), i když s ním třebas jenom budete otvírat lahve. Až jednou budete zoufale potřebovat šroubovák, budete rádi, že máte něco víc než jen otvírák.

Konflikty slučování

Teď začíná být naše analogie s počítačovou hrou již trochu krátká. A proto uvažujme opět změny v nějakém dokumentu.

Předpokládejme, že Alice vloží na začátek souboru nový řádek a Bob jeden řádek přidá na konec. Oba nahrají svoje změny. Většina systémů automaticky usoudí, co udělat: přijme obě změny a sloučí je, takže obě úpravy – Alicina i Bobova – jsou použity.

Nyní si představte, že Alice a Bob udělali různé změny na stejné řádce souboru. Pak už není možné pokračovat bez lidského zásahu. Ten z nich, kdo zkusí svoje úpravy nahrát jako druhý, je informován o tzv. „konfliktu slučování“ a musí si vybrat jednu nebo druhou změnu, nebo řádek přepsat úplně jinak.

Mohou nastat ještě složitější situace. Verzovací systémy řeší jednodušší případy samy a nechávají ty těžké pro lidi. Obvykle je jejich chování nastavitelné.

Tento článek je překladem první kapitoly – Introduction – z GitMagic od Bena Lynna. V další kapitole se můžete těšit na některé základy práce s Gitem.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jakub KulhanAutor momentálně studuje na osmiletém gymnáziu v Kralupech nad Vltavou. Programování se věnuje od 11 let, kdy ho poprvé uchvátila možnost "mít vlastní stránky". Nakrátko poté objevil PHP a už se to s ním "vezlo". Webové aplikace zůstaly jeho hlavní doménou, ale ve svém volném čase probádává nejrůznější zákoutí světa programování, programovacích jazyků a všeho kolem nich.
Web    

Nové články

Obrázek ke článku NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý