SVN, installation et configuration simple

© Christian PAULUS. 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

subversion 1.6.12 / FreeBSD 7

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.

Installation via les ports BSD

Il existe deux packages pour subversion dans les ports :

  • subversion, distribution standard
  • subversion-freebsd, adaptée aux besoins de développement du projet FreeBSD. A moins que vous ne participiez à ce projet, cette distribution ne vous concerne pas. Dans le cas contraire, la documentation se trouve sur le Wiki de FreeBSD.

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.

Créer le répertoire de dépôt

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

Configurer le dépôt

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.

Ajouter un compte utilisateur svn

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 :

  • repos/conf/authz
  • repos/conf/passwd

Et un troisième si une gestion des droits d’accès plus fine est souhaitée :

  • repos/conf/svnserve.conf

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

Lancer le serveur svn (svnserver)

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 la configuration

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

Et via ssh (svn+ssh)

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 .

Plussoyez !

Les forums sont fermés.