Une config simple rapide à mettre en oeuvre pour tester rapidement subversion. On ne portera pas plus attention aux problèmes de sécurité. C'est principalement pour des tests en interne. J'ai fait le choix de ne créer qu'un seul repository pour contenir plusieurs projets. Une fois qu'on en a un...
user@host$ mkdir /data/repository
user@host$ svnadmin create --fs-type fsfs projects
Installer mod_dav_svn si ce n'est pas fait :
user@host$ yum install mod_dav_svn
Configurer l'accés au projet :
user@host$ vi /etc/httpd/conf.d/subversion.conf
Contenu du fichier :
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /projects> DAV svn SVNPath /data/repository/projects AuthType Basic AuthName "Proj3ct repository" AuthUserFile /data/repository/projects/conf/http_passwd Require valid-user </Location>
Alternative :
<Location /projects>
DAV svn
SVNPath /data/repository/projects
# Limit write permission to list of valid users.
<Limit GET POST PROPFIND OPTIONS REPORT>
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /data/repository/projects/conf/http_passwd
Require valid-user
</Limit>
</Location>
(Voir aussi la directive LimitExcept d'Apache.)
Note : Il existe également la directive SVNParentPath. Auquel cas il faut préciser le répertoire parent du repository. Ne pas oublier de redémarrer Apache.
user@host$ htpasswd -n username > /data/repository/projects/conf/http_passwd
Voici une structure couramment adoptée pour l'organisation des sources :
ProjectName/ |-- branches |-- tags `-- trunk
Commande d'import :
user@host$ svn import ProjectName file:///data/repository/projects/ProjectName -m 'initial import'
Vérifions :
user@host$ svn list file:///data/repository/projects/
http://localhost/projects
Comme nous utilisons le mod web_dav c'est Apache qui effectue les opérations d'écriture, il faut donc lui donner les droits d'écriture dans repository (db, dav, locks...)
user@host$ chown -R apache:apache dirname
Voila la commande pour récupérer le trunk de ProjectName par exemple :
user@host$ svn co http://localhost/projects/ProjectName/trunk/
Enjoy !
Accéder aux sources via ssh :
svn+ssh://[login]@my.domain.tld/full/path/to/repository