Chapitre 12. Le travail en groupe avec CVS

Table des matières
1. Qu'est-ce que CVS ?
2. Installer et utiliser un client CVS
2.1. Installer le package
2.2. Utiliser CVS
3. Monter un serveur CVS
3.1. Installation et configuration de base
3.2. Configuration avançée
3.3. Ajouter un deuxième projet

1. Qu'est-ce que CVS ?

CVS (Concurrent Versions System) est un logiciel libre basé sur une architecture client-serveur qui permet de travailler à plusieurs et en même temps sur les mêmes fichiers. En effet, le serveur CVS dispose d'un mécanisme intelligent de fusion des modifications apportées sur des fichiers texte. C'est un outil très utilisé pour le développement de logiciels, mais il peut également être utilisé pour gérer des sites Web, écrire des rapports en LaTeX, etc... d'une manière générale pour tout ce qui implique de travailler à plusieurs sur les mêmes fichiers textes.

2. Installer et utiliser un client CVS

3. Monter un serveur CVS

3.1. Installation et configuration de base

3.1.3. Donner l'accès aux utilisateurs du système via SSH

Note

Cette section requière qu'un serveur SSH soit installé sur le système. Pour plus d'informations sur ce sujet, cf L'accès à distance par SSH.

Pour donner un accès au CVS à l'utilisateur toto qui a un compte sur le système, il suffit alors de le rajouter dans le groupe cvs-projet1 :


# adduser toto cvs-projet1

L'utilisateur toto peut alors se connecter au CVS par SSH :


% export CVSROOT=":ext:toto@server.exemple.org:/cvs/projet1"
% cvs checkout .

serveur.exemple.org est le nom DNS du serveur. A l'exécution de la commande cvs, il vous demandera votre mot de passe système (ou votre pass-phrase si vous avez mis en place des clés SSH protégées par mot de passe).

Note

Sur un système Unix ou Linux autre que Debian, il peut être nécessaire de préciser au préalable qu'il faut passer par SSH :


% export CVS_RSH=ssh

3.2. Configuration avançée

3.2.1. La notification de commit par mail

Nous allons configurer le serveur CVS pour qu'un mail soit envoyé à chaque commit ; ce mail devant contenir le nom de l'utilisateur qui a fait le commit, la liste des fichiers qu'il a modifiés et le message de commit.

Boris Dorès a écrit des scripts qui gèrent tout cela très bien. Copiez-les dans le répertoire /usr/local/bin/ :


# cp ~/config/cvs-loginfo.sh ~/config/cvs-commitinfo.sh /usr/local/bin/

ou :


% wget http://people.via.ecp.fr/~alexis/formation-linux/config/cvs-loginfo.sh
% wget http://people.via.ecp.fr/~alexis/formation-linux/config/cvs-commitinfo.sh
# mv cvs-loginfo.sh cvs-commitinfo.sh /usr/local/bin/

Mettez les droits d'exécution sur ces scripts :


# chmod 755 /usr/local/bin/cvs-loginfo.sh /usr/local/bin/cvs-commitinfo.sh

Ensuite, ajoutez la ligne suivante au fichier /cvs/projet1/CVSROOT/commitinfo :


ALL /usr/local/bin/cvs-commitinfo.sh

Et ajoutez la ligne suivante à la fin du fichier /cvs/projet1/CVSROOT/loginfo :


ALL /usr/local/bin/cvs-loginfo.sh adresse_de_provenance adresse_destination "Sujet_des_mails" $USER

en remplaçant adresse_de_provenance et adresse_destination par les adresses mail de provenance et de destination que vous voulez pour les mails de notification, et Sujet_du_mail par ce que vous voulez mettre en sujet des mails. Par exemple, vous pouvez mettre en adresse de destination un alias ou une mailing-list qui diffusera le mail à tous les participants au projet.

Désormais, les commits ne passeront plus inaperçus !