Table des matières
Installation d'un serveur SVN
Cette page explique comment installer un serveur Subversion sur Ubuntu 11.10.
Installation des logiciels nécessaires
- Synchroniser l'index des paquetages
$ sudo apt-get update
- Installer Subversion
$ sudo apt-get install subversion
- Installer Apache
$ sudo apt-get install apache2 libapache2-svn
Configuration d'Apache
Dans le fichier suivant, les lignes indiquées sont présentes, mais elles sont commentées. Il suffit de les décommenter et de modifier la ligne au besoin.
- Éditer le fichier
/etc/apache2/mods-enabled/dav_svn.conf
:<Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /var/svn/passwd </Location>
Créer un dépôt
Un dépôt est un repository.
- Créer le répertoire du dépôt
$ sudo mkdir /var/svn $ sudo chown www-data /var/svn
- Créer un fichier de mot de passe
$ sudo htpasswd -c /var/svn/passwd user1 $ sudo htpasswd /var/svn/passwd user2 $ sudo htpasswd /var/svn/passwd usern
Le paramètre
-c
est nécessaire qu'une fois, à la création du fichier de mot de passes. Changez et répétez la commande autant de fois qu'il y a des utilisateurs à ajouter en modifiantuser1
,user2
,usern
par des noms correspondants. - Changer le propriétaire
$ sudo chown www-data /var/svn/passwd
- Créer le répertoire du dépôt (la partie
repository
peut être différente)$ cd /var/svn $ sudo mkdir repository
- Initialiser un nouveau dépôt
/var/svn$ sudo svnadmin create repository /var/svn$ sudo chown -R www-data:www-data /var/svn/*
La partie
repository
doit être la même qu'à l'étape 4. - À ce point-ci, on peut redémarrer le service Apache :
$ sudo service apache2 restart
Appliquer les permissions utilisateurs
Définir des permissions d'utilisateurs, pour les utilisateurs SVN, permet de créer des groupes d'utilisateurs et de donner des accès à différents projets selon le groupe. Exemple, un groupe web_team
aura plein accès sur le projet de site web et le groupe developers
aura plein accès sur le projet d'un logiciel quelconque. On peut donner des accès en lecture, en écriture, ou les deux.
- Modifier le fichier de configuration d'Apache
/etc/apache2/mods-enabled/dav_svn.conf
pour inclure la sécurité en décommentant la ligneAuthzSVNAccessFile /etc/apache2/dav_svn.authz
. - Créer le fichier
/etc/apache2/dav_svn.authz
en incluant les groupes et les permissions des utilisateurs. Le contenu du fichier peut ressembler à ceci :[groups] admins = john, luke project_managers = jessie work_team = karl, eric, john, steve clients = elie [/] admins = rw * = r [/project1] admins = rw project_managers = rw work_team = rw * = r [/clients] admins = rw work_team = r clients = rw
Utiliser SSL (https://)
- Créer un certificat
$ openssl genrsa -des3 -out server.key 1024 $ openssl rsa -in server.key -out server.key.insecure $ mv server.key server.key.secure $ mv server.key.insecure server.key $ openssl req -new -key server.key -out server.csr $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- Copier le certificat à l'endroit approprié :
$ sudo cp server.crt /etc/ssl/certs $ sudo cp server.key /etc/ssl/private
- Supprimer les fichiers
server
concernant la création du certificat dans le répertoire courant. - Configurer Apache pour HTTPS :
$ sudo a2ensite default-ssl
- Ajouter cette section dans
/etc/apache2/sites-available/default-ssl
:<Location /svn> DAV svn SVNPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /var/svn/passwd Require valid-user </Location>
<Location /svn></Location>
peut être commentée dans fichier /etc/apache2/mods-enabled/dav_svn.conf
si ce dernier a été décommenté auparavant.
Redémarrer Apache ($ sudo /etc/init.d/apache2 restart
) si nécessaire.
Problèmes
Commit failed (details follow): access to '/svn/repository/!svn/act/c09cbbdc-e0c3-4bad-97bc-88a25c462c31' forbidden
Notes
Côté client
Effacer les répertoires .svn
:
find ./ -name ".svn" | xargs rm -Rf
Aussi pour Mac :
find ./ -name ".DStore" | xargs rm -Rf
Sources
- MASON, Mike, Pragmatic Guide to Subversion, Pragmatic Programmers, 2010.