Apache Subversion, nebo dříve Subversion, zkráceně SVN je systém, který má na starost správu a verzování zdrojových kódů. Nahrazuje starší nástroj CVS, se kterým si zachovává podobný způsob a styl práce, ale snaží se odstraňovat jeho nedostatky jako například nemožnost přesunu nebo kopírování adresářů, časovou a prostorovou náročnost větvění a tagování.

SVN má velmi propracovanou dokumentaci, která se nazývá Version Control with Subversion a je volně dostupná.

Charakteristika SVN

K repozitáři v SVN existuje více přístupových metod. Spadá do kategorie nástrojů na správu verzí, je vyvíjen firmou CollabNet, Inc a šířen pod licencí, která dovoluje jeho bezplatné komerční použití a má volně přístupné zdrojové kódy.

Vznik SVN měl za důvod snahu o nahrazení systému CVS, který byl hojně používaný a open sourcový. V mnohém se z něj vývoj SVN inspiroval, je ale flexibilnější a snadněji se používá.

SVN lze používat na mnoha platformách, mezi které patří i Windows. Má dvě hlavní části, serverovou a klientskou. Klientská část má za úkol poskytnout nástroje pro práci s verzemi přímo v rámci pracovního adresáře a poskytovat komunikaci se serverovou částí. Serverová část se pak stará o centrální úložiště, neboli repository. K tomu lze přistupovat přes nativní protokol svn://. Je k dispozici několik klientských nástrojů, od nejjednodušších přes příkazovou řádku, přes webové rozhraní až po komplexní nástroje integrované do GUI operačního systému. Uživatel má tak možnost vybrat si, který způsob je pro něj optimální.

Základní prvky SVN

  • Repository. Centrální úložiště, které umožní organizaci projektu a správu jeho verzí. Fyzicky je uložené na souborovém systému serveru. Přistupuje se k němu přes Repository Access Layer a správa je řízena klientskými nástroji.
  • Větev. Větev má sloužit k organizaci repository, dala by se použít analogie s adresářem. Pokud se z něj vyzvedne větev, vznikne na klientovi adresářová struktura, která větvím v repository přesně odpovídá.
  • Revize. Každá změna má pořadové číslo, tedy revizi. Toto označení napomáhá sledování změn ve větvích a čase. Jakákoliv změna tvoří novou revizi, která obsahuje informace o provedených změnách, jejich autorovi, poznámku a čas.
  • Pracovní kopie. Za pomoci pracovní kopie dat z některé z větví je možné dělat změny v aktuální verzi na pevném disku lokálního klienta a následně je za pomoci commitu nahrát zpět do repository.
  • Commit. Nejčastěji používaná změna pro práci s repository. Jedná se o odeslání změn provedených od posledního commitu do repository. V případě chyby se commit nezobrazí ostatním uživatelům a není vytvořena nová revize.
  • Konflikt. V případě konfliktu je stejný objekt, který je právě commitován zároveň změněn jiným uživatelem a nachází se tak v repository v jiné podobě, nežli je výchozí revize pracovní kopie. V takovém případě nelze commit provést.

Výhody použití SVN

  • Jednoduchá orientace ve verzích. Díky jednotnému číslu revize je snadné dohledat, co bylo součástí buildu. Zároveň je orientace za pomoci revizí často jednodušší nežli orientace za pomoci data.
  • Kontrola nad změnami. Je jednoduché dohledat, kdo vytvořil danou větev, kdy a proč.

Nevýhody SVN

  • Dohledávání starší verze. Neexistuje jednoduchý způsob, jak svést dohromady všechny verze jednoho zdrojového dokumentu, pokud se snažíte dohledat, která větev obsahuje určitou změnu.
  • Kopie souborů na klientské straně. Pro každý vycheck-outovaný soubor se ukládá kopie v podadresáři, což zabírá místo navíc a zároveň toto řešení nešetří příliš mnoho času.