Hlavní navigace

GIT: distribuovaná správa revizí

Každý, kdo spravuje velké množství obsahu, časem přijde na to, že by potřeboval software, který by mu pomohl nad tímto obsahem držet ochrannou ruku. Velmi často mezi uživatele takových aplikací patří vývojáři, ale hodí se také (ne)pořádným administrátorům. Představíme si velmi silný nástroj GIT.

Tweetni to Odměnte autora  Jak to funguje?

Na úvod nebude špatné ujasnit si, proč vlastně používat nějaký nástroj na správu změn, a nebo, chcete-li, na správu obsahu (SCM – source code management). Obsahem je v tomto případě většinou myšlen zdrojový kód, prostý text apod.

Asi téměř každý, kdo se vydal na nejistou cestu úpravy nějakého textu, měl chuť mít v záloze pro případ neúspěchu předešlou verzi. Někteří z nás mají i tak neuspořádaný život a projekty, že musejí pracovat na několik různých variantách téhož projektu najednou. A největší masochisté pak zapojují do této činnosti i další nadšence. Výsledkem může být košatě se větvící projekt o mnoha lidech.

Prvně asi každý, kdo je postaven před podobný problém, sáhne po velmi snadném a obvyklém řešení v podobě příkazu cp foo foo.old". Ty tvořivější a tvrdohlavější pak ještě po mv foo.old foo.old2; cp foo foo.old. To je často metoda hodná admina ničícího vlastní /etc, ale nehodí se na dlouhodobější prá­ci.

Časté a podstatně sofistikovanější řešení je nainstalovat CVS. Tedy ono to není zase tak moc přímočaré. Je nutné mít nejen klienta, ale i server. Nějak řešit práva, bezpečnost apod. Důsledkem je, že CVS nacházíme jen tam kde to úsilí za to stojí. Bohužel CVS je opravdu zastaralé a většinou vede lidi a celé projekty k tomu, že přizpůsobují styl své práce a celé své uvažování o projektu tomuto nástroji. (Věřím, že ti co i dnes ráno pazourkem rozdělávali oheň ve své IT jeskyni se s námi o své „nesahejte nám na CVS“ podělí v debatě pod článkem.

Lze to i jinak. Lze nalézt novější nástroje které stejně dobře poslouží na správu několika konfiguračních souborů jako i na udržení projektu o mnoha stovkách souborů a stovkách přispěvatelů s tokem i několika stovek změn za měsíc.

V našem případě budeme mluvit o GITu. Předpokládejme, že čtenář nějaké zkušenosti s nějakým SCM již má.

Motivací pro vznik GITu bylo prázdné místo po z licenčních důvodů dále již nepoužitelném BitKeepru. V té době se pro linuxový kernel nehodil žádný existující nástroj. Inspirací pro GIT byl jiný SCM, a to Monotone. Důkazem toho, že se GIT opravdu povedl, je neustále se zvětšující počet projektů, které ho používají. A už dávno nejde jen o projekty okolo linuxového kernelu.

Asi nejpodstatnější pro pochopení GITu je celkový pohled, jakým se GIT kouká na projekt a jeho správu.

Obecně můžeme svět SCM rozdělit na centralizovaný a distribuovaný. Srdcem centralizovaného modelu je server na kterém se uchovávají veškeré změny. Server je sdílen vývojáři, a ti ho aktivně používají pro svou práci. Na první pohled to vše vypadá jednoduše a snadno použitelně. Ale…

Vše je centrální. Nelze být pro práci s takovým SCM offline. Generování diffů, procházení historie je pomalé. (Ve světě CVS existuje pro tento a pár dalších problémů workaround jménem Subversion.)

Je nutné rozdat vývojářům práva zápisu do centrálního repositáře a zajistit bezpečnost. Práva znamenají nutnost definovat, kdo je a kdo není dostatečně zodpovědný a prověřený. To vede k vytvoření určitých politik okolo projektu.

Protože repositář je sdílený a práce jednoho vývojáře ovlivňuje ostatní, je nutné definovat pravidla, co je a co není vhodné pro „oficiální“ commit.

U větších projektů jsou pak politiky a pravidla zdrojem třenic mezi vývojáři.

Výsledkem je, že nástroje používající centralizovaný model jsou degradovány do pozice pouhého archivačního nástroje, který uchovává, kdo co udělal (a v případe CVS ani to pořádně). Podobný nástroj pak není nástrojem vývojářským. V případě CVS pak vývojář volá příkaz commit až na dokončený a relativně stabilní patch (aby mu nikdo nenadával). Centralizovaný SCM tak minimálně pomáhá s vlastním vývojem a prací na kódu.

Dalším problémem je, že patch může být opravdu rozsáhlý a práce na něm trvat i mnoho dní. Během této doby se kód v centrálním repositáři může změnit a je tedy nutné před finálním umístěním změny do repositáře řešit konflikty. Práce s velkým souborem změn je pak pro zlost.

Řešením je používat nějaký privátní branch a rozdělovat práci na menší části, a do oficiálního repositáře pak umístit až vše najednou. Nepříjemností u centralizovaného modelu je, že i každý váš branch bude na centrálním serveru. Může tak trpět vaše chuť na soukromí a hlavně takový branch se podobně jako celý centralizovaný repositář obtížně používá. (V porovnání se schopnostmi GITu je větvení projektu v CVS téměř nepoužitelné.) Další komplikací je nutnost mít právo zápisu v centrálním repositáři. Výsledkem je, že minimum lidí vůbec tuší k čemu je branch a raději nic takového nepoužívá.

Ve světě open source je celkem běžné, že na kódu příležitostně pracují i lidé kteří nemají zájem věnovat se projektu dlouhodobě, ale jen si chtějí něco ověřit, přidat nějakou vlastnost, opravit nějakou chybu. Centralizovaný SCM je pro ně jen způsob, jak se dostat k aktuálnímu kódu. Nic víc. Nemají právo zápisu v centrálním repositáři a nemohou udělat commit, branch apod. Většinou jsou nuceni vystačit s  diff -u old new.

Distribuovaný model je daleko otevřenější. Nedělá rozdíl mezi vývojáři. Každý má možnost používat naplno všechny vlastnosti daného SCM.

V případě GITu má každý uživatel plnou kopii repositáře daného projektu a může s ní dělat, co se mu zlíbí. Váš lokální repositář může obsahovat i kopie libovolného počtu jiných repositářů v podobě samostatných branchů. Tedy nemusíte následovat jen základní linii daného projektu, ale i různé dočasné větve apod.

Nejzajímavější je pak tok změn (patchů). Ač je to technicky možné, je u GITu neobvyklé sdílet repositáře a rozdávat právo zápisu. Naopak každý má plnou kontrolu nad svým repositářem. Maintainer si sám rozhoduje, v jakém pořadí bude aplikovat změny a čemu se bude věnovat.

Patche se předávají e-mailem nebo se read-only zpřístupní repositář, kde je daná změna uložená a kdo má zájem, si ji stáhne do svého repositáře. V praxi pak projekt má nějaký oficiální repositář, který je read-only (zápis má jen maintainer) a obsahuje to, co se připravuje pro oficiální release. Takový veřejně dostupný repositář si pochopitelně může udělat každý. Podobě lze vytvářet i mirrory apod. Tyto veřejné repositáře se většinou nepoužívají k vlastní práci. Na práci má každý svou repositáře na svém stroji.

Mezi jednotlivými repositáře lze předávat změny pomocí příkazu pull a push. Je, ale běžné, že k maintainerům se posílají patche pomocí e-mailu prostřednictvím nějakého mailing-listu. Vede to k tomu, že patch je prohlédnut vice lidmi a je možné nad ním debatovat. Pro práci s e-mailem má GIT solidní podporu (extrahováni patche z mailu a posláni patche).

V následujícím článku se seznámíme s repositáři.

Ohodnoťte jako ve škole:
Průměrná známka 2,69
Tweetni to Odměnte autora  Jak to funguje?

Školení: Obsahová strategie a content marketing

DW - Školeny webcopywritingu
  • Proč je obsahový marketing výrazným trendem
  • Jak navrhnout užitečnou obsahovou strategii
  • Jaký obsah využít a které nástroje vám pomohou
  • Jak zlepšit workflow a výsledky copywritingu

Detailní informace o školení content strategy »

       

Přehled názorů

rename
LENIN POWER! 21. 4. 2008 01:56
Nový
├ 
Re: rename
Rejpal 21. 4. 2008 03:35
Nový
│
└ 
Re: rename
EPP 21. 4. 2008 09:07
Nový
└ 
Re: rename
MJ 21. 4. 2008 11:44
Nový
 
└ 
Re: rename
LENIN POWER! 21. 4. 2008 12:23
Nový
 
 
└ 
Re: rename
gep 21. 4. 2008 19:24
Nový
Pokrok
Zdenek 21. 4. 2008 07:38
Nový
└ 
Re: Pokrok
Yenya 21. 4. 2008 10:28
Nový
 
└ 
Re: Pokrok
بطرس 21. 4. 2008 16:58
Nový
 
 
├ 
Re: Pokrok
Inkvizitor 21. 4. 2008 18:11
Nový
 
 
│
├ 
Re: Pokrok
Jirka P 21. 4. 2008 18:40
Nový
 
 
│
└ 
Re: Pokrok
Zdenek 21. 4. 2008 20:20
Nový
 
 
│
 
└ 
Re: Pokrok
Inkvizitor 21. 4. 2008 20:33
Nový
 
 
└ 
CVS používán raději, než SVN
Miloslav Ponkrác 22. 4. 2008 13:02
Nový
 
 
 
└ 
Re: CVS používán raději, než SVN
WildWire 23. 4. 2008 00:54
Nový
 
 
 
 
└ 
Re: CVS používán raději, než SVN
Miloslav Ponkrác 23. 4. 2008 01:05
Nový
 
 
 
 
 
└ 
Re: CVS používán raději, než SVN
Anonymous Coward 13. 6. 2008 11:13
Nový
RE: GIT: distribuovaná správa revizí
Tomas Z. 21. 4. 2008 07:49
Nový
└ 
RE: GIT: distribuovaná správa revizí
Inkvizitor 21. 4. 2008 12:41
Nový
 
└ 
RE: GIT: distribuovaná správa revizí
Palo 21. 4. 2008 14:02
Nový
 
 
└ 
RE: GIT: distribuovaná správa revizí
Inkvizitor 21. 4. 2008 15:59
Nový
 
 
 
└ 
RE: GIT: distribuovaná správa revizí
Ash 7. 1. 2009 17:54
Nový
CVS
hwsoft 21. 4. 2008 08:24
Nový
├ 
Re: CVS
Boris Porosin 21. 4. 2008 08:46
Nový
│
└ 
Re: CVS
Zdeněk Vráblík 21. 4. 2008 09:19
Nový
│
 
└ 
Re: CVS
Boris Porosin 21. 4. 2008 09:29
Nový
│
 
 
└ 
Re: CVS
Bilbo 21. 4. 2008 12:06
Nový
├ 
Re: CVS
Marek Zukal 21. 4. 2008 09:07
Nový
│
└ 
Re: CVS
Saboter 21. 4. 2008 10:33
Nový
│
 
└ 
Re: CVS
Marek Zukal 21. 4. 2008 10:44
Nový
│
 
 
└ 
Re: CVS
Saboter 21. 4. 2008 11:21
Nový
│
 
 
 
├ 
Re: CVS
Franta Kučera 21. 4. 2008 15:09
Nový
│
 
 
 
│
└ 
Re: CVS
Saboter 21. 4. 2008 21:28
Nový
│
 
 
 
└ 
Re: CVS
Peter Helcmanovsky 22. 4. 2008 10:47
Nový
├ 
Re: CVS
Pavel Císař 21. 4. 2008 09:21
Nový
└ 
Re: CVS
oldium 21. 4. 2008 09:55
Nový
 
└ 
Re: CVS
gep 21. 4. 2008 19:30
Nový
Git vs. Mercurial?
Yenya 21. 4. 2008 10:21
Nový
├ 
Re: Git vs. Mercurial?
čavo 21. 4. 2008 10:52
Nový
│
└ 
Re: Git vs. Mercurial?
Yenya 22. 4. 2008 12:22
Nový
├ 
Re: Git vs. Mercurial?
Petr Baudis 21. 4. 2008 10:53
Nový
│
└ 
Re: Git vs. Mercurial?
Rejpal 21. 4. 2008 10:58
Nový
│
 
└ 
Re: Git vs. Mercurial?
Petr Baudis 21. 4. 2008 11:17
Nový
│
 
 
├ 
Re: Git vs. Mercurial?
Rejpal 21. 4. 2008 11:20
Nový
│
 
 
└ 
Re: Git vs. Mercurial?
alblaho 21. 4. 2008 21:01
Nový
├ 
Re: Git vs. Mercurial?
Karel Zak 21. 4. 2008 11:34
Nový
└ 
Re: Git vs. Mercurial?
gep 21. 4. 2008 19:47
Nový
 
└ 
Re: Git vs. Mercurial?
michich 21. 4. 2008 21:10
Nový
 
 
└ 
Re: Git vs. Mercurial?
gep 21. 4. 2008 21:47
Nový
Linus o GIT
Hans Ginzel 21. 4. 2008 10:29
Nový
├ 
Re: Linus o GIT
Yenya 21. 4. 2008 10:34
Nový
│
├ 
Re: Linus o GIT
aaa 21. 4. 2008 11:43
Nový
│
└ 
Re: Linus o GIT
gep 21. 4. 2008 19:23
Nový
├ 
Re: Linus o GIT
Karel 21. 4. 2008 14:10
Nový
└ 
Re: Linus o GIT
deda.jabko 21. 4. 2008 17:23
Nový
Komplikovane riesenia nie su vzdy lepsie...
w0rm 21. 4. 2008 10:44
Nový
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
michich 21. 4. 2008 11:06
Nový
│
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
w0rm 21. 4. 2008 11:29
Nový
│
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Inkvizitor 21. 4. 2008 13:04
Nový
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
w0rm 21. 4. 2008 11:19
Nový
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Karel Zak 21. 4. 2008 12:43
Nový
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 21. 4. 2008 13:47
Nový
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
w0rm 21. 4. 2008 14:08
Nový
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Karel 21. 4. 2008 14:33
Nový
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 21. 4. 2008 16:37
Nový
 
 
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Karel 21. 4. 2008 16:52
Nový
 
 
 
│
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Inkvizitor 21. 4. 2008 18:15
Nový
 
 
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Zdeněk Vráblík 21. 4. 2008 21:31
Nový
 
 
 
│
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 22. 4. 2008 01:13
Nový
 
 
 
│
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
tomas z 22. 4. 2008 08:36
Nový
 
 
 
│
 
│
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
tomas z 22. 4. 2008 08:41
Nový
 
 
 
│
 
│
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 22. 4. 2008 18:10
Nový
 
 
 
│
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
JS 22. 4. 2008 09:48
Nový
 
 
 
│
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 22. 4. 2008 18:36
Nový
 
 
 
│
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Inkvizitor 22. 4. 2008 23:19
Nový
 
 
 
│
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 23. 4. 2008 03:02
Nový
 
 
 
│
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Inkvizitor 23. 4. 2008 08:17
Nový
 
 
 
│
 
 
 
 
 
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Tom 23. 4. 2008 10:19
Nový
 
 
 
│
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 23. 4. 2008 17:19
Nový
 
 
 
│
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Inkvizitor 23. 4. 2008 22:22
Nový
 
 
 
│
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
JS 24. 4. 2008 07:58
Nový
 
 
 
│
 
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
neni dulezite 24. 4. 2008 08:22
Nový
 
 
 
│
 
 
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 24. 4. 2008 14:15
Nový
 
 
 
│
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
JS 24. 4. 2008 15:36
Nový
 
 
 
│
 
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 24. 4. 2008 16:57
Nový
 
 
 
│
 
 
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
beer 26. 5. 2008 18:27
Nový
 
 
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Ondra 21. 4. 2008 21:52
Nový
 
 
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Tom 23. 4. 2008 09:57
Nový
 
 
 
│
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 23. 4. 2008 16:53
Nový
 
 
 
│
 
├ 
Re: Komplikovane riesenia nie su vzdy lepsie...
deda.jabko 23. 4. 2008 19:36
Nový
 
 
 
│
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Tom 24. 4. 2008 00:15
Nový
 
 
 
│
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
LENIN POWER! 24. 4. 2008 01:39
Nový
 
 
 
└ 
Re: Komplikovane riesenia nie su vzdy lepsie...
Ash 7. 1. 2009 18:03
Nový
Revizí?
Franta Kučera 21. 4. 2008 14:51
Nový
├ 
Re: Revizí?
Karel Zak 21. 4. 2008 15:32
Nový
└ 
Re: Revizí?
Kamil 22. 4. 2008 08:48
Nový
 
└ 
Re: Revizí?
Franta Kučera 22. 4. 2008 23:17
Nový
darcs
neutral female gnomish…ame Mage 21. 4. 2008 15:30
Nový
└ 
Re: darcs
beda 21. 4. 2008 21:05
Nový
 
└ 
Re: darcs
the doppelganger Monk 21. 4. 2008 22:55
Nový
Ekvivalent Telelogic Synergy
Jirka 21. 4. 2008 21:46
Nový
GUI
... 22. 4. 2008 18:10
Nový
├ 
Re: GUI
ld 23. 4. 2008 00:10
Nový
└ 
Re: GUI
Karel Zak 23. 4. 2008 10:51
Nový
Jake konkretni vyhodi prinasi distribuovanost?
Tom 23. 4. 2008 10:28
Nový
└ 
Re: Jake konkretni vyhodi prinasi distribuovanost?
Inkvizitor 23. 4. 2008 22:35
Nový
 
└ 
Oprava, sorry
Inkvizitor 23. 4. 2008 22:37
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem