| Retour au sommaire |

Gestionnaire de versions concurrentes
CVS (Concurrent Versions System)

-- Aide simplifiée de CVS --


Table des matières


De manière générale, CVS possède une arborescence (CVSROOT) où il stocke les différents projets (ou modules). Les commandes CVS permettent de copier une version d'un projet dans une arborescence locale ($HOME par exemple).

Dans cette page, les textes en italique sont à remplacer par la valeur appropriée.
Le signe $ est inséré en guise de prompt Unix.
L'aide en ligne Unix est disponible pour chaque commande (apparaissant en gras dans les exemples) en tapant :

$ cvs -H commande
On entend par arborescence un ou plusieurs fichiers ou un répertoire et son contenu.
La notation suivante est utilisée pour les modèles :
- [ ] signifie optionnel,
- ( | ) signifie choix obligatoire.


Import d'un nouveau projet (commande «import»)

Pour déclarer un nouveau projet dans CVS (insertion dans CVSROOT) :

$ cd <répertoire englobant>
$ cvs import [-m "message explicite"] <nom du module> <nom du vendeur> <nom du tag>

$ cd leaf2html
$ cvs import -m "Conversion d'Interleaf vers HTML" leaf2html ISEA LEAF2HTML-1-0

Remarques :
   Afin de ne pas polluer CVSROOT, le fait d'importer une arborescence entière requiert que celle-ci soit débarrassée des fichiers superflus (fichiers générés, temporaires, compilés ... etc.) ;
   Le nom du vendeur peut être ensuite utilisé comme identifiant (ou tag) de la version initiale.
 

Mise à jour de la version locale ou affichage de ses différences (commande «update»)

Pour extraire de CVS une arborescence et la copier en local ou pour connaître les différences entre les versions CVS et locale :

$ cd répertoire désiré
$ cvs [-n] [-n -q] update [<arborescence>]

$ cd leaf2html
$ cvs -n -q update
A newFile
M README.TXT
? nimp
U src/library.lkd
C src/main.lkd
$ cd src
$ rm main.lkd
$ cvs update main.lkd

Remarque :
   Les deux options sont propres à CVS et ne concernent pas uniquement la commande update. C'est pourquoi elles apparaissent avant la commande 'update'.
 

Mise à jour de la version de CVS (commande «commit»)

Pour mettre à jour la version de CVS avec la version locale (écrasement dans CVSROOT) :

$ cd <répertoire désiré> 
$ cvs commit [-m "message explicite de la modification"] [<arborescence>]

$ cd leaf2html/src
$ cvs commit -m "Ajout du module de validation des numéros de documents"

Remarques :
   Il est préférable de saisir un message (option -m msg), car CVS le requiert et le demande s'il est vide par une fenêtre emacs ou vi (variable d'environnement CVSEDITOR).
   Les fichiers inconnus de CVS (noté par un ? lors de l'affichage des modifications de la version locale) sont ignorés par cette commande.
 

Ajout de nouveaux éléments à la version locale (commande «add»)

Pour ajouter de nouveaux éléments à la version locale, afin de les insérer ensuite dans la version CVS :

$ cd <répertoire désiré> 
$ cvs add [-m "message explicite de l'ajout"] <arborescence>

$ cd leaf2html/src
$ cvs add -m "Ajout du catalogue" catalog.txt

Remarques :
(1)L'ajout d'un fichier n'est possible que depuis le répertoire le contenant ;
   Les fichiers d'un répertoire non ajouté ne sont pas visibles par CVS (lors de l'affichage des différences entre les versions locale et CVS) ;
   L'ajout d'éléments est effectif dans CVSROOT uniquement après la mise à jour de la version de CVS.
 

Export de la version de CVS (commande «export»)

Pour exporter les sources du projet en vue d'une livraison (pas de répertoires CVS dans l'arborescence) :

$ cd <répertoire désiré> 
$ cvs export (-r <nom du tag> | -D <date désirée>) <arborescence>

$ cd leaf2html/src
$ cvs export -D "1/4/99" leaf2html/src

Remarques :
   Une date située trop loin dans le passé donnera lieu à l'export des répertoires uniquement ;
   Les fichiers .cvsignore sont exportés et apparaissent dans l'arborescence contrairement aux répertoires CVS ;
   Des problèmes apparaissent lors d'export de fichiers binaires sur plateformes hétérogènes. Par exemple, un export sur PC transforme les retours chariots (\n -> \r \n) ;
   L'export génère tous les fichiers de la version CVS, y compris les fichiers .cvsignore (voir Fichier(s) .cvsignore). Un shell script Unix récursif permet de les supprimer, il faut le lancer dans l'arborescence à examiner. Il peut se trouver sous le nom «//MOON/Formation/Cvs/suppCvsignores».
 

Récupération de la version de CVS (commande «checkout»)

Pour récupérer les sources du projet en local :

$ cd <répertoire désiré> 
$ cvs checkout <arborescence>

$ cd $HOME
$ cvs checkout leaf2html/src

Historique d'une arborescence (commande «log»)

Pour obtenir l'historique d'une arborescence :

$ [ cd <répertoire désiré> ]
$ cvs log <arborescence>

$ cd leaf2html
$ cvs log src/validation.dtd

Remarques :
   L'historique affiche les différents identifiants (ou tag) et les différentes versions de l'arborescence concernée sous CVS;
   L'historique sur un répertoire affiche récursivement les historiques des fichiers le composant.
 

Affichage du détail de la version locale (commande «status»)

Pour obtenir le détail (statut) de la version locale d'une arborescence :

$ [ cd <répertoire désiré> ]
$ cvs status <arborescence>

$ cd leaf2html
$ cvs status src/validation.dtd

Remarque :
   Le statut sur un répertoire affiche récursivement les statuts des fichiers le composant.
 

Gestion des identifiants logiques de version (ou tag) (commande «tag»)

Les identifiants logiques (noms donnés à une version par un utilisateur) sont différents des identifiants CVS (du type 1.1.2.1). La gestion d'identifiant (ou tag) d'une arborescence se fait ainsi :

$ [ cd <répertoire désiré> ]
$ cvs tag [-R] [-d -r] <nom de l'identifiant> [<arborescence>]

$ cd leaf2html
$ cvs tag -R LEAF2HTML-2-0

Fichier(s) .cvsignore

La présence de fichier(s) .cvsignore dans un répertoire permet de dire à CVS d'ignorer certains types de fichiers.

$ cd <répertoire désiré>
$ cat .cvsignore
*.jpg *.htm

Remarques :
   Dans l'exemple, les fichiers d'extension «jpg» «htm» ne seront pas pris en compte lors de commandes CVS (Affichage des différences des versions CVS et locale par exemple) ;
   Le mode de création d'un fichier .cvsignore est indifférent ;
   Il convient d'ajouter les fichiers .cvsignore de chaque répertoire sous CVS (Voir Ajout de nouveaux éléments à la version locale). Ainsi ils seront conservés lors de récupération de version ;
   L'export les génère également (voir Export de la version de CVS). Un shell script Unix récursif permet de les supprimer, il faut le lancer dans l'arborescence à examiner. Il peut se trouver sous le nom «//MOON/Formation/Cvs/suppCvsignores».
 

Suppression définitive d'une arborescence de CVS (commande «remove»)

Pour supprimer des éléments à la version locale, afin de les supprimer ensuite définitivement de la version CVS :

$ cd <répertoire désiré> 
$ cvs remove [-f] <arborescence>

$ cd leaf2html/src
$ cvs remove -f catalog.txt

Remarques :
   La suppression n'est effective qu'après Mise à jour de la version de CVS ;
   La suppression d'un élément signifie qu'il n'est dorévanant plus géré par CVS. Toutefois, il est possible de récupérer une version ancienne du projet contenant cet élément.

Fin du projet (commande «release»)

Pour effacer les sources présentes sur le poste local et faire confiance au repository :

$ cd <répertoire désiré> 
$ cvs release [-d] <arborescence>

$ cd leaf2html/
$ cvs release -d src

Visualisez cette page de préférence
avec la police «Times New Roman»