Activistisch versie beheer met Subversion

 
10 januari 2008

Versie beheer is een noodzaak voor goede software-ontwikkeling en daar zijn al lange tijd goede tools voor. Het oude CVS begint echter wat te veel last te krijgen van zijn beperkingen. De nieuwe gedistribueerde tools als arch, bazaar, git, mercurial of monotone passen (nog) niet in de ontwikkelmethodes die de meesten toepassen. Daarom viel de keus eigenlijk al snel op de natuurlijke opvolger van CVS: Subversion.

Installatie is wederom gedaan met apt-get install subversion subversion-tools libapache2-svn.

De repository moet ergens op disk weggeschreven kunnen worden, maak daarom een nieuwe gebruiker svn aan: adduser –disabled-password svn. Deze gebruiker moet niet kunnen inloggen, maar er wel een en ander uit kunnen voeren. Vandaar de –disabled-password.

De webserver moet verder kunnen schrijven in de repository. Dit kan met adduser www-data svn geregeld worden. Zorg er daarnaast voor dat de permissies hiervoor goed staan. Pas eventueel de umask aan in /home/svn/.bash_profile, zet deze op 007 en verwijder het commentaar teken (#).

Om te testen maken we alvast een repository aan. Doe dit als gebruiker svn: svnadmin create /home/svn/repositories/test.

Edit default-ssl en voeg het volgende toe:

<Location /svn >
DAV svn
SVNParentPath “/home/svn/repositories”
Order deny,allow
Allow from all
</Location>

Dit zorgt er voor dat je in een keer klaar bent voor alle repositories die je ooit aanmaakt in /home/svn/repositories. Als je per repository wilt instellen of ze beschikbaar zijn, gebruik dan SVNPath “/home/svn/repositories/test”. Dan moet je echter wel per repository een andere Location toevoegen aan jouw site configuratie.

Om te testen of een en ander werkt, moet eerst nog een module geactiveerd worden in apache: a2enmod dav_fs. De overige modules (dav en dav_svn) zijn al actief. Uiteraard moet er ook weer herstart worden.

Surfen naar https://<server>/svn/test laat een repository zien met revisie nummer 0. Browsen naar https://<server>/svn levert echter een verrasssende 403 Forbidden op en geen lijst met beschikbare repositories. Als dat gewenst is, kun je met Google een aantal opties vinden om dat te realiseren.

Tot nu toe is de toegang tot de repository nog vrij voor allen, of eigenlijk vogelvrij. Om dat af te schermen maken we gebruik van de eerder beschreven authenticatie via PostgreSQL. Begin met het aanmaken van een bestand /home/svn/conf/default-auth.conf en plaats daarin de AuthType en Auth_PG-tags uit het voorgaande artikel. Maak daarna een tweede bestand aan voor de repository die we willen beveiligen: /home/svn/conf/policies/test.conf en zet daar het volgende in:

<Location /svn/test >
Include “/home/svn/conf/default-auth.conf”
AuthName “SVN repo for project Test”
require group test
</Location>

Hiermee moet iedereen voor alle toegang authenticeren. Wil je gasten read-only toegang geven, gebruik dan nog LimitExcept. Zie de documentatie voor Apache hoe dat te doen.

Voeg verder de volgende regel toe aan de VirtualHost in default-ssl:

Include “/home/svn/conf/policies/*.conf”

Dit zorgt er voor dat alle toekomstige project configuraties ook ingelezen worden, na een herstart van Apache.

Als nu naar dezelfde test repository gesurft wordt, komt er een pop-up waar om een username en wachtwoord voor SVN repo for project Test gevraagd wordt. Gebruik test met wachtwoord secretpwd2 om er in te komen.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development

Tags: , , , , ,