Verzování

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Verzování je způsob uchovávání historie veškerých provedených změn obecně u jakékoliv digitální informace. Nejčastěji se tento pojem používá u zdrojových kódů software, kdy se evidují změny provedené v jednotlivých verzích během stádia vývoje softwarového projektu. Verzovat lze všechny počítačové soubory, v případě potřeby se verzují i primární data.

V praxi si to lze představit tak, že si systém správy verzí eviduje, kdo, kdy a jakým způsobem změnil které řádky zdrojového kódu programu. To slouží nejenom k úplnému přehledu všech změn, ale také možnost vidět přesný stav sledovaných dat v kdykoliv v minulosti a také vrátit se k předchozí verzi daného programu v případě, že během dalšího vývoje dojde k chybám. Každé změně provedené ve zdrojových kódech je přidělováno unikátní číslo, označované většinou jako číslo revize.

Neméně významným prvkem verzování je možnost spolupráce velkého množství programátorů na jednom softwarovém projektu, protože verzovací programy hlídají a řeší případné kolize (situace, kdy dva či více programátorů současně mění stejné části zdrojového kódu). To je základ vývoje open source programů, kdy spolupracují desítky, někdy však i stovky programátorů z celého světa, aniž by museli být v přímém kontaktu. Jakýkoliv větší projekt si dnes nelze bez verzování představit.

Nejznámějšími představiteli verzovacích systémů jsou CVSApache Subversion, oba volně dostupné a open source. Obojí jsou systémy centralizované – data jsou ukládána na jediný server a většina využití systému (uložení změny, zkoumání změn, návrat k předchozí verzi …) vyžaduje komunikaci se serverem. Na vzestupu je používání distribuovaných systémů správy verzí, u kterých může mít každý vývojář kopii celé historie lokálně, což umožňuje rychlejší práci. Mezi známé distribuované systémy správy verzí patří například Git, Bazaar, Mercurial a další.

Verzovací systémy většinou neuchovávají úplný stav každé revize, ale pouze rozdíly mezi jednotlivými revizemi (pomocí nástrojů typu diff). Informační hodnota je stejná a data jsou velmi malá.

Modely pro správu zdrojových kódů[editovat | editovat zdroj]

Tradiční verzovací systémy používají centralizovaný model, kde se se všemi verzemi pracuje na sdíleném serveru. Pokud se dva vývojáři pokusí změnit stejný soubor ve stejný čas bez použití metod řídících přístup vývojářů, mohou si vzájemně svou práci přepsat. Centralizované verzovací systémy tento problém řeší použitím jednoho ze dvou odlišných "modelů pro správu zdrojových kódů": zamykání souborů, nebo slučování verzí.

Zamykání souborů[editovat | editovat zdroj]

Nejjednodušší metodou prevence problémů způsobených "souběžným přístupem" je zamykání souborů. V daný okamžik má přístup ke všem souborům v centrálnímu repozitáři. Jakmile si jeden vývojář uzamkne soubor, ostatní ho mohou číst, ale nemohou tento soubor měnit, dokud ho vývojář neuvolní.

Zamykání souborů má jak klady, tak zápory. Systém ochraňuje proti zásadním konfliktům slučování souborů, pokud vývojář radikálně mění mnoho sekcí velkého souboru, nebo velké množství souborů. Nicméně pokud bude jeden vývojář držet soubor zamčený příliš dlouho, ostatní vývojáři se mohou pokusit obejít verzovací systém tím, že soubory změní lokálně a posléze jimi odemčené soubory přepíší a způsobí tím závažné problémy.

Slučování verzí[editovat | editovat zdroj]

Většina verzovacích systémů umožňuje více vývojářům upravovat stejný soubor v jeden okamžik. První vývojář nahraje změny do centrálního repozitáře bez potíží. Systém poskytuje dalším vývojářům možnosti, jak sloučit pozdější změny v centrálním repozitáři a ochrání tak změny provedené prvním vývojářem.

Slučování dvou souborů může být velice choulostivá operace a často je možná pouze pokud je struktura dat jednoduchá, jako například v textových souborech. Výsledek sloučení dvou obrázků vůbec nemusí být obrázkem. Druhý vývojář, nahrávající zdrojový kód do repozitáře musí důkladně zkontrolovat, že změny vzniklé při slučování verzí jsou navzájem kompatibilní a že sloučení nezanese logické chyby do výsledného souboru. Tyto problémy omezují schopnost systémů automaticky, či poloautomaticky slučovat soubory, pokud se nejedná o soubory textové. Existují však pluginy umožňující slučování některých typů souborů.

Integrace[editovat | editovat zdroj]

Řada z pokročilejších verzovacích systémů nabízí řadu možností, jak je integrovat do dalších nástrojů. Pro vývojová prostředí jako jsou Oracle JDeveloper, IntelliJ IDEA, Eclipse a Microsoft Visual Studio jsou k dispozici pluginy. Delphi, NetBeans, Xcode a GNU Emacs mají podporu verzování integrovanou.

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]