Cette page présentera le mode opératoire de mise en place d'un serveur CVS. Les caractéristiques mentionnées ci-dessous s'appliquent aux spécificités des divers OS (UNIX - Linux - HP - SUN) près. La mise en place d'un serveur CVS sous Windows ets possible grâce à WinCVS dont l'adresse est présente dans les liens.

Installation :

 

CVS est livré avec la plupart des distributions. Il n'existe pas à proprement parler de notion de "Client" ou "Serveur" même si l'application fonctionne sur le modèle client/serveur. L'application cvs joue, selon les paramètres qui lui sont passés le rôle de client ou serveur. Si CVS n'est pas présent sur votre distribution, les fichiers d'installation sont disponible sur le site de CVS.

 

Création du référentiel et configuration :

 

La configuration du serveur passe par la mise en place de la variable d'environnement CVSROOT (export CVSROOT='/home/cvs' par exemple) initialisée à la valeur du répertoire qui servira de référentiel. Il est souhaitable de placer cette commande dans le .bashrc, ce qui évitera de la taper à chaque démarrage de la machine.

Il suffit ensuite de taper cvs init pour lancer le serveur. Cette commande crée dans le répertoire pointé par la variable $CVSROOT un répertoire nommé CVSROOT (à ne pas confondre!!) qui contient les fichiers de configuration du serveur (voir ci-dessous) ainsi que la gestion des historiques des projets.

 

Import d'un projet dans le référentiel :

 

Il est possible de créer un projet directement dans le référentiel mais il est plus facile de l'importer depuis un autre répertoire contenant les sources et documentation d'un projet existant. Lorsque l'on se trouve dans le répertoire contenant le projet :
cvs import -m "Import de mon projet" repertoire_nom_du_projet nom_du_groupe_projet version1
L'option -m permet d'affecter un commentaire au projet.
repertoire_nom_du_projet permet de spécifier dans quel répertoire du référentiel on va stocker le projet
version1 : affectation d'un nom de version au premier import

Pour faciliter l'accèa au projet, il est possible de lui donner un nom, ce qui évitera au client d'avoir à donner l'arborescence dans le référentiel. Ce nommage se fait par edition du fichier $CVSROOT/CVSROOT/modules à la fin duquel on ajoute Nom_projet chemin_dans_le_référentiel. cvs release -d CVSROOT prend en charge la modification du fichier modules.

 

Gestion des utilisateurs et droits d'accès :

 

L'accès à un serveur CVS est soumis à une gestion des droits d'accès par utilisateur. Il est possible mais déconseiller d'utiliser les comptes système du serveur. Il est préférable de disposer d'une base utilisateurs propre à CVS. Pour ce faire, on doit éditer le fichier $CVSROOT/CVSROOT/config et positionner la variable SystemAuth à no.

La liste des utilisateurs est stockée dans le fichier $CVSROOT/CVSROOT/passwd, fichier qui peut être généré par l'utilitaire htaccess livré avec le serveur WEB Apache.
La structure d'une ligne du fichier est la suivante : <login>:<password crypté>:<utilisateur local>. Ce dernier champ correspond au nom d'un utilisateur existant sur la machine qui héberge le serveur CVS et qui cédera ses droits à l'utilisateur CVS "login". Il est possible d'omettre ce champ (dans ce cas les modifications se feront "en tant que" login sous réserve que l'utilisateur login existe sur le serveur) ainsi que le champ password pour un accès anonyme. Toutefois, les utilisateur système appelés par le fichier passwd de CVS doivent disposer des droits de lecture / écriture et exécution sur le référentiel même si les droits de (ou des) utilisateur(s) CVS associé(s) sont restreints par CVS à un accès en lecture seule.

Il est aussi possible de restreindre le serveur en lecture pour certains utilisateurs (en pserver uniquement, voir ci-dessous). Ils ne peut alors qu'importer les sources sur leur machine mais en aucun cas modifier le contenu du référentiel. Cette restriction peut se faire de deux façons : par inclusion ou par exclusion.
Par inclusion : on liste dans le fichier $CVSROOT/CVSROOT/readers la liste des utilisateurs (un par ligne et ne pas oublier le retour chariot après le dernier) habilités en lecture seule.
Par exclusion : on liste dans le fichier $CVSROOT/CVSROOT/writers la liste des utilisateurs habilités en lecture/écriture et par défaut tous les autres seront en lecture seule.

Dans tous les cas, l'authentification est gérée uniquement par l'administrateur du serveur, CVS ne permettant pas à un utilisateur de modifier son mot de passe.

 

CVS serveur et le réseau :

 

L'accès à CVS peut se faire grâce aux protocoles pserver et SSH :

-pserver :

De même qu'il n'existe pas de démon CVSd à proprement parler, il n'existe pas non plus de démon pserverd. La mise en place d'un accès pserver eu serveur CVS passe par l'édition du fichier /etc/inetd.conf et ajout de la configuration suivante : cvspserver stream tcp nowait root /usr/bin/cvs -f --allow-root=<chemin du référentiel> pserver. On ajoute ensuie la ligne suivante : cvspserver 2401/tcp au fichier /etc/services. On relance ensuite le démon inetd par /etc/rc.d/init.d/inet restart.

L'inconvénient de pserver est qu'il n'utilise pas de système de chiffrement des communications. La méthode de codage du mot de passe n'est pas évoluée et celui-ci est transmis à chaque communication entre le client et le serveur et stocké localement sur la machine client dans le fichier~/.cvspass.

-SSH :

L'accès en SSH nécessite uniquement la présence d'un serveur SSHd sur la machine serveur ainsi que l'initialisation de la variable CVS_RSH à ssh' (export CVS_RSH='ssh' à rajouter dans le .bashrc). L'accès en SSH en lecture seule n'est pas possible dans la mesure où SSH fait appel aux utilisateurs système et que les utilisateurs système doivent posséder les droits de lecture, écriture et exécution sur le référentiel.

Le mode opératoire de connexion depuis un client sont présentées sur la page client CVS en mode texte.

 

Interaction avec un serveur HTTPD :

 

A venir.......