Installation d'un serveur CVS

posté par Anthony Heukmes le 29-01-2007

Concurrent Versions System (CVS)

Le CVS est un logiciel libre permettant le contrôle de versions. Concrètement, il permet à plusieurs personnes (généralement des développeurs) de travailler sur un même ensemble de fichiers. Chaque développeur récupère le projet (checkout) sur sa machine, effectue différentes modifications puis enregistre ses modifications sur le serveur (commit). Le serveur CVS va alors automatiquement détecter les conflits entre les différents fichiers et permettre d'effectuer une "fusion" propre des fichiers. Un autre développeur peut alors facilement actualiser son projet en récupérant les modifications effectuées par son confrère en effectuant la commande update sur les fichiers concernés. Le serveur CVS stocke ses données dans un répertoire appelé repository contenant les différentes versions de chaque fichier, les dates de modifications, les auteurs, etc. CVS peut être utilisé directement en ligne de commande ou par l'intermédiaire d'un environnement graphique tel qu'Eclipse.
CVS offre de nombreuses possibilités, l'objectif de cet article n'est cependant pas de les décrire mais d'expliquer la marche à suivre pour mettre en place le système.

Installation du serveur CVS

Fedora Core 6 installe par défaut CVS, au cas ou vous ne l'auriez pas vous pouvez l'installer via yum :

# yum install cvs

Créez le dossier cvsroot dans le répertoire /usr/local :
# cd /usr/local
# mkdir cvsroot

Il faut commencer par spécifier à CVS ou se situe le cvsroot en complétant la variable $CVSROOT :
# export CVSROOT=/usr/local/cvsroot/

Vous devez ensuite créer un groupe et un utilisateur CVS sur la machine. Vous devez en effet savoir que chaque utilisateur qui se connectera au serveur CVS devra posséder son propre compte sur la machine, cela permet de lui attribuer différents droits sur les projets.
# groupadd cvs
# useradd -g cvs cvs

Il faut ensuite créer le repository via la commande :
# cvs init

Créer alors un projet de test que vous allez importer dans le repository :
# cd /home/votre_user
# mkdir projet-test
# touch test.java

Importez alors le projet dans CVS :
# cvs import -m "premiere version" projet-test de_moi starter

Votre projet est maintenant présent dans le repository, il faut cependant rendre votre serveur CVS accessible depuis le réseau.

Commencez pour cela par vérifier que xinetd est présent sur votre machine :
# yum install xinetd

Lancer CVS à chaque démarrage de la machine :
# chkconfig cvs on

Vous devez ensuite modifier le fichier CVS situé dans le répertoire /etc/xinetd.d :
# gedit /etc/xinetd.d/CVS


# default: off
# description: The CVS service can record the history of your source \
#       files. CVS stores all the versions of a file in a single \
#       file in a clever way that only stores the differences \
#       between versions.
service cvspserver
{
     disable = no
     port = 2401
     socket_type = stream
     protocol = tcp
     wait = no
     user = root
     passenv = PATH
     server = /usr/bin/cvs
     env = HOME=/usr/local/cvsroot/
     server_args = -f --allow-root=/usr/local/cvsroot/ pserver
# bind = 127.0.0.1
}

Redémarrez xinetd
# service xinetd reload

Vérifiez enfin que votre serveur CVS écoute bien sur le port 2401 et vérifiez également que ce port est bien ouvert sur votre firewall :
# netstat -an | grep 2401

Il ne vous reste plus qu'à créer un mot de passe d'accès pour l'utilisateur cvs :
# cd /usr/local/cvsroot/CVSROOT
# htpasswd -c passwd cvs

Pour ajouter par la suite un autre utilisateur, utilisez la même commande en retirant l'option -c et en remplaçant cvs par le nom de l'utilisateur :
# cd /usr/local/cvsroot/CVSROOT
# htpasswd passwd user1

N'oubliez pas que chaque utilisateur spécifié dans ce fichier passwd doit avoir un compte utilisateur sur la machine. Le mot de passe du compte ne doit cependant pas correspondre avec celui entré pour l'accès au CVS. N'oubliez pas également d'attribuer les droits aux différents projets pour chaque utilisateur ou vous obtiendrez une erreur de type "permission denied".

Vous pouvez maintenant vous placer sur une machine distante et tester la connexion à votre serveur CVS :
#export CVSROOT=':pserver:utilisateur@machine:/usr/local/cvsroot'
#cvs login
CVS password: ...
#cvs co projet-test

Remplacez utilisateur par un des utilisateurs spécifié dans le fichier passwd et machine par l'adresse IP (ou le nom de domaine) du serveur CVS.
La commande cvs co permet de faire un checkout d'un projet (dans notre cas de récupérer le projet-test sur votre machine).

CVS avec Eclipse

Pour utiliser CVS dans Eclipse, créez un nouveau projet (file -> new -> project -> cvs -> projects from cvs) et complétez la connexion au repository comme ci-dessous :



Un simple click droit sur votre projet vous donne alors accès au menu team :

CVS en SSH

Pour utiliser CVS avec une connexion SSH, vous devez commencer par générer une paire de clés pour chaque utilisateur (en utilisant openSSL par exemple).
Chaque utilisateur doit alors configurer son Eclipse en spécifiant sa clé privée (générée précédemment sur le serveur) ainsi que le protocole extssh plutôt que pserver.


  Version imprimable


Commentaires

Pseudo :
Code anti-spam : (recopier : )



bash_profile write this line . it s right?
#export CVSROOT=':pserver:utilisateur@machine:/usr/local/cvsroot'

i cant login
#cvs login
CVS password: ...
#cvs co projet-test
Posté par Q1 le 27-06-2007



© 2dconcept Tous droits réservés 2007 | Plan du site | Hébergement par Netux