Apache Subversion
Author
Albert FloresApache Subversion (dříve Subversion - zkráceně SVN) je systém pro správu a verzování zdrojových kódů, náhrada za starší CVS. Snaží se zachovat podobný způsob a styl práce, ale odstranit nedostatky CVS jako například nemožnost přesunu nebo kopírování adresářů, časová a prostorová náročnost větvení a tagování a podobně.
Jednou z výhod systému Subversion je existence velmi dobré dokumentace (zatím v angličtině) - nazývá se Version Control with Subversion a je volně dostupná (viz odkazy). Další je existence více přístupových metod k repozitáři. +more Subversion je, tak jako CVS, založeno na principu centrálního repozitáře.
Popis nástroje Subversion
Subversion patří do kategorie version control nástrojů a uspokojuje základní potřeby při správě verzí. Je vyvíjen firmou CollabNet, Inc. +more a je šířen pod licencí, která umožňuje jeho bezplatné komerční použití, k dispozici jsou zdrojové kódy.
Důvodem jeho vzniku je snaha o nahrazení jiného velmi používaného systému, zvláště ve světě open source, CVS. Zčásti je Subversion systémem CVS inspirován, bere si z něj některé jeho vlastnosti, je však mnohem flexibilnější a jeho používání je snazší.
Lze ho provozovat na mnoha platformách, včetně Windows.
Skládá se ze dvou hlavních částí - klientská část a serverová.
Klientská část poskytuje nástroje pro práci s verzemi přímo v pracovním adresáři a komunikaci se serverovou částí, která se stará o repository (centrální úložiště).
K repository lze přistupovat různými způsoby (lokálně, přes nativní protokol svn://, DAV). Existuje několik klientských nástrojů, od příkazového řádku, přes webové rozhraní až po nástroje integrované do GUI operačního systému. +more Záleží na tom, co kterému uživateli vyhovuje nejvíce.
Základní pojmy a postupy
;Repository (repozitář, centrální úložiště) :Umožňuje organizovat projekt a spravovat jeho verze. Fyzicky je uloženo na souborovém systému serveru. +more K repository se přistupuje přes Repository Access Layer (RA) systému Subversion a jeho správa se provádí klientskými nástroji.
Branch (větev) :Slouží k organizaci repository, jedná se o jakousi analogii s adresáři. Pokud se z repository vyzvedne větev, na klientovi vznikne adresářová struktura, která přesně odpovídá větvím v repository.
Revision (revize) :Revize je pořadové číslo každé změny. Slouží ke sledování změn ve větvích v čase. +more Každá změna v nějaké větvi vytvoří novou revizi v rámci celé repository. Revize obsahuje informace o tom, co bylo změněno, kdo změnu provedl, poznámku a čas.
Pracovní kopie :Kopie dat z určité větve z repository v aktuální revizi na pevný disk lokálního klienta. Do pracovní kopie je možné provádět změny, které je možné commitem uložit zpět do repository.
Commit :Odeslání změn provedených od posledního commitu do repository. Commit je nejčastěji používaná změna při práci s repository. +more Pokud se provádí commit celé pracovní kopie, jedná se o atomickou operaci, jsou odeslány veškeré změny ve všech objektech ve správě verzí; pokud dojde k nějaké chybě při přenosu, není commit pro ostatní uživatele repository zviditelněn, není vytvořena nová revize.
Konflikt :Konflikt je stav, který signalizuje, že stejný objekt, který má být právě commitován, byl změněn někým jiným a nachází se v repository v aktuální revizi v jiné podobě, než jaký je v pracovní kopii. Nelze provést commit celé pracovní kopie, pokud se v ní nachází jeden nebo více souboru v konfliktu.
Changeset :Changeset je sada změn, které se posílají z pracovní kopie do repository (nebo sada změn provedená v rámci repository). Subversion ukládá vždy jen informace o provedených změnách, tedy rozdíly mezi jednotlivými revizemi. +more Tím se spoří místo na disku a snižuje objem dat přenášených z klienta na server.
Merge :Sloučení změn z větve v repository do pracovní kopie. Lze specifikovat určitý rozsah změn, a to intervalem revizí.
Cheap-copy :Technika, kterou se realizují kopie prováděné v rámci repository. Objekty nejsou v repository fyzicky duplikovány, ale jsou vytvořeny tzv. +more odkazy (link) na kopírované objekty. Zjednodušeně lze chápat takovýto link jako informaci o URL s číslem revize. Díky tomu má SVN nízké nároky na datový prostor.
Správa verzí pomocí Subversion
Následuje příklad, jak probíhá správa verzí pomocí SVN. Předpokládejme, že je již v repository importovaný projekt, jedná se o zjednodušený proces, kdy požadavky jsou vyvíjeny za sebou, nikoliv paralelně.
# Vyzvednutí projektu (tzv. checkout) z repository do lokálního adresáře. +more Tím se vytváří pracovní kopie, která funguje jako pracovní prostor. # Editace požadovaných souborů (přidání, mazání). # Odeslání změn do repository (tzv. commit). Změny jsou viditelné pro všechny uživatele repository. Spolu se změnami se zapisuje čas jejich poslání do repository, autor a textový komentář. Další vývojář může pokračovat v práci. # Další vývojář (pokud již má pracovní prostor) provede stažení aktuální verze z repository (tzv. update) a pokračuje ve vývoji. Vytvořené změny opět odešle do repository (tzv. commit).
Organizace repository
Z mnoha důvodu je třeba repository vhodným způsobem organizovat, pro organizování repository slouží větve. Vzhledem ke flexibilitě, kterou poskytuje díky konceptu cheap-copy, umožňuje Subversion měnit repository v souladu s aktuálně se měnícími požadavky.
Existuje několik osvědčených způsobů, jak repository v Subversion organizovat, záleží vždy na způsobu, jakým se daný projekt vyvíjí.
Reference
Externí odkazy
[url=http://subversion. apache. +moreorg]subversion. apache. org[/url] - Domovská stránka projektu Subversion, dříve [url=https://web. archive. org/web/20040401153243/http://subversion. tigris. org/]subversion. tigris. org[/url] * [url=http://svnbook. red-bean. com]svnbook. red-bean. com[/url] - Domovská stránka knihy Version Control with Subversion. * [url=https://web. archive. org/web/20111105181830/http://better-scm. berlios. de/]better-scm. berlios. de[/url] - iniciativa pro lepší SCM, přehled alternativ k CVS. * [url=https://web. archive. org/web/20060407095620/http://tortoisesvn. tigris. org/]tortoisesvn. tigris. org[/url] - Subversion klient pro Microsoft Windows (integrovaný i do průzkumníka) * [url=http://kdesvn. alwins-world. de]kdesvn. alwins-world. de[/url] - Subversion klient pro KDE * [url=https://web. archive. org/web/20110825210658/http://subclipse. tigris. org/]subclipse. tigris. org[/url] - Subversion plugin pro Eclipse.
* [url=https://web. archive. +moreorg/web/20081214222003/http://www. linuxsoft. cz/article_list. php. id_kategory=236]linuxsoft. cz[/url] - Seriál o Subversion na linuxsoft. cz (poskytující dostatečný úvod do problematiky).
Kategorie:Systémy pro správu verzí Kategorie:Svobodný software v C Kategorie:Software pod licencí Apache