Subversion

De WikiBR

La SVN (petit nom de SubVersion) a pour but de remplacer la CVS. Pour l'utilisateur lambda, l'utilisation en est quasiment identique, mais les fonctionnalité supplémentaires sont tout de même non négligeables. Cette page explique comment importer la CVS dans SVN proprement et comment configurer les repositories pour que les accès soit limités comme désiré.

Elle est actuellement sur Skinwel pour 2 raisons :

  • pour éviter de se retrouver comme la CVS sur Gwennoz auquel trop de personnes ont accès
  • parce que skinwel héberge très peu de services

Installation de SVN

Installation du programme

L'installation comporte plusieurs éléments : SubVersion, le viewer Web, le mailer, le script d'import de CVS...

apt-get install subversion subversion-tools cvs2svn websvn svnmailer

Il faut alors créer le compte utilisateur svn

adduser svn
mkdir /home/svn
chown svn:root /home/svn

Création des repositoires

SVN gérant projet par projet, il faut séparer les projets. On va donc créer un repositoire par projet :

svnadmin create --fs-type fsfs /home/svn/nom_du_projet

Une fois le repositoire créé, il faut réaliser l'import depuis la CVS :

cd /tmp
scp -r gwennoz:/home/cvs cvs
cvs2svn --existing-svnrepos -s /home/svn/nom_du_prohet cvs/nom_du_projet

Il faut répéter l'opération pour tous les projets...

Si un projet a des sous projets importants, il faut vaut mieux créer un repositoire pour chaque sous projet important

Configuration des repositoires

La svn sert à stocker différents type de données :

  • des projets publics
  • des projets privés
  • des données de configuration

Il faut donc une configuration spécifique pour chaque type de projet. Les configurations se font via :

  1. la configuration du repositoire (répertoire /home/svn/projet/conf/)
  2. les droits d'accès au répertoire.

Projet public

Un projet public est un projet dont les sources sont publiques accessibles à tous. Pour un tel projet on doit avoir :

  • un accès anonyme en lecture
  • des accès lecture/écriture pour les développeurs
  • un accès au websvn

droit d'accès au repositoire

Les droits d'accès par défaut (644 ou 755) sont corrects, le projet étant public. Ils permettent à la fois l'accès via svnserve, web et svn+ssh. Il suffit simplement de donner la propriété du répertoire au bon utilisateur

cd /home/svn
chown svn -R nom_du_projet

configuration du serveur svn

Le fichier svnserve.conf doit être de la forme :

# Global Section
[general]
# Name of the project
realm = le nom du projet

# Read-only anonyme access
anon-access = read
# Read/Write access for authentified users
auth-access = write
# Where to find authorised users list
password-db = passwd

Et remplir le fichier de passwd du repository avec

# User list
[users]
name_user1 = password_user1
name_user2 = password_user2
name_user3 = password_user3
...

configuration du websvn

Le websvn doit afficher se projet, il faut donc l'indiquer. Pour ceci il suffit d'éditer le fichier /etc/websvn/svn_deb_conf.inc et d'ajouter la ligne :

$config->addRepository("nom du projet", "/home/svn/nom_du_projet");

Projets privés

Les projets privés sont des projets internes au BR dont les sources ne sont pas diffusées. Il bénéficie donc d'un accès en lecture/écriture pour les développeurs... et rien d'autre.

droits d'accès au repositoire Il faut bien s'assurer que l'accès au répertoire est limité aux seuls personnes qui ont le droit d'accès... c'est à dire au serveur svn

cd /home/svn
chmod g-rwx -R projet
chmod o-rwx -R projet
chown svn -R projet

Configuration du serveur svn

Le fichier svnserve.conf doit être de la forme :

# Global Section
[general]
# Name of the project
realm = le nom du projet

# Only known users can access
anon-access = none
# Read/Write access for authentified users
auth-access = write
# Where to find authorised users list
password-db = passwd

Et remplir le fichier de passwd du repository avec

# User list
[users]
name_user1 = password_user1
name_user2 = password_user2
name_user3 = password_user3
...

Fichiers de configuration

Les fichiers de configuration vivent dans un autre monde... dans lequel il faut absolument éviter tout accès pirate à la machine. Pour ceci le mieux est d'utiliser la méthode parano de l'authentification via ssh et du transfert via svn over ssh. La configuration est très simple

droits d'accès

Le svn+ssh utilise le compte de l'utilisateur sur la machine, il faut donc que tous les utilisateurs qui l'utilisent aient un compte sur la machine. Les droits d'accès aux fichiers sont ceux de l'utilisateur. Il faut donc placer les newsmestres dans le group news et les roots dans le groupe adm.

Ensuite :

cd /home/svn
chmod o-rwx -R projet
chown svn:news -R news //Dans le cas de la conf des newsgroups
chown svn:adm -R projet //Dans le cas des utilitaires root

configuration du serveur svn

# Global Section
[general]
# Name of the project
realm = le nom du projet

# Only known users can access
anon-access = none
# Read/Write access for authentified users
auth-access = write
# No svn authentificcation... it uses Unix's one
# password-db = passwd

Retour :

Accueil