27.4. Introduction à CVS

CVS est adapté à la synchronisation si des fichiers individuels sont édités fréquemment et sont stockés dans un format de fichier tel qu'un texte ASCII ou un texte source de programme. L'utilisation de CVS pour la synchronisation de données dans d'autres formats, tels que JPEG, est possible, mais génère de grandes quantités de données, car toutes les variantes d'un fichier sont stockées de façon permanente sur le serveur CVS. Dans de telles situations, la plupart des fonctionnalités de CVS ne peuvent pas être utilisées. L'utilisation de CVS pour la synchronisation des fichiers n'est possible que si tous les postes de travail peuvent accéder au même serveur.

27.4.1. Configuration d'un serveur CVS

Le serveur est l'hôte sur lequel se trouvent tous les fichiers valides, y compris les versions les plus récentes de tous les fichiers. Tout poste de travail sédentaire peut servir de serveur. Si possible, les données du référentiel CVS doivent être incluses à des sauvegardes régulières.

Lorsque vous configurez un serveur CVS, il peut être judicieux d'accorder aux utilisateurs l'accès au serveur via SSH. Si l'utilisateur est connu par le serveur en tant que tux et si le logiciel CVS est installé sur le serveur et sur le client, les variables d'environnement doivent être définies du côté du client :


CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

La commande cvs init peut être utilisée pour initialiser le serveur CVS du côté du client. Cela ne doit être fait qu'une fois.

Enfin, un nom doit être attribué à la synchronisation. Sélectionnez ou créez un répertoire sur le client devant exclusivement contenir les fichiers à gérer avec CVS (le répertoire peut également être vide). Le nom du répertoire est également celui de la synchronisation. Dans cet exemple, le répertoire se nomme synchome. Accédez à ce répertoire et entrez la commande suivante pour définir le nom de la synchronisation sur synchome :


cvs import synchome tux wilber

De nombreuses commandes CVS nécessitent un commentaire. À cette fin, CVS démarre un éditeur (l'éditeur défini dans la variable d'environnement $EDITOR ou vi si aucun éditeur n'a été défini). L'appel à l'éditeur peut être évité en entrant le commentaire par avance sur la ligne de commande, comme dans l'exemple suivant :


cvs import -m 'this is a test' synchome tux wilber

27.4.2. Utilisation de CVS

Le référentiel de synchronisation peut maintenant être extrait de tous les hôtes avec cvs co synchome. Cela crée un nouveau sous-répertoire synchome sur le client. Pour valider vos changements sur le serveur, accédez au répertoire synchome (ou à l'un des ses sous-répertoires) et entrez cvs commit.

Par défaut, tous les fichiers (y compris les sous-répertoires) sont validés sur le serveur. Pour ne valider que des fichiers individuels ou des répertoires, spécifiez-les comme dans cvs commit file1 directory1. Les nouveaux fichiers et les nouveaux répertoires doivent être ajoutés au référentiel avec une commande telle que cvs add file1 directory1 avant de les valider sur le serveur. Ensuite, validez les nouveaux fichiers et répertoires ajoutés avec cvs commit file1 directory1.

Si vous changez pour un autre poste de travail, extrayez le référentiel de synchronisation, si cela n'a pas été fait au cours d'une session précédente sur le même poste de travail (reportez-vous ci-dessus).

Démarrez la synchronisation avec le serveur à l'aide de la commande cvs update. Mettez à jour les fichiers individuels ou les répertoires comme dans cvs update file1 directory1. Pour connaître la différence entre les fichiers actuels et les versions stockées sur le serveur, utilisez la commande cvs diff ou cvs diff file1 directory1. Utilisez cvs -nq update pour savoir quels fichiers seraient concernés par une mise à jour.

Voici quelques symboles d'état affichés au cours d'une mise à jour :

U

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

M

La version locale a été modifiée. En cas de changements sur le serveur, il était possible de fusionner les différences dans la copie locale.

P

La version locale a été corrigée avec celle 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 indique un fichier modifié localement. Validez la copie locale sur le serveur ou supprimez le fichier local et exécutez de nouveau la mise à jour. Dans ce cas, le ficher manquant est récupéré sur le serveur. Si vous validez un fichier modifié localement et si celui-ci a été changé sur la même ligne et validé, vous risquez de produire un conflit, indiqué par C.

Dans ce cas, recherchez les marques de conflit (»> et «<) dans le fichier et choisissez entre les deux versions. Cela pouvant être une tâche déplaisante, vous pouvez choisir d'abandonner vos changements, de supprimer le fichier local et d'entrer cvs up pour récupérer la version actuelle sur le serveur.

27.4.3. Pour plus d'informations

Cette section offre simplement une brève introduction aux nombreuses possibilités de CVS. Une documentation complète est disponible aux URL suivantes :

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