Vous êtes sur la page 1sur 3

Principales commandes CVS

Patrick Reignier
March 15, 2005

1 Principe général
CVS est un gestionnaire de version. Il permet de faciliter le travail en équipe en prenant en charge
la gestion des versions des différents fichiers. Le principe général est le suivant :
• La liste des fichiers du projet est maintenue sur le serveur CVS.
• Toute nouvelle personne arrivant dans le projet déploie ces fichiers dans son propre répertoire.
Elle en récupère donc une copie locale.
• Avant de travailler sur un fichier, elle commence par le mettre à jour en récupérant la dernière
version disponible. Cela permet d’intégrer les modifications faı̂tes par les membres de son
équipe.
• Elle modifie un ou plusieurs fichiers du projet.

• Une fois les modifications validées, elle réintègre les nouvelles versions du fichier sur le serveur
afin de les rendre disponibles aux autres membres.
• A tout moment, un programmeur peut demander au serveur de lui restituer une version
antérieure du fichier et donc par exemple, annuler une modification incorrecte.

CVS est donc composé de deux parties : un programme serveur, chargé de maintenir les
différentes versions des fichiers du projet, et un programme client permettant à chaque membre
du groupe d’envoyer des requêtes au serveur.
Le programme client est un programme en ligne de commande disponible sur toutes les plate-
formes. Il existe de nombreuses interfaces graphiques construites au-dessus de la ligne de com-
mande. Il est également intégré aux environnements de développement tels que Netbeans ou
Eclipse.
Le reste du document présente quelques exemples d’utilisation de cvs en ligne de commande.

2 configuration
Le client en ligne de commande s’appelle cvs. Afin de pouvoir fonctionner, il faut lui indiquer
plusieurs données de configuration telles que le nom du serveur, l’emplacement du dépôt de fichier
sur ce serveur, le login de connexion ainsi que le protocole utilisé. Ces informations sont fournies
dans la variable d’environnement CVSROOT. Cette variable sera bien évidemment mise dans votre
fichier .cshrc. Exemple :
setenv CVSROOT :pserver:reignier@mamachine.mondomaine.fr:/usr/local/cvs
Pour accéder au serveur, il faut d’abord s’authentifier :
$ cvs login

1
Licence Professionnelle TAI, Projet P6 cvs : principes généraux p. 2

L’authentification va créer un fichier .cvspass à la racine de votre compte. Ce fichier contient en


particulier votre identifiant et votre mot de passe. Son contenu est renvoyé au serveur à chaque
requête cvs (cf les cookies en http). Une session cvs dure aussi longtemps que ce fichier existe et
survit donc à une déconnexion et reconnexion de votre compte UNIX.
Pour mettre un terme à la session cvs :
$ cvs logout

3 Mise en place d’un projet CVS


$ cd MesFichiersInitiaux/
$ cvs import -m "debut de projet pour la Web App" MyWebApp reignier start
N MyWebApp/build.properties
N MyWebApp/build.xml
cvs import: Importing /local_home/local/cvs/MyWebApp/src
N MyWebApp/src/A.java
cvs import: Importing /local_home/local/cvs/MyWebApp/web
cvs import: Importing /local_home/local/cvs/MyWebApp/web/WEB-INF
N MyWebApp/web/WEB-INF/web.xml

No conflicts created by this import

$
Le projet est maintenant connu sous cvs sous le nom : MyWebApp

4 Déploiement des fichiers sur un poste client


Un nouvel utilisateur peut maintenant récupérer la totalité des fichiers par un check out .
$ cvs co MyWebApp
U MyWebApp/build.properties
U MyWebApp/build.xml
cvs checkout: Updating MyWebApp/src
U MyWebApp/src/A.java
cvs checkout: Updating MyWebApp/web
cvs checkout: Updating MyWebApp/web/WEB-INF
U MyWebApp/web/WEB-INF/web.xml
$

5 Ajout d’un nouveau fichier


Le second utilisateur ajoute un nouveau fichier source dans le répertoire src. Il déclare ce nouveau
fichier sous cvs :
$ cvs add B.java
cvs add: scheduling file ‘B.java’ for addition
cvs add: use ’cvs commit’ to add this file permanently
A ce stade, le fichier n’est toujours pas transféré vers le serveur. Il est juste enregistré comme
ayant été ajouté au projet. Le transfert effectif n’aura lieu que lors de la commande commit. En
règle générale, la commande commit permet de transférer vers le serveur toutes les modifications
apportées au projet, dans le répertoire où la commande est émise, et dans tous les sous-répertoires.
Si l’on veut donc transférer vers le serveur toutes les modifications apportées à l’ensemble du projet,
on se mettra donc dans le répertoire racine de celui-ci.

Patrick Reignier 2
Licence Professionnelle TAI, Projet P6 cvs : principes généraux p. 3

$ pwd
/home/reignier/tmp/MyWebApp/src
$ cd ..
$ cvs commit -m "AJout d’une nouvelle classe B"
cvs commit: Examining .
cvs commit: Examining src
cvs commit: Examining web
cvs commit: Examining web/WEB-INF
RCS file: /local_home/local/cvs/MyWebApp/src/B.java,v
done
Checking in src/B.java;
/local_home/local/cvs/MyWebApp/src/B.java,v <-- B.java
initial revision: 1.1
done
$

6 Remise à jour d’une arborescence


Le premier utilisateur souhaite savoir s’il est à jour. (il ne l’est pas puisqu’il ne possède pas le
nouveau fichier B.java). Pour ce faire, il utilise la commande update. De la même manière que
commit, update vérifie que le répertoire d’où la commande est émise et tous ses sous-répertoires
sont à jour.

$ cvs update
cvs update: Updating .
cvs update: Updating src
U src/B.java
cvs update: Updating web
cvs update: Updating web/WEB-INF

Patrick Reignier 3