Subversion server na CentOS 5.5

Úvod II.

Pokračování nastavenení subversion (nejen) na CentOS 5.5. V první části jsme nainstalovali a zprovoznili subversion přes protokol http, teď budeme pokračovat s dalším nastavením. Čeká nás rozvržení repozitáře, nastavení přístupů a abych nekrad', zmíním se tu samozřejmě i o použitých zdrojích.

Rozvržení repozitáře

Strukturu repozitáře si můžete nastavit dle libosti. Už nemůsíte pracovat na serveru - jakmile jste jej jednou rozjeli, lze k němu přistupovat vzdáleně.

Zažité rozvržení je toto:

MyFirstRepo
        - branch
        - tags
        - trunk

Co to znamená Branch, Tags a Trunk si můžete přečíst např. na blogu BorBer.com.

Toto rozložení vytvoříme nejprve jako adresářovou strukturu v /tmp a tu pomocí svn import importujeme do našeho repozitáře. Bude se jednat o první změnu, číslo revize se tedy o jedno zvýší. Pomocí přepínače -m zapíšeme i první poznámku.

$ cd /tmp
$ mkdir repo
$ cd repo
$ mkdir branch tags trunk
$ svn import /tmp/repo/ file:///var/www/svn/MyFirstRepo/ -m "layout for my first repo"
Adding         /tmp/repo/trunk
Adding         /tmp/repo/branch
Adding         /tmp/repo/tags
 
Committed revision 1.
$

Nastavení přístupů (ACL)

AccessACL je zkratka pro Access Control List, nejen ve světě subversion pomocí těchto pravidel nastavujeme kam kdo může.

ACL se pro SVN nastavuje v konfiguraci webserveru, který se o tento přístup stará (uživatel, který nemá přístup do dané složky poté obdrží chybu 403). V /etc/httpd/conf.d/subversion.conf použijeme direktivu AuthzSVNAccessFile:

        AuthzSVNAccessFile /etc/svn/acl-repo.conf

V souboru, který jsme použili pak můžeme nastavovat práva následovně:

[jmeno_repozitare:cesta_v_repozitari]
uzivatel = prava

uzivatel je již dříve vytvořený uživatel. prava se používájí r pro čtení, rw pro čtení/zápis nebo prázdné místo pro zakázání přístupu. jmeno_repozitare lze vynechat, je-li tento soubor platný buď pro jeden repozitář nebo globálně pro všechny.

Uživatele můžeme dále rozdělit na skupiny a tak jim hromadně nastavovat práva. Příklad ACL souboru:

[groups]
skupina = alice, bob, cecile
 
[MyFirstRepo:/]
@skupina = r
dude = rw

ACL prakticky

Osobně mám radši praktické příklady, proto jsem si našel chvilku a načrtl (téměř) reálný projekt.

Mějme menší "firmu" se dvěma kmenovými zaměstnanci (int_user_1, int_user_2), kteří můžou měnit vše a dvěma externisty (ext_user_1, ext_user_2), kteří mají přístup pouze do určitých složek. Projekt může mít např. toto rozvržení (interní uživatele mohou všude, externí jen do označených složek):

project
    |-- tools (ext. uživatelé)
    |-- external
    |       |-- _projekt_1 (ext_user_1)
    |       `-- _projekt_2 (ext_user_2)
    `-- trunk

Soubor s přístupovými právy pak bude vypadat asi takhle:

[groups]
int = int_user_1, int_user_2
ext = ext_user_1, ext_user_2
 
[/]
@int = rw
@ext =
 
[/tools]
@ext = rw
 
[/_projekt_1]
ext_user_1 = rw
 
[/_projekt_2]
ext_user_2 = rw

Další informace a zdroje

Pěkný dvoudílný seriál, ze kterého jsem vycházel i zde, vyšel na abclinuxu.cz: Jak spravovat software pomocí Subversion.

Přímo na wiki CentOSu lze najít postup pro instalaci (EN), která je s touto téměř totožná.

A samozřejmě nemůžu zapomenou na komunitní dokumentaci Subversion.