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

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

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vytvořte si vlastní webové stránky. Snadno, rychle a levně přes Saywebpage.com
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

GitMagic (1) – úvod

Google       Google       18. 6. 2009       23 250×

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 V přechodu na DVB-T2 tápou především senioři. Přeladit jim pomáhají vnoučata, zapojí se i stát

V přechodu na DVB-T2 tápou především senioři. Přeladit jim pomáhají vnoučata, zapojí se i stát

Už na konci měsíce může zůstat část Čechů bez televizního signálu. Vypínání stávající sítě začne již 27. listopadu v Praze a středních Čechách a do poloviny roku 2020 čeká přechod na nový standard pozemního digitálního televizního vysílání DVB-T2 celou republiku. K naladění nového televizního vysílání musí řada lidí nakoupit modernější zařízení, upravit antény nebo přejít na kabelové či internetové vysílání. 

Reklama
Reklama
Obrázek ke článku Zavádění Master Data Management v praxi

Zavádění Master Data Management v praxi

Předchozím článku jsme si vysvětlili, co jsou to Master Data, kdy je firma obvykle začíná řešit, v jakých krocích postupovat a jak nám může pomoci zvláštní nástroj pro evidenci Master dat. V tomto článku se podíváme na dvou příkladech, jak prakticky začít Master data řešit.

1. Nová Master Data, která potřebujeme někde spravovat
2. Zmapování existujících Master dat a určení jejich vlastníků

Obrázek ke článku 5 nesprávných důvodů, proč dělat vlastní mobilní aplikaci

5 nesprávných důvodů, proč dělat vlastní mobilní aplikaci

Myslíte si, že máte skvělý nápad na byznys apku a znáte všechno, co potřebujete? Možná vám vývoj software na míru rozmluví Vláďa Skoumal, z firmy studio SKOUMAL vyvijející mobilní aplikace 5.11. 2019 v 18:00 v Impact Hub Praha nebo tento jeho článek.


 

Obrázek ke článku Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Celkem 66 % uživatelů zajímá rozšířená realita v oblasti gamingu. Mezi nimi je i 35 % těch, kteří jinak hry nehrají.
Pro téměř 50 % respondentů by bylo zajímavé zapojení virtuální objektů do reálného světa. Objekty by zůstaly tam, kde je při hře „umístili“.
Až 43 % uživatelů láká využití rozšířené reality ve sportu

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý