Jul 22 2008

Debian: Instalace SVN (Subversion) za 10 minut

Tag: Apache,Debian,Linux,SubversionJens @ 19:55

Subversion je v současné době asi nejlepší nástroj na správu revizí různých zdrojových kódů různých aplikací ale i binárních dat. Navíc mě velmi překvapil svojí vynikající vlastností: vytváří každou další revizi pouze na základě deltifikace a komprese. Výsledná (fyzická) velikost repositáře je malá i v případě správy mnoha revizí. Možná i právě proto používají Seznamáci na zálohování map právě SVN (SVN backup).


Celá instalace je v případě spojení SVN + Apache jednoduchá, stejně jako jeho používání. Nejdříve si nainstalujeme aktuální verzi SVN a modulu SVN do Apache:

# apt-get update && apt-get install subversion libapache2-svn

Dále si určíme umístění SVN repositářů, např. /home/svn a vytvoříme repositář pro konkrétní projekt xyz:

# mkdir /home/svn
# svnadmin create /home/svn/xyz

Nastavíme přístup k repositáři pro Apache (uživatel www-data) a pro skupinu projektu xyz:

# chown -R www-data:xyz /home/svn/xyz
# chmod -R 0770 /home/svn/xyz

Nutná konfigurace Apache, kde z hlediska bezpečnosti použijeme HTTPS — virual hostu pro SSL (návod) typicky v /etc/apache2/sites-available/ssl. Jedná se tedy pouze o přidání tohoto:

<Location /svn/xyz>
    DAV svn
    SVNPath /home/svn/xyz
    AuthType Basic
    AuthName "XYZ Project Subversion Repository"
    AuthUserFile /home/svn/.dav_svn.passwd
    Require valid-user
</Location>

Pro zaheslovaný přístup k repositářům si pak vytvoříme několik uživatelů:

# su www-data -c "htpasswd -c -m /home/svn/.dav_svn.passwd admin"
# su www-data -c "htpasswd -m /home/svn/.dav_svn.passwd jens"

První řádek vytvoří vlastní passwd soubor a přidá uživatel admin, druhý už pak jen přidá uživatele jens.

A konečně, reloadneme Apache pro načtení změn v konfiguraci:

# /etc/init.d/apache2 force-reload

a přes url: https://stroj/svn/xyz vyzkoušíme jestli vše funguje.

2 komentáře k článku “Debian: Instalace SVN (Subversion) za 10 minut”

  1. Michal napsal:

    Ahoj. Již nějakou dobu mi funguje na debianu subversion s několika repozitáři. Subversion jsem na server implementoval podle tvého návodu a zatím jsem neměl žádný problém. Tento týden jsem ovšem potřeboval vytvořit další repozitář a k němu se už nedostanu. Repozitář se vytvořil, ve websvn ho vidím ale není možné s ním dál pracovat (neudělám checkout ani commit). Prosím tě, nevíš kde by mohl být problém ? Znovu jsem pro nově vytvořený repozitář nastavoval chown i chmod viz. článek ale ani toto nepomohlo.

    Děkuji
    Michal

  2. Jens napsal:

    Tech pricin muze byt vice, nepises zde, jakym zpusobem k repozitari pristupujes. Pres Apache? Nebo pres svn:// ? Je potreba nejprve znovu overit prava pristupu k repozitari (jak linuxova, tak i pres autorizacni soubor — je-li pouzit).

    Nove vytvoreny repositar (tedy revize 0) byl mel jit bez problemu checkoutnout, pokud to nejde, je to divne. Do revize 0 se pocatecni commit dela pres svn import.