Ce mini howto va vous permetre en quelques touch de mettre en place un serveur svn sur votre Etch.
On va supposer que votre repo sera dans /var/svn et s'appellera project.
Executez toutes ces commandes en tant que root :
aptitude install subversion apache2 php5 libapache2-svn
Au cas ou..
vim /etc/apache2/httpd.conf ServerName 127.0.0.1 :wq
Creation des repertoires + gestion des droits
mkdir -p /var/svn/project chgrp -R www-data /var/svn chmod -R 770 /var/svn chmod -R g+s /var/svn
On cree notre premier repo :
svnadmin create /var/svn/project
On configure toussa… Ici tous ceux qui sont authentifies auront un droit d'ecriture.
vim /var/svn/project/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = htpasswd authz-db = authzfile :wq
On defini des groupes et des utilisateurs. Emile n'aura que le droit de lire.
vim /var/svn/project/conf/authzfile [groups] groupe1 = jean,jules groupe2 = emile [/] @groupe1 = rw @groupe2 = r * = :wq
On leur donne un mot de passe. La premiere ligne permet de creer le fichier.
htpasswd -c -m /var/svn/project/conf/htpasswd jean htpasswd -m /var/svn/project/conf/htpasswd jules htpasswd -m /var/svn/project/conf/htpasswd emile
Configuration d'apache.
vim /etc/apache2/mods-available/dav_svn.conf <Location /project> DAV svn SVNPath /var/svn/project AuthType Basic AuthName "Project Repository" AuthUserFile /var/svn/project/conf/htpasswd AuthzSVNAccessFile /var/svn/project/conf/authzfile Require valid-user </Location> :wq
On rajoute le Directory.
vim /etc/apache2/sites-enabled/000-default [... a la fin avant le </VirtualHost> ...] <Directory "/var/svn/project"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> :wq
Hop, Hop, on peuple un minimum notre repo et on remet les bons droits.
cd /tmp && mkdir temp && cd temp mkdir -p branches tags trunk/src trunk/images trunk/includes trunk/lib cd ../ svn import -m "Importing project" temp file:///var/svn/project chmod -R 770 /var/svn
Vous pouvez a présent vous rendre sur http://localhost/project ou faire un “svn co http://jean@localhost/project”
Youpi, mais c'est moche…
Solution : websvn !
aptitude install websvn
Lors de l'install entrez les valeurs suivantes :
Premier ecran : <OK> Second ecran : /var/svn Troisieme ecran : (vide) Dernier : <OK>
Decommentez ou ajoutez les lignes suivantes dans le fichier :
vim /etc/websvn/config.inc $config->setTemplatePath("$locwebsvnreal/templates/BlueGrey/"); include("languages/french.inc"); unset($contentType[".sh"]); $config->useEnscript(); $extEnscript[".java"] = "java"; $extEnscript[".pl"] = "perl"; $extEnscript[".py"] = "python"; $extEnscript[".sql"] = "sql"; $extEnscript[".html"] = "html"; $extEnscript[".xml"] = "html"; $extEnscript[".thtml"] = "html"; $extEnscript[".tpl"] = "html"; $extEnscript[".sh"] = "bash"; :wq
Configuration d'apache pour websvn
vim /etc/websvn/apache.conf <Location /websvn> Options FollowSymLinks order allow,deny allow from all AuthType Basic AuthName "Subversion Repository" Require valid-user AuthUserFile /var/svn/project/conf/htpasswd <IfModule mod_php4.c> php_flag magic_quotes_gpc Off php_flag track_vars On </IfModule> </Location> :wq
Rendez vous alors sur http://localhost/websvn et youpi, c'est joli !
Si vous avez le courage, vous pouvez customiser votre interface. Il suffit pour cela de creer un nouveau repertoire dans /var/www/websvn/templates Puis de copier par exemple le contenu de BlueGray dans votre nouveau repertoire et de modifier cette ligne dans /etc/websvn/config.inc :
$config->setTemplatePath("$locwebsvnreal/templates/VOTRE_TEMPLATE/");
Vous pouvez par exemple ecraser subversion.png par votre propre logo.
A noter que les gars qui ont fait websvn ne devaient pas avoir de don particulier pour le CSS, et qu'ils ont fait un truc a la quick&dirty…
Amusez vous bien !
Si certains veulent simplement mettre en place un serveur SVN de petite envergure, une solution consisterait a utiliser svn+ssh. Plus court, et sans convi clika truc a la websvn.
aptitude install subversion
Creation des repertoires + gestion des droits
groupadd subversion mkdir -p /var/svn/project chgrp -R subversion /var/svn chmod -R 770 /var/svn chmod -R g+s /var/svn
On cree notre premier repo :
svnadmin create /var/svn/project
On va faire un ptite bidouille pour lancer umask avant svnserve :
mv /usr/bin/svnserve /usr/bin/svnserve-real
vim /usr/bin/svnserve #!/bin/sh umask 002 /usr/bin/svnserve-real $@ :wq
Creeons nos utilisateurs :
adduser --ingroup subversion jean adduser --ingroup subversion jules
Lancons ensuite svnserve :
svnserve --daemon --root /var/svn/
Vous pouvez a present vous amuser avec des import etc.. :
svn import -m "Importing Project" trunk svn+ssh://jean@serveursvn/project svn co svn+ssh://jean@serveursvn/project/trunk
Ceci dit, cette methode ne vaut le coup que si seulement deux ou trois personnes vont utiliser le depot et qu'il n'y a pas de regles de secu particulieres a mettre en place.
— jfg 2007/12/16 00:46