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 plateformes. Il existe de nombreuses interfaces graphiques construites au-dessus de la ligne de commande. 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:[email protected]:/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 U src/B.java cvs update: Updating cvs update: Updating Patrick Reignier . src web web/WEB-INF 3