Utilisation locale de CVS

Un article de Mangue.org, l'encyclopéde libre.


Voyons maintenant de plus près l'utilisation de CVS en local.

Sommaire

Création et initialisation du dépôt (repository)

Une fois que le répertoire que vous avez définit pour vos projets a été créé et que votre variable CVSROOT pointe vers ce répertoire, il faut initialiser le dépôt. Pour cela, on fait appel à la commande cvs init

[steph@localhost steph]$ cvs init

Tous les fichiers utiles au fonctionnement de CVS sont alors créés dans le répertoire pointé par $CVSROOT.

Initialisation du dépôt (repository)


Remarque
Attention aux droits d'accès
Si vous créez votre dépôt dans un répertoire tel que /usr/local/projets, seul le super utilisateur (root) a les droits d'écriture. Pour que chaque utilisateur de la machine puisse accéder au dépôt en lecture et/ou écriture, il faut créer un groupe (au sens unix), cvsuser par exemple et placer chaque utilisateur de CVS dans ce groupe. Il n'y a plus alors qu'à donner les droits à ce groupe pour le répertoire du dépôt.


[root@localhost steph]# chown root:cvsusers /usr/local/projets
[root@localhost steph]# chmod 775 /usr/local/projets
[root@localhost steph]# ls -l /usr/local/
...
drwxrwxr-x 4 root cvsusers 4096 jun 12 23:40 projets/
...
[root@localhost steph]#

Création et/ou import de projet existant

Pour importer un nouveau projet dans le dépôt, il faut d'abord se placer dans un répertoire ne contenant que des fichiers à importer dans le nouveau projet. Ici, à titre d'exemple on se propose de gérer les évolution de ce document avec CVS. Ce projet ne contient pour l'instant qu'un seul fichier : cvs.tex, il est situé dans un répertoire "CVSHowTo" quelque part dans mon répertoire personnel. On se place dans le répertoire CVSHowTo ne contenant que le fichier cvs.tex et on utilise la commande cvs import dont la syntaxe est la suivante :


[steph@localhost CVSHowTo]$ cvs import -m "1er import depot" CVSHowTo slaborde v0 N CVSHowTo/cvs.tex
No conflicts created by this import
[steph@localhost CVSHowTo]$


Comme c'est le premier import, il n'y a pas de conflit. Un seul fichier a été ajouté : CVSHowTo/cvs.tex. La lettre N signifie que le fichier n'existait pas dans le dépôt, il a donc été créé (New).

  • L'option -m "commentaire" permet de stocker un commentaire qui pourra être ressortit plus tard lors d'un historique
  • CVSHowTo est le nom du module pour CVS
  • slaborde est la marque du constructeur (vendor tag)
  • v0 est la marque de la version (release tag)

Obtenir/mettre à jour une copie de travail

Comme cela a déjà été précisé plus tôt, on ne travaille jamais directement sur les documents originaux mais toujours sur une copie de travail. Si on sait que la machine sur laquelle on travaille héberge un projet, alors ce projet a un nom de module CVS. Celui-ci a été précisé lors de la création du projet. Pour obtenir une copie de travail du module CVSHowTo que nous avons créé dans la section précédente, on utilise la commande : cvs checkout <NomDuModuleCVS>

[steph@localhost steph]$ cvs checkout CVSHowTo
cvs checkout: Updating CVSHowTo
U CVSHowTo/cvs.tex
[steph@localhost steph]$

CVS crée une copie de travail du projet dans un dossier portant le nom du module CVS, à l'endroit de l'arborescence à partit duquel vous appelez CVS. Vous pouvez donc travailler sur cette copie et y apporter les modifications nécessaires. Une fois que vous estimez que l'état des fichiers de votre copie de travail est satisfaisant, il faut mettre le dépôt à jour avec vos modifications. C'est le but de la commande cvs commit.


CVS commit


[steph@localhost CVSHowTo]$ cvs commit -m "legere modification du plan" cvs.tex
Checking in cvs.tex;
/usr/local/projets/CVSHowTo/cvs.tex,v <-- cvs.tex
new revision: 1.2; previous revision: 1.1
done
[steph@localhost CVSHowTo]$

Ajouter/effacer des fichiers à un projet

Lorsque vous travaillez sur un projet, le nombre de ses fichiers peut-être amené à changer. Si vous voulez ajouter des fichiers au dépôt CVS, veillez toutefois à être sûr que leur nom n'évolura pas car CVS ne garde pas de trace des changement de nom des fichiers. Une fois que vous êtes sûr du nom d'un fichier à ajouter, utilisez la commande cvs add

[steph@localhost CVSHowTo]$ cvs add fichier.txt
cvs add: scheduling file 'fichier.txt' for addition
cvs add: use 'cvs commit' to add this file permanently
[steph@localhost CVSHowTo]$

La commande cvs add n'a aucune incidence sur le dépôt mais informe CVS qu'il devra désormais tenir compte de ce fichier. Pour ajouter effectivement le fichier au dépôt, vous devez procéder à un archivage grâce à la commande cvs commit. A l'inverse il est possible qu'un fichier ne soit plus nécessaire au projet. Il convient alors de le supprimer du dépôt avec la commande cvs remove. Pour cela, le fichier à supprimer du dépôt doit également être absent du répertoire de travail.

[steph@localhost CVSHowTo]$ rm fichier.txt
rm: détruire fichier régulier vide 'fichier.txt'? o
[steph@localhost CVSHowTo]$ cvs remove fichier.txt
cvs remove: scheduling 'fichier.txt' for removal
cvs remove: use 'cvs commit' to remove this file permanently
[steph@localhost CVSHowTo]$ cvs commit
Removing fichier.txt;
/usr/local/projets/CVSHowTo/fichier.txt,v <-- fichier.txt
new revision: delete; previous revision: 1.1
done
[steph@localhost CVSHowTo]$

Il faut bien garder à l'esprit, que CVS n'efface pas réellement le fichier du dépôt, en effet, CVS n'enregistre que les modifications il sera donc toujours possible de rappeler l'historique de ce fichier.

Voir les révisions

Pour voir les différentes révisions d'un fichier du projet, on utilise la commande cvs log suivie du nom du fichier dont vous voulez connaître l'historique. Si vous ne précisez pas de fichier, CVS vous retournera l'historique pour chacun des fichiers. Par exemple, voici l'historique des différentes révisions pour le fichier source de ce document : cvs.tex.


CVS log


[steph@localhost CVSHowTo]$ cvs log cvs.tex
RCS file: /usr/local/projets/CVSHowTo/cvs.tex,v
Working file: cvs.tex
head: 1.2
branch:
locks: strict
access list:
symbolic names:
    v0: 1.1.1.1
    slaborde: 1.1.1
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
----------------------------
revision 1.2
date: 2004/06/24 22:13:09; author: steph; state: Exp; lines: +28 -15
legere modification du plan
----------------------------
revision 1.1
date: 2004/06/21 21:53:31; author: steph; state: Exp;
branches: 1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 2004/06/21 21:53:31; author: steph; state: Exp; lines: +0 -0
premier import
=============================================================================
[steph@localhost CVSHowTo]$

cvs log propose beaucoup d'options, deux d'entre elles se révellent très utiles :

  • l'option -d, qui permet d'afficher les révisions par rapport à une date ;
  • l'option -w, permet de connaître les révisions faites par un utilisateur donné.

Pour l'option -d, on peut utiliser des opérateurs de comparaison pour les dates. Par exemple pour voir les révisions antérieures au 25 juin 2004, tapez :

[steph@localhost CVSHowTo]$ cvs log -d "<2004-06-25" cvs.tex

Pour les révisions faites entre le 21 et le 25 juin 2004, tapez :

[steph@localhost CVSHowTo]$ cvs log -d "2004-06-21<2004-06-25" cvs.tex

L'option -w permettant de sélectionner les révisions d'un auteur s'utilise de la sorte :

[steph@localhost CVSHowTo]$ cvs log -wsteph cvs.tex

Remarquez que le nom d'utilisateur (ici, "steph") est collé au -w.

Connaître l'état d'un fichier

La fonction cvs status vous permet de connaître l'état d'un fichier par rapport au dépôt.

[steph@localhost CVSHowTo]$ cvs status cvs.tex
===================================================================
File: cvs.tex Status: Locally Modified
Working revision: 1.2 Thu Jun 24 22:11:19 2004
Repository revision: 1.2 /usr/local/projets/CVSHowTo/cvs.tex,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
[steph@localhost CVSHowTo]$

Dans notre, cas, j'ai modifié le fichier cvs.tex, l'exemplaire de ma copie de travail est donc différent de celui du dépôt. Evidemment, si je procède à une mise à jour grâce à la commande cvs commit, la commande cvs status indiquera que ma copie de travail est à jour (Up-to-date).


CVS status


[steph@localhost CVSHowTo]$ cvs status cvs.tex
===================================================================
File: cvs.tex Status: Up-to-date
Working revision: 1.3 Thu Jun 24 22:41:36 2004
Repository revision: 1.3 /usr/local/projets/CVSHowTo/cvs.tex,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
[steph@localhost CVSHowTo]$

Voir les différences entre les versions

La commande cvs diff permet d'afficher à l'écran l'ensemble des différences entre deux révisions ou bien entre une révision donnée et votre copie de travail. Pour comparer deux versions d'un fichier, on utilise l'option -r de la commande cvs diff.

[steph@koka CVSHowTo]$ cvs diff -r 1.10 -r 1.11 cvs.tex
Index: cvs.tex
===================================================================
RCS file: /usr/local/projets/CVSHowTo/cvs.tex,v
retrieving revision 1.10
retrieving revision 1.11
diff -r1.10 -r1.11
274c274
< La commande $cvs\ diff$ permet d'afficher à l'écran l'ensemble des différences entre deux révisions ou bien entre une révision donnée et votre copie de travail. Pour comparer deux versioons d'un fichier, on utilise l'options -r de la commande $cvs\ diff$.
---
> La commande $cvs\ diff$ permet d'afficher à l'écran l'ensemble des différences entre deux révisions ou bien entre une révision donnée et votre copie de travail. Pour comparer deux versions d'un fichier, on utilise l'options -r de la commande $cvs\ diff$.
[steph@koka CVSHowTo]$

cvs diff renvoie la seule différence entre les deux révisions à la ligne 274 dans chacune des deux révisions (274c274), il s'agit ici d'une faute de frappe.

L'option -r doit être spécifiée avant chacune des révisions, si vous omettez le second -r et la révision qui le suit, alors cvs diff comparera la révision passée avec le premier -r (le seul) et votre copie de travail. Il est également possible de faire une comparaison basée sur une ou deux dates grâce à l'option -D.


Image:Cc_somerights.png

Image:20px-Cc-by.png Image:20px-Cc-sa.png

© Copyright S. Laborde
Cette page propose un article et/ou des documents protégés par la licence creative commons By-Sa.
Outils personels