Gestionnaire de versions concurrentes
CVS (Concurrent Versions System)
-- Aide simplifiée de CVS --
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.
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
avec :
- <répertoire englobant> : un unique répertoire doit rassembler l'ensemble du projet (généralement le nom du projet) ;
- <nom du module> : nom qui sera utilisé pour ce projet dans toute la suite ;
- <nom du vendeur> : ISEA chez ISEA ;
- <nom du tag> : nom de l'identifiant (ou tag) de la version importée.
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.
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
avec :
- <répertoire désiré> : la commande portera sur sa sous-arborescence ;
- <arborescence> : arborescence concernée par la commande (répertoire entier par défaut). Dans le
cas de fichiers, il convient de les supprimer (rm) avant de récupérer la version de CVS ;
- -n : pour ne pas effectuer la commande (pas de mise à jour de la version locale, affichage uniquement des différences)
(mode No action). Dans ce cas, CVS répond en utilisant la symbolisme suivant :
- A <arborescence> : pour les nouveaux éléments récemment ajoutés (voir Ajout de nouveaux
éléments à la version locale);
- M <arborescence> : pour les éléments modifiés localement (par rapport à la version de CVS) ;
- ? <arborescence> : pour les éléments inconnus de CVS (non présents dans la version de CVS) ;
- U <arborescence> : pour les éléments modifiés dans CVS (par rapport à la version locale. Voir
Mise à jour de la version de CVS) ;
- C <arborescence> : pour les éléments différents entre les versions locale et CVS, et qui posent
un conflit à règler manuellement. L'outil tkcvs est conseillé (menu Report -> Diff) ;
- -q : pour ne pas afficher trop d'information sur l'exécution de la commande (mode Quiet).
Remarque :
Les deux options sont propres à CVS et ne concernent pas uniquement la commande update. C'est pourquoi
elles apparaissent avant la commande 'update'.
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"
avec :
- <répertoire désiré> : la commande portera sur sa sous-arborescence ;
- <arborescence> : arborescence concernée par la commande (répertoire entier par défaut).
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.
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
avec :
- <répertoire désiré> : la commande portera sur sa sous-arborescence (1) ;
- <arborescence> : arborescence concernée par la commande (répertoire entier par défaut).
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.
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
avec :
- <répertoire désiré> : l'export génèrera le répertoire englobant du projet à cet endroit ;
- <arborescence> : arborescence concernée par la commande ;
- -r <nom du tag> : nom de l'identifiant (ou tag) de la version à exporter ;
- -D <date désirée> : date de la version à exporter. Les valeurs possibles sont
"1 hour ago", yesterday, tomorrow, "1/4/99" (qui signifie version du 4 janvier
1999 et non pas du 1 avril 1999), ... etc.
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».
Pour récupérer les sources du projet en local :
$ cd <répertoire désiré>
$ cvs checkout <arborescence>
$ cd $HOME
$ cvs checkout leaf2html/src
avec :
- <répertoire désiré> : la récupération génèrera le répertoire englobant du projet à cet endroit ;
- <arborescence> : arborescence concernée par la commande.
Pour obtenir l'historique d'une arborescence :
$ [ cd <répertoire désiré> ]
$ cvs log <arborescence>
$ cd leaf2html
$ cvs log src/validation.dtd
avec :
- <répertoire désiré> : répertoire de destination (optionnel) ;
- <arborescence> : arborescence concernée par la commande.
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.
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
avec :
- <répertoire désiré> : répertoire de destination (optionnel) ;
- <arborescence> : arborescence concernée par la commande.
Remarque :
Le statut sur un répertoire affiche récursivement les statuts des fichiers le composant.
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
avec :
- <répertoire désiré> : répertoire de destination (optionnel) ;
- <arborescence> : arborescence concernée par la commande (répertoire entier par défaut) ;
- -R : commande appliquée récursivement sur les sous-répertoires ;
- -d -r : suppression de l'identifiant existant.
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
avec :
- <répertoire désiré> : répertoire contenant un fichier .cvsignore.
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».
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
avec :
- <répertoire désiré> : la commande portera sur sa sous-arborescence ;
- <arborescence> : arborescence concernée par la commande ;
- -f : pour effacer le fichier avant de le supprimer.
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.
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
avec :
- <répertoire désiré> : la commande portera sur sa sous-arborescence
;
- <arborescence> : arborescence concernée par la commande ;
- -d : pour effacer définitivement l'arborescence.
Visualisez cette page de préférence
avec la police «Times New Roman»