4- Découverte de CVS

Cvs Commit / Log / Diff / Update
lundi 19 avril 2004
par  Yvonnick Esnault
popularité : 1%

CVS est le gestionnaire de version de fichiers le plus répandu. Voici une installation pas à pas, puis une introduction aux commandes de bases.

Travaillons et Versionnons !

C’est bien beau tout çà, mais l’on a du travail ! Il faut rajouter le texte "je travaille sur la deuxième ligne" dans notre fichier premier_fichier.

yvo@raclette:~/mondossiercvs/SuperProduit$ echo "Je travaille sur la seconde ligne" >> premier_fichier
yvo@raclette:~/mondossiercvs/SuperProduit$ cat premier_fichier
première ligne
Je travaille sur la seconde ligne
yvo@raclette:~/mondossiercvs/SuperProduit$

Et comme nous sommes contents de notre travail, nous pouvons l’enregistrer dans la base cvs :

yvo@raclette:~/mondossiercvs/SuperProduit$ cvs commit -m "Travail sur la seconde ligne Ok"
cvs commit: Examining .
Checking in premier_fichier;
/var/lib/cvs/SuperProduit/premier_fichier,v  <--  premier_fichier
new revision: 1.2; previous revision: 1.1
done
yvo@raclette:~/mondossiercvs/SuperProduit$

Le résultat de la commande cvs commit est explicit. Cvs a trouvé des modifications au niveau du fichier premier_fichier et a incrémenté le numéro de version.

Comme pour la commande cvs import, l’option -m a permis de donner une description pour cette mise à jour.

CVS log, après travail

Re-exécutons la commande cvs log après le cvs commit :

yvo@raclette:~/mondossiercvs$ cvs log SuperProduit/
cvs log: Logging SuperProduit

RCS file: /var/lib/cvs/SuperProduit/premier_fichier,v
Working file: SuperProduit/premier_fichier
head: 1.2
branch:
locks: strict
access list:
symbolic names:
       V0: 1.1.1.1
       Recup: 1.1.1
keyword substitution: kv
total revisions: 3;     selected revisions: 3
description:
----------------------------
revision 1.2
date: 2004/03/30 21:42:40;  author: yvo;  state: Exp;  lines: +1 -1
Travail sur la seconde ligne Ok
----------------------------
revision 1.1
date: 2004/03/30 20:52:20;  author: yvo;  state: Exp;
branches:  1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 2004/03/30 20:52:20;  author: yvo;  state: Exp;  lines: +0 -0
Enregistrement de Super Produit dans le cvs
=============================================================================

Nous constatons que nous sommes toujours dans la même branche nommée Recup avec sa version V0.

De plus, par rapport au premier cvs log, un paragraphe est ajouté : revision 1.2. Il reprend bien la description donnée à l’aide de l’option -m.

CVS Status

La commande cvs status est utile pour voir l’état d’un fichier local par rapport à un fichier distant.

Exemple

yvo@raclette:~/mondossiercvs/SuperProduit$ cvs status premier_fichier
===================================================================
File: premier_fichier   Status: Up-to-date

  Working revision:    1.2     Tue Mar 30 21:40:40 2004
  Repository revision: 1.2     /var/lib/cvs/SuperProduit/premier_fichier,v
  Sticky Tag:          (none)
  Sticky Date:         (none)
  Sticky Options:      (none)

yvo@raclette:~/mondossiercvs/SuperProduit$

Le status est ici Up-to-date, aucune modification est présente entre le fichier premier_fichier local et le fichier premier_fichier du serveur.

Modifions maintenant ce fichier :

yvo@raclette:~/mondossiercvs/SuperProduit$ echo "Troisième ligne" >> premier_fichier

puis relançons cvs status :

yvo@raclette:~/mondossiercvs/SuperProduit$ cvs status premier_fichier
===================================================================
File: premier_fichier   Status: Locally Modified

  Working revision:    1.2     Tue Mar 30 21:40:40 2004
  Repository revision: 1.2     /var/lib/cvs/SuperProduit/premier_fichier,v
  Sticky Tag:          (none)
  Sticky Date:         (none)
  Sticky Options:      (none)

yvo@raclette:~/mondossiercvs/SuperProduit$

Le fichier est maintenant dans le statut Locally Modified, soit en français modifié localement. Logique non ? ;-)

Cvs diff


Comme le cvs status nous indique une différence, nous souhaitons la voir plus précisément :

yvo@raclette:~/mondossiercvs/SuperProduit$ cvs diff -r 1.2 premier_fichier
Index: premier_fichier
===================================================================
RCS file: /var/lib/cvs/SuperProduit/premier_fichier,v
retrieving revision 1.2
diff -r1.2 premier_fichier
2a3
> Troisième ligne
yvo@raclette:~/mondossiercvs/SuperProduit$


Nous voyons donc que la différence entre les deux fichiers se situe au niveau de la ligne 2-3 avec pour changement :
> Troisième ligne.

Création d’un patch

yvo@raclette:~/mondossiercvs$ cvs diff -u -r1.2 SuperProduit
cvs diff: Diffing SuperProduit
Index: SuperProduit/premier_fichier
===================================================================
RCS file: /var/lib/cvs/SuperProduit/premier_fichier,v
retrieving revision 1.2
diff -u -r1.2 premier_fichier
--- a/SuperProduit/premier_fichier      30 Mar 2004 21:42:40 -0000      1.2
+++ b/SuperProduit/premier_fichier      30 Mar 2004 21:56:12 -0000
@@ -1,2 +1,3 @@
première ligne
Je travaille sur la seconde ligne
+Troisième ligne
yvo@raclette:~/mondossiercvs$

Cvs update

Imaginons maintenant que nous sommes pas seuls à travailler sur SuperProduit. Des modifications à premier_fichier peuvent apparaître, il ne faut donc pas trop tarder à faire notre commit.
Mais au lieu de se heurter à des problèmes possibles lors du commit (votre collègue a modifié la même ligne), il est bon de mettre à jour notre fichier localement.
Cette mise à jour n’efface pas le travail que l’on a fait depuis le dernier commit ou checkout (ici, le travail en question est d’avoir rajouté la troisième ligne). Si toutefois un collègue a travaillé sur le fichier, cela est mise à jour dans notre répertoire local.

yvo@raclette:~/mondossiercvs/SuperProduit$ cvs update
cvs update: Updating .
M premier_fichier
yvo@raclette:~/mondossiercvs/SuperProduit$


Apparement, pas de modification effectuée par un collègue ! ;-)

Stop !


Nous nous arrêtons là pour cette approche pas à pas de CVS. Vous trouverez d’autres Howto plus complets sur le web tels que :

-
http://www.idealx.org/doc/cvs.fr.html

-
http://www.loria.fr/cgi-bin/molli/wilma.cgi/doc

Le site officiel est http://www.cvshome.org/

- TortoiseCVS - Client graphique pour Ms Windows
http://www.tortoisecvs.org/
- Guide de l’utilisateur TortoiseCvs (en français)
<a
href="http://cedric.babault.free.fr/TortoiseCVSDoc/UserGuide_fr.html#begin.whattortoisecvs"> http://cedric.babault.free.fr/TortoiseCVSDoc/UserGuide_fr.html


Commentaires

Logo de Nicolas Ledez
mardi 1er février 2005 à 11h14 - par  Nicolas Ledez

Pour ceux qui utilisent CVS, on peut trés bien utiliser plusieurs clients simultanément.

Par exemple (sous Windows) tortoise est trés bien le long du développement.
Par contre WinCVS (par exemple) est plus simple pour voir les differences entre les fichiers, faire des patchs,...

Il faut simplement faire attention, à ce que les outils utilisent les même méthodes pour dialoguer avec le serveur et que la façons d’utiliser le CVS_HEAD.

Navigation

Annonces

Annuaire LibreNord

Retrouvez l’annuaire de logiciels libres créé par l’association Club Linux Nord-Pas de Calais sur le site suivant http://www.librenord.org