Tuto créer son propre dépôt SVN

De Ensiwiki
Aller à : navigation, rechercher

Pour créer son propre dépôt Subversion (alias SVN), il y a une commande à exécuter pour la création elle-même, et éventuellement un peu de configuration des droits d'accès. Aucun besoin d'être administrateur, tout étudiant peut créer un dépôt.

Création du dépôt SVN

La gestion des dépôts se fait à l'aide de svnadmin. La fonction create permet de créer un dépôt :

ensibm:~/>svnadmin create --fs-type fsfs depot-svn

svnadmin crée le répertoire ~/depot-svn s'il n'existe pas encore, et met le nécessaire dedans. Vous avez maintenant un dépôt svn fonctionnel, et déjà accessible en local et via ssh!

Vous pouvez y importer (import) des fichiers pour créer la première révision.

L'option --fs-type fsfs n'est pas obligatoire mais est néanmoins recommandée car elle crée des dépôts dans un format qui survit mieux aux mises à jour du système.

Gestion des accès

Il existe plusieurs façons d'accéder à un dépôt SVN.

En local

Pour accéder à un dépôt local, il suffit d'utiliser ceci comme chemin vers le dépôt:

file:///chemin/vers/le/depot

Il faut pour cela avoir tous les droits d'accès (lecture+écriture+exécution) sur le dépôt. Pour configurer les droits, il suffit de configurer les droits d'accès au répertoire dépôt, de base avec les droits unix. Mais vous pouvez utiliser les ACL pour gestion plus fine des droits.

A distance par ssh

Vous pouvez aussi y accéder à distance via ssh si votre compte sur la machine contenant le dépôt a les bons droits d'accès (cf. même principe que ci-dessus).

svn+ssh://machine.domaine/chemin/vers/le/depot

Pour cette méthode, il est recommandé de mettre en place un accès SSH sur la machine du dépôt via des Clés SSH, sinon on passe son temps à taper son mot-de-passe.

Par svnserve

Par WebDav

Une recette complète pour travailler à plusieurs

Cette recette a été utilisée par les enseignants pour créér des dépôts pour certains TP de l'école (un dépôt par équipe).

L'idée principale de cette recette est de créer un répertoire sur lequel les droits d'accès sont restreint à votre équipe de TP. Le dépôt est créé à l'intérieur de ce répertoire avec des droits de lecture et d'écriture ouverts tout le monde. Mais comme seuls les utilisateurs autorisés à entrer dans le répertoire pourront y accéder, le dépôt ne sera en pratique accessible qu'à votre équipe.

Création du répertoire qui filtre les accès :

mkdir svn_tp_totomatique
chmod og-rwx svn_tp_totomatique
setfacl -m "u:logindubinome1:rwx" svn_tp_totomatique
setfacl -m "u:logindubinome2:rwx" svn_tp_totomatique

Il est probable que vous soyez encore confrontés à un problème de droits d'accès parce que, typiquement, le répertoire du compte du créateur du dépôt est bloqué pour le membre de l'équipe. Le créateur du dépôt peut ouvrir l'accès via la commande :

setfacl -m "u:logindubinome1:x" $HOME
setfacl -m "u:logindubinome2:x" $HOME

Cette commande est la plus restrictive possible et néanmoins suffisante.

Création du dépôt :

svnadmin create --fs-type fsfs svn_tp_totomatique/repo
chmod -R go+rwx svn_tp_totomatique/repo

Récupération d'une copie de travail ($HOME est à remplacer par le chemin complet du répertoire dans lequel vous étiez en train de travailler, ce qui donne donc une URL qui commence par : file:///) :

svn co file://$HOME/svn_tp_totomatique/repo tp_totomatique
cd tp_totomatique
svn info

On peut utiliser la commande pwd pour connaître le chemin complet du répertoire dans lequel on se trouve.

Voilà, c'est prêt à utiliser : pour qu'un membre de votre équipe puisse utiliser ce dépôt, il n'a plus qu'à faire de chez lui :

svn co file:///chemin/complet/vers/repertoire/de/creation/du/depot/svn_tp_totomatique/repo le_tp_totomatique

Un petit script qui automatise tout ça

Ce script automatise le création du dépôt, la mise en place des droits (utilisation du code de autoriser-equipe) et la notification de commit par email aux adresses passées en paramètre. Merci de vos commentaires pour l'amélioration.