27.5. Úvod do Subversion

Subversion je svobodný opensource systém pro správu verzí, který je často považován za nástupce staršího systému CVS. To znamená, že funkce známé z CVS jsou běžně dostupné i v subversion, avšak bez nutnosti potýkat se s omezeními a nevýhodami CVS. O některých vlastnostech jsme psali již v kapitole 27.1.3 – „subversion“.

27.5.1. Instalace Subversion serveru

Instalace skladovací databáze na serveru je poměrně snadná. Subversion k tomuto účelu nabízí speciální administrační nástroj. Chcete-li vytvořit nový repositář (skladovací databázi), použijte příkaz:

svnadmin create /cesta/k/repositari

Další možnosti lze zjistit pomocí příkazu svnadmin help. Na rozdíl od CVS není subversion založená na RCS, nýbrž na Berkeley databázi. Proto se ujistěte, že repositář neinstalujete na vzdálené souborové systémy (např. NFS, AFS, Windows SMB). Databáze totiž vyžaduje POSIX kompatibilní zamykací mechanizmy, které nejsou na těchto souborových systémech podporovány.

Příkaz svnlook poskytuje informace o stávajícím repositáři.

svnlook info /cesta/k/repositari

Server musí být nastaven tak, aby umožnil uživatelům přístup k repositáři. Použijte k tomu buď Apache webserver s WebDAV nebo svnserve, což je server dodávaný spolu se subversion. Jakmile je svnserve spuštěn, je repositář přístupný na příslušné URL přes protokol svn:// nebo svn+ssh://. Uživatele, kteří se musejí při použití svn autentizovat, lze nastavit v souboru /etc/svnserve.conf.

Výběr mezi servery Apache a svnserve záleží na mnoha faktorech. Doporučujeme proto nastudovat si příručku k subversion. Více se o ní dozvíte v části 27.5.3 – „Další informace“.

27.5.2. Použití a provoz

K přístupu do repositáře použijte příkaz svn (podobně jako příkaz cvs). Obsah poskytovaný správně nastaveným serverem s odpovídajícím repositářem je přístupný jakýmkoliv klientem jedním z následujících příkazů:

svn list http://svn.example.com/cesta/k/projektu

nebo

svn list svn://svn.example.com/cesta/k/projektu

Uložit existující projekt do aktuálního adresáře (check out) lze příkazem svn checkout:

svn checkout http://svn.example.com/cesta/k/projektu jmenoprojektu

Checkout vytvoří na klientovi nový podadresář jmenoprojektu. V něm lze následně provádět operace se soubory (přidávání, kopírování, přejmenovávání, mazání):

svn add soubor
svn copy starysoubor novysoubor
svn move starysoubor novysoubor
svn delete soubor

Tyto příkazy lze rovněž použít na adresáře. Program subversion navíc umí zaznamenat vlastnosti souboru či adresáře:

svn propset license GPL foo.txt

Předchozí příklad nastaví hodnotu GPL vlastnosti license. Vlastnosti lze zobrazit příkazem svn proplist:

svn proplist --verbose foo.txt
Properties on 'foo.txt':
license : GPL

Změny lze na server uložit příkazem svn commit. Ostatní uživatelé se mohou synchronizovat příkazem svn update.

Na rozdíl od CVS lze stav pracovního adresáře zobrazit bez přístupu k repositáři pomocí svn status. Lokální změny jsou zobrazeny v pěti sloupcích, z nichž nejdůležitější je první:

''

Žádné změny.

'A'

Objekt bude přidán.

'D'

Objekt bude smazán.

'M'

Objekt byl změněn.

'C'

Objekt je v konfliktu.

'I'

Objekt byl ignorován.

'?'

Objekt není verzovacím systémem spravován.

'!'

Objekt chybí. Tento příznak značí, že byl objekt smazán či přesunut bez použití příslušného příkazu svn.

'~'

Objekt je spravován jako soubor, ale byl nahrazen adresářem, nebo naopak.

Druhý sloupec zobrazuje stav vlastností. Význam všech sloupců je popsán v příručce k subversion.

Příkaz svn help použijte, pokud chcete získat popis parametrů příkazu:


svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. Lists versioned props in working copy.
  2. Lists unversioned remote props on repos revision.

27.5.3. Další informace

Prvním místem, kde hledat další informace, je domovská stránka projektu subversion na adrese http://subversion.tigris.org/. Velmi doporučujeme také příručku, která je dostupná online na adrese http://svnbook.red-bean.com/svnbook/index.html nebo po instalaci balíčku subversion-doc v souboru file:///usr/share/doc/packages/subversion/html/book.html.