©
. Document créé le 20 août 2010 , mis à jour le 20 août 2010.Science sans conscience n’est que ruine de l’âme. François Rabelais
Accueil du site > Astuces > SVN > SVN, installation et configuration simple
Un précédent guide posté, il y a presque trois ans, explicite l’installation de subversion/svn pour FreeBSD 6.
Ce billet reprend la démarche - qui n’a guère évolué - pour FreeBSD 7.
Objectif : installer un serveur svn accessible à distance via svn et/ou svn + ssh.
Comme d’habitude, tout se passe en ligne de commande.
Il existe deux packages pour subversion dans les ports :
Pour l’installation de la distributin standard :
cd /usr/ports/devel/subversion
make install && make clean
Créer ensuite un utilisateur svn à l’aide de adduser.
Aller dans le répertoire du compte svn et ajouter un dépôt nommé repos. Attribuer ce dossier et son contenu à svn :
cd ~svn
svnadmin create repos
chown –R svn:svn repos
Le dossier de dépôt contient un fichier repos/conf/svnserve.conf qu’il faut compléter. Au plus simple, décommenter les lignes :
password-db = passwd
et
authz-db = authz
Dans la foulée, décrire le répertoire/projet par quelque chose du genre :
realm = Mon repertoire de depot distant
.
Ici sans accent pour éviter les conflits.
Pour accéder à distance à ce dépôt svn, il faut créer un utilisateur. Inutile de compléter la base des comptes /etc/passwd, il suffit de compléter les fichiers :
Et un troisième si une gestion des droits d’accès plus fine est souhaitée :
Par exemple, pour l’utilisatrice Alice, qui doit avoir un accès en écriture et en lecture et l’utilisateur Bernard qui ne peut que lire le dépôt (ce qui sous-entend qu’un utilisateur anonyme n’a pas accès à ce dépôt) :
Dans repos/conf/passwd, les mots de passe :
alice = secretdalice
bernard = secretdebernard
Dans repos/conf/authz, les droits d’accès :
[/]
alice = rw
bernard = r
* =
Le [/] indique le périmètre d’accès. Ici la racine du dépôt.
Et pour empêcher la lecture par défaut, fichier repos/conf/svnserve :
anon-access = none
Pour accéder à distance, repos/conf/svnserve doit être activé.
Ajouter la ligne
svnserve_enable="YES"
à /etc/rc.conf.
Nota : si votre répertoire de dépôt porte un autre nom que repos, il faut aussi le préciser dans /etc/rc.conf. Lire le fichier /usr/local/etc/rc.d/svnserve pour en savoir plus.
Lancer le service svnserve :
/usr/local/etc/rc.d/svnserve start
Tester via une autre machine :
Création d’un répertoire dans le dépôt :
svn mkdir svn://alice:secretdalice@svn.foo.bar/testalice -m "Alice cree son projet"
Le retour doit être du style :
Révision 1 propagée.
Alice met à jour son dépôt sans le répertoire courant (le point à la fin de la ligne indique le répertoire courant) :
svn checkout svn://alice:secretdalice@svn.foo.bar/testalice .
Alice crée un fichier quelconque et l’ajoute au dépot :
touch test
svn add test
svn ci -m "envoi du fichier"
Bernard récupère dans son répertoire le projet d’Alice à partir d’un autre compte que celui utilisé pour l’exemple ci-dessus :
svn checkout svn://svn.foo.bar/testalice .
demande un login/mot-de-passe.
Bernard fournit ses identifiants, et svn lui demande s’il doit ou non conserver le mot de passe crypté. Accepter. Le fichier d’Alice est téléchargé dans le répertoire courant.
Modifier ce fichier test puis tenter de l’envoyer sur le dépôt :
svn ci -m "Bernard tente d'envoyer le fichier"
Le message d’erreur, ou plutôt de refus en retour :
svn: Commit failed (details follow):
svn: Authorization failed
svnserve est utilisé pour les appels via le protocole svn.
Pour ssh, la connection passe d’abord par ssh qui passe ensuite - après authentification - par svn. Il faut donc compléter l’url par le vrai chemin physique, sur le disque, du répertoire de dépôt, et utiliser un compte reconnu par sshd :
svn checkout svn+ssh://me@svn.foo.bar/path/to/repos/testalice .
Les forums sont fermés.