Subversion: un WebSVN avec mod_dav et mod_svn d'Apache
Subversion a deux modes d’accès: svnserve (daemon standalone, protocole svn://) et Apache avec mod_dav_svn (protocole http:// ou https://). Le mode Apache expose le repository via HTTP, avec l’authentification Apache, le SSL Apache et WebSVN pour le browsing web des sources.
Le module mod_dav_svn
apt-get install libapache2-svn
Ce paquet installe mod_dav et mod_dav_svn (le module qui expose les repositories SVN via WebDAV).
La configuration Apache
# /etc/apache2/sites-available/svn
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
DAV svn: active le mode SVNSVNParentPath /var/svn: le directory qui contient les repositories (un repo par sous-directory)AuthUserFile: le fichier htpasswd pour l’authentification
Créer le repository et le fichier de mots de passe:
svnadmin create /var/svn/projet1
htpasswd -c /etc/apache2/dav_svn.passwd user1
htpasswd /etc/apache2/dav_svn.passwd user2
chown -R www-data:www-data /var/svn/projet1
Apache doit être propriétaire du repository (il écrit dans le repository à chaque commit).
Le checkout
svn checkout http://serveur/svn/projet1
Le protocole est http:// (ou https:// si mod_ssl est activé), pas svn://: c’est Apache qui sert le repository, pas svnserve.
WebSVN
WebSVN est une application PHP qui browse les repositories SVN: les fichiers, les diffs, les logs, les blame. Il ne fait pas de checkout, il fait du browsing en lecture seule.
apt-get install websvn
La configuration de WebSVN pointe vers les repositories:
// /etc/websvn/config.php
$config->parentPath('/var/svn');
$config->useAuthentication();
WebSVN est accessible sur http://serveur/websvn/ et il browse tous les repositories dans /var/svn.
SVNParentPath vs SVNPath
SVNParentPath /var/svn: expose TOUS les sous-directories de /var/svn comme repositories. L’URL esthttp://serveur/svn/projet1,http://serveur/svn/projet2, etc.SVNPath /var/svn/projet1: expose UN SEUL repository. L’URL esthttp://serveur/svnet ce repository-là.
SVNParentPath est le pattern multi-projets: un directory parent, plusieurs repositories, un seul bloc Apache.
[edit: 2026] Subversion a cédé la place à Git dans 95% des projets, mais mod_dav_svn existe toujours et sert toujours dans les entreprises qui ont un héritage SVN. WebSVN a été remplacé par des interfaces Git web (GitLab, Gitea, Gogs) qui font browsing + hosting + CI. Le pattern Apache-exposed-repository (exposer un VCS via HTTP/HTTPS avec authentification Apache) reste pertinent pour les environnements où on ne peut pas installer de service dédié, mais Git a simplifié le pattern: git http-backend + smart HTTP ou simplement un remote sur un chemin de fichiers (git clone /path/to/repo).