System kontroli wersji (SVN) na Ubuntu? Da się i to bardzo prosto

Systemy kontroli są bardzo dobrą rzeczą do kontrolowania dostępu do projektu – kto, co, kiedy… W innym wpisie był opis, jak to zrobić na FreeBSD, jednak Ubuntu jest prostszy i coraz chętniej używany (w tym przeze mnie), dlatego też opis jak to się robi 🙂

W pierwszej kolejności trzeba zaktualizować system:

sudo apt-get update && sudo apt-get upgrade

I lecimy z normalną instalacją SVN:
sudo apt-get install subversion

Tworzymy miejsce gdzie repozytoria będą trzymane (w moim przypadku w moim katalogu domowym):
sudo svnadmin create /home/grzegorz/svn

Trzeba doinstalować moduły do apache:
sudo apt-get install libapache2-svn

Jak również poprawić konfigurację tegoż modułu:
sudo gedit /etc/apache2/mods-enabled/dav_svn.conf

Po czym odkomentowujemy potrzebne linie, u mnie ten plik wygląda tak:
<Location /svn>
DAV svn
SVNPath /home/grzegorz/svn
AuthType Basic
AuthName „InfoEnterprise SVN”
AuthUserFile /home/grzegorz/svn/SVN_users.passwd
Require valid-user
</Location>

Teraz tylko:
sudo /etc/init.d/apache2 restart

I gotowe 🙂

Serwer działa, ale do małych zastosowan jest idealny, a do dużych – brakuje jednej funkcji… czemu każdy może edytować każdy projekt? To jest błąd, więc jak to zrobić aby nie każdy mógł edytować wszystko?

Zaczynamy od:
sudo gedit /etc/apache2/mods-enabled/dav_svn.conf

dodajemy wpis (między <location> </location>):
AuthzSVNAccessFile /sciezka_do_pliku/svnaccess.conf

Plik svnaccess.conf może mieć dowolną nazwę.

W pliku tym  tworzymy grupy, tworzymy całą gałąź dostępu kto gdzie może się dostać, przykładowo:

[groups]
admin = user1, user2

[/]
* =
@admin = rw

[projects:/proj1]
user3 = rw

[projects:/proj2]
user3 = rw

[projects:/proj3]
user2 =

[projects:/proj4]
user2 =

[projects:/proj5]
user2 =

Co nam dała taka konfiguracja? Otóż, jest 1 grupa „admin”, w której jest dwóch użytkowników, ale jeden z nich nie ma dostępu do wybranych projektów. Dodatkowo jest jeden użytkownik który ma dostęp tylko do 2 projektów. Proste, szybkie i skuteczne

Aktualizacja 19.02.2013

Coś się porobiło i przestał poradnik działać..:

Syntax error on line 6 of /etc/apache2/mods-enabled/dav_svn.conf:
Invalid command ‚AuthzSVNAccessFile’, perhaps misspelled or defined by a module not included in the server configuration
Action ‚configtest’ failed.
The Apache error log may have more information.
…fail!

Aby naprawić wystarczy dodać:
sudo a2enmod authz_svn.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę dokończyć równanie: * Time limit is exhausted. Please reload CAPTCHA.