Verzování

Verzování je uchovávání historie veškerých změn provedených v informacích nebo datech. Nejčastěji se používá pro sledování změn ve zdrojových kódech softwaru během jeho vývoje, ale verzovat lze všechny počítačové soubory, a v případě potřeby se verzují i primární data.

Systém správy verzí (Version control system, VCS) obvykle eviduje, kdo, kdy a jakým způsobem změnil které řádky zdrojového kódu programu. Díky tomu lze zobrazit přesný stav sledovaných souborů kdykoliv v minulosti, a pokud úpravy způsobily nežádoucí chování, lze se vrátit ke starší verzi souborů. Každé změně provedené v určitém souboru bývá přiděleno unikátní číslo, obvykle nazývané čí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 pomáhají řešit případné kolize (situace, kdy stejné části zdrojového kódu mění dva či více programátorů současně). K tomu často dochází při vývoji open source programů, na němž se mohou podílet desítky nebo stovky programátorů z celého světa, kteří nejsou 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 CVS a Apache Subversion, oba volně dostupné a open source. Oba systémy jsou centralizované – data ukládají na jediný server a většina použ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). Tím se obvykle šetří prostor, nevýhodou však bývá zpomalení přístupu.

Modely pro správu zdrojových kódů

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ů

Nejjednodušší metodou prevence problémů způsobených „souběžným přístupem“ je zamykání souborů. V daný okamžik má každý přístup ke všem souborům v centrálním 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í

Většina verzovacích systémů umožňuje více vývojářům upravovat současně stejný soubor. První vývojář nahraje změny do centrálního repozitáře bez potíží. Další vývojáři musí svoje změny zkombinovat (sloučit) se změnami provedenými předchozími vývojáři, aby nedošlo k přepsání dřívějších změn novými změnami.

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 u textových souborů. Výsledkem sloučení dvou obrázků vůbec nemusí být obrázek. Vývojář, který kombinuje svůj zdrojový kód s prací předchozích vývojářů musí důkladně zkontrolovat, že změny vzniklé při slučování verzí jsou navzájem kompatibilní a že sloučení nezanese do výsledku logické chyby. 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 netextových souborů.

Integrace

Ř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.

Odkazy

Související články

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.