Verzování

správa verzí počítačových souborů
(přesměrováno z Merge)

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.

Vývoj softwaru
  • (existující články)
  • Základní aktivity
  • Příbuzná témata
  • Standardy a odborná sdružení
  • Slovníčky, seznamy

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.

V minulosti nejprve převažovaly centralizované verzovací systémy, které 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. Nejznámějšími představiteli tohoto druhu jsou CVSApache Subversion, oba volně dostupné a open source. Později se prosadilo 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ů

editovat

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

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í

editovat
Na tuto kapitolu jsou přesměrována hesla merge a pull request. Pomozte Wikipedii tím, že pro ně vytvoříte samostatný článek.

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

editovat

Ř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

Externí odkazy

editovat