Subversion nebo jiné verzovací nástroje (CVS, git,...) zná asi každý, kdo přičuchl k programování a projektu, na kterém spolupracuje více lidí. Kdo nezná, ať googluje (malé seznámení je trochu níže). V tomto článku se pokusím představit, jak rozběhat SVN server dostupný přes http na CentOSu.
English speaking? Try this link: HowTos/Subversion - CentOS Wiki

Co to SVN, sakra, je?
Jak říká wikipedie:
Subversion (zkráceně SVN) je systém pro správu a verzování zdrojových kódů, náhrada za starší CVS. (...) Subversion je tak jako CVS založeno na principu centrálního repozitáře.
Pomocí SVN ale nemusíte spravovat jen zdrojové kódy, můžete jej využít k verzování ... vlastně čehokoliv. Například pro uložení změn důležitých konfigurací, psaní bakalářské/diplomové práce, dokumentace, uložení různých verzí při úpravě obrázků, atd. V současné době se jedná o jeden z nejpoužívanějších systémů (nemusí nutně znamenat, že je nejlepší).
Poznámka: pro tento článek používám jako doménu
example.com, pokud používáte metodu copy & paste, pak si ji nezapomeňte změnit
Instalace
K repozitářům SVN lze přistupovat různě: lokálně, přes samotný protokol svn, nebo přes http (a šifrované https). Právě poslední jmenované využiji. Ke zprovoznění SVN bude potřeba web server apache, balík subversion a modul mod_dav_svn.
yum install httpd subversion mod_dav_svn
Poznámka: pokud instalujete na 64bitový systém, stačí instalovat balík subversion.x86_64. Instalace subversion s yum s sebou tahá i verzi i386 a díky ní všemožné závislosti (např. - pro mě nevysvětlitelně - postgres-libs).
Repozitáře budeme ukládat do složky /var/www/svn, tak ji vytvoříme:
mkdir /var/www/svn
Konfigurace
Webserver
Při instalaci balíku mod_dav_svn se vytvoří i základní konfigurace v souboru /etc/httpd/conf.d/subversion.conf, kde mj. se načítá samotný modul.
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
Mimo toto potřebujeme webserveru říct, pod jakou adresou budeme k repozitáři přistupovat. V základním nastavení použijeme direktivu Location (samozřejmě lze použít i pod VirtualHostem).
<Location /svn>
DAV svn
SVNPath /var/www/svn/MyFirstRepo
AuthType Basic
AuthName "Repozitare"
AuthUserFile /etc/svn/auth-repo.conf
</Location>Co přesně jsme nyní udělali? Při přístupu na http://example.com/svn bude webserver vědět, že se má postarat o svn:
- SVNPath - cesta k repozitáři
- Auth* - k repozitáři mohou přistupovat pouze ověření uživatelé, nechceme přece, aby nám tam lezl kde kdo..
SVNPath vs. SVNParentPath: Chcete-li na serveru obsluhovat pouze jeden repozitář je roumné použít direktivu SVNPath. Pro více repozitářů pak slouží direktiva SVNParentPath, která se stará o jejich zobrazování pomocí
http://domena.cz/svn/jmeno_repozitare. Jako parametr SVNParentPath slouží cesta k adresáři nadřazenému repozitářům.
Po změnách musíme novou konfiguraci načíst:
$ service httpd configtest Syntax OK $ service httpd reload
Uživatelé
Uživatelé jsou (v našem případě) načítani ze souboru /etc/svn/auth-repo.conf, jedná se o klasický htpasswd soubor. Každý uživatel je zapsán na vlastním řádku ve formátu username:encrypted_passwd. Uživatele přidáme pomocí příkazu htpasswd. Při vytváření souboru nezapoměňte na přepínač -c, pro šifrování pomocí MD5 použijte přepínač -m.
$ mkdir /etc/svn $ htpasswd -cm /etc/svn/auth-repo.conf newuser New password: Re-type new password: Adding password for user newuser $
První repozitář
O vytvoření repozitáře se postará příkaz svnadmin. Po vytvoření musíme změnit práva tak, aby s repozitářem mohl pracovat webserver:
$ cd /var/www/svn $ svnadmin create MyFirstRepo $ chown apache:apache MyFirstRepo/ -R
Závěr I.
Pokud se někde nestala chybka, měl by být repozitář již nyní dostupný přes protokol http. Ověřit si to můžete jednoduše: otevřete si v prohlížeči vaši adresu (např. http://example.com/svn) a chce-li po vás ověření a zobrazí Revision 0: /, vše funguje jak má..
Na svém počítači pak můžete připojení otestovat pomocí svn checkout.
# svn co http://example.com/svn svn (...) Authentication realm: <http://example.com:80> Authorization Realm Username: user Password for 'user': (...) Checked out revision 0. #
Nyní máme ve složce svn staženou nultou revizi z vašeho vlastního repozitáře. Gratuluji, máte fungující subversion server!
Více info (nastavení přístupů, rozvržení repozitáře a použité zdroje) najdete na následující stránce.

