47.4. Introduction à CVS

CVS est adapté à la synchronisation s'il s'agit de fichiers individuels fréquemment modifiés et dont le format est un format de fichier tel que texte ASCII ou texte source de programme. L'utilisation de CVS pour la synchronisation de fichiers ayant un autre format, tels que les fichiers JPEG, est possible mais conduit très vite à de grandes quantités de données puisque chaque variante d'un fichier est enregistrée en permanence sur le serveur CVS. En plus, dans de tels cas, la plupart des possibilités offertes par CVS ne peuvent pas être utilisées. L'utilisation de CVS pour synchroniser des fichiers n'est possible que si tous les stations de travail peuvent accéder au même serveur.

47.4.1. Configuration d'un serveur CVS

Le serveur est le lieu où se trouvent tous les fichiers valables, notamment la dernière version de chaque fichier. Le serveur peut être un ordinateur de bureau fixe. Il est souhaitable que les données du serveur CVS soient régulièrement intégrées dans une sauvegarde.

Une bonne chose lors de la configuration d'un serveur CVS consiste à permettre à l'utilisateur d'accéder au serveur via SSH. Si, sur ce serveur, l'utilisateur est connu comme tux et si le logiciel CVS est installé sur le serveur ainsi que sur le client (ordinateur portable), il faut veiller, du côté du client, à ce que les variables d'environnement suivantes soient configurées :

				
CVS_RSH=ssh CVS_ROOT=tux@server:/repserveur

Avec la commande cvs init, le serveur CVS est ensuite initialisable du côté du client. Cela ne doit être effectué qu'une seule fois.

Enfin, il faut assigner un nom à la synchronisation. Sur un client, choisissez ou créez un répertoire ne contenant que des données qui seront administrées par CVS (le répertoire peut aussi être vide). Le nom du répertoire est également le nom de la synchronisation. Dans l'exemple présent, le répertoire est appelé synchome. Entrez dans ce répertoire et saisissez la commande suivante pour appeler la synchronisation synchome :

				
cvs import synchome tux wilber

Beaucoup de commandes de CVS requièrent un commentaire. A cet effet, CVS démarre un éditeur (celui qui est défini dans la variable d'environnement $EDITOR ou vi si aucun éditeur n'est défini). On peut éviter d'appeler un éditeur en entrant le commentaire à l'avance sur la ligne de commande, comme dans l'exemple suivant :

				
cvs import -m 'ceci est un Test' synchome  tux wilber

47.4.2. Utilisation de CVS

A partir de ce moment, il est possible de vérifier le référentiel de synchronisation depuis tous les ordinateurs à l'aide de : cvs co synchome. Il en résulte un nouveau sous-répertoire synchome sur le client. Si vous réalisez des modifications que vous voulez transmettre au serveur, entrez dans le répertoire synchome (ou dans un des ses sous-répertoires) et saisissez  : cvs commit

Cela provoque, par défaut, la transmission au serveur de tous les fichiers (et sous-répertoires). Si on ne souhaite transmettre que des fichiers ou répertoires individuels, il faut les spécifier comme suit : cvs commit fichier1 répertoire1 Avant leur transmission au serveur, il faut ajouter les nouveaux fichiers et répertoires au référentiel avec une commande telle que : cvs add fichier1 répertoire1 Il faut ensuite les transmettre à l'aide de : cvs commit fichier1 répertoire1

Pour changer maintenant de poste de travail, il faut vérifier le référentiel de synchronisation, au cas où cela n'a pas encore été fait lors d'une session antérieure sur le même poste de (voir ci-dessus).

Démarrez la synchronisation avec le serveur avec la commande cvs update. Actualisez des fichiers ou répertoires avec cvs update fichier1 répertoire1. Pour voir les différences entre les fichiers actuels et les versions enregistrées sur le serveur, utilisez la commande cvs diff ou la commande cvs diff fichier1 répertoire1. Utilisez cvs -nq update pour voir quels fichiers ont été affectés par une mise à jour.

Voici certains des symboles d'état utilisés lors d'une mise à jour :

U

La version locale a été mise à jour. Ceci concerne tous les fichiers fournis par le serveur et qui manquent sur le système local.

M

La version locale a été modifiée. Si les modifications de la version ont eu lieu sur le serveur, les modifications ont pu être également exécutées localement.

P

La version locale a été corrigée avec la version du serveur.

C

Le fichier local entre en conflit avec la version actuelle du référentiel.

?

Ce fichier n'existe pas dans CVS.

L'état M marque un fichier localement modifié. Vous pouvez choisir d'envoyer le fichier local modifié au serveur ou de supprimer le fichier local et de procéder à une nouvelle actualisation. Dans ce cas, le fichier manquant est récupéré sur le serveur. Si vous synchronisez un fichier modifié localement et que ce fichier a été modifié au même endroit par plusieurs utilisateurs, cela peut provoquer un conflit lors d'une mise à jour. Ce cas de figure est marqué par le symbole C.

Dans ce cas, examinez le fichier correspondant au niveau des marques de conflits (»> et «<) et choisissez entre les deux versions. Ceci risquant d'être relativement pénible, vous pouvez choisir d'abandonner vos modifications en supprimant le fichier local et en saisissant cvs up pour récupérer la version actuelle du fichier sur le serveur.

47.4.3. Informations complémentaires

Cette section n'est qu'une petite introduction aux nombreuses possibilités de CVS. Vous trouverez une documentation plus complète sous :

http://www.cvshome.org/
http://www.gnu.org/manual/