Cadre Fonctionnel |
Utilisation d’un gestionnaire de version |
Cadre Technique |
NT / CVS (Concurrent Versions System) |
Identifiant |
SYS_CVS_01 |
Référent technique |
|
Version |
1.0 |
Auteur |
Alexandre Brillant |
Date |
04/01 |
Source |
CVS est un outil très performant exploité dans de grands projets open-source comme Mozilla, KDE, Gnome…
Son installation sous Windows NT est triviale et passe par un « installeur » qui ajoute un service CVS.
Son rôle est de :
Coordonner les développeurs utilisant des supports de développement hétérogènes
Conserver dans un repository central l’intégralité du développement depuis la première version
Connaître toutes les dernières modifications apportés à un fichier source (auteur, date, commentaires…)
Transmettre par e-mail les derniers changements
Il est nécessaire que chaque développeur possède un compte CVS. Ce compte est simplement décrit dans un fichier texte dans le répertoire d’installation du serveur CVS. Chaque développeur doit disposer d’un programme (par défaut, un exécutable cvs en ligne de commande est fournie avec la distribution) client CVS. Il existe aussi des environnements complètement graphiques comme WinCVS ou tkCVS.
Chaque client doit mettre à jour la variable d’environnement CVSROOT avec le chemin d’accès vers CVS. Elle est normalement sous la forme " :pserver :utilisateur@Adresse IP ou nom du serveur :Path vers le repository ".
Exemple : set CVSROOT= ":pserver :hexadev@192.168.10.0:d:\cvs_repository"
CVS utilise un format de répertoire légèrement différent d'un format classique. Il ajoute aux répertoires classiques, des répertoires CVS contenant des informations d'exploitation. Ces répertoires CVS ne doivent jamais être modifiés.
Toutes les commandes CVS en ligne suivent la syntaxe CVS Une commande.
L'utilisateur doit commencer par récupérer le répertoire qui le concerne de développement par la commande cvs checkout "un répertoire". Sinon il est possible de créer un entrée nouvelle dans CVS par la commande cvs import en utilisant un répertoire existant.
Lorsqu'une modification est faite dans un répertoire CVS , utiliser la commande cvs commit. Cette commande ouvrira un éditeur de texte (notepad par défaut) pour que le développeur indique les changements opérés. La variable d'environnement EDITOR permet de spécifier un autre éditeur.
Une autre commande importante est la synchronisation des sources locales avec le repository . Cela se fait par la commande cvs update. Lorsqu'un conflit existe, c'est à dire un fichier modifié par deux développeurs en même temps, CVS adopte une stratégie de fusion automatique en se basant sur les lignes modifiées. Quand une même ligne à été modifiée différemment, une notification de conflit est faite demandant à l'un des parties de régler le problème. Le fichier source incriminé contiendra des commentaires indiquant les zones de conflits.
CVS ne créé pas les nouveaux sous-répertoires par défaut, il faut utiliser l’option –d lors d’un update.
L’option –P sert à supprimer les répertoires n’existant plus sur le serveur (cela ne concerne pas les répertoires qui n’ont jamais été placés dans le repository central).
Lors d'une synchronisation, tous les fichiers sont précédés d'un flag sous forme de caractère. M représente une modification, U un Update.
Lorsque la commande cvs update fait apparaître une liste de fichiers précédés par ‘ ?’. Cela signifie que ces fichiers ne sont pas présents sur le serveur. La commande
cvs add sert à ajouter un ou plusieurs fichiers (cvs add *.java). La commande cvs remove permet de marquer le fichier pour être supprimé.
L’option –k lors d’un ajout doit être utilisée pour tous les fichiers binaires (librairies, images…).
Terminer ces ajouts/suppressions par la commande cvs commit.
Pour connaître les changements effectués, la commande cvs log peut être utilisée avec un fichier ou un répertoire en argument.
La commande cvs diff suivie de deux numéros de version affiche les différences.
Exemple : cvs diff –c –r 1.0 –r 1.1 Test1.java, affichera les différences entre la version 1.0 et la version 1.1.
>cvs checkout projet_catalogue
…
Des changements sont effectués…
>cvs update -Pd
…
Compilation
…
>cvs commit
…
Un répertoire doc est créé avec des pages html…
>cvs add doc >cvs add doc\*.html >cvs add –k doc\*.gif >cvs commit |
Le fichier build2.xml est supprimé
>del build2.xml >cvs remove build2.xml >cvs commit … |
…
>cvs log Makefile
…
…
>cvs diff –c –r 1.3 –r 1.2 Makefile
Principale commandes :
cvs import flag1 flag2 un répertoire |
Ajoute dans le serveur CVS une nouvelle entrée. Cette opération ne doit être faite qu’une seule fois ! Ex : cvs import init init0 projet_catalogue
|
cvs checkout un répertoire |
Initialisation d’un répertoire CVS local
|
cvs commit |
Synchronisation des sources partagés du serveur avec les sources en local |
cvs add |
Ajouter de nouveaux fichiers Ex: cvs add *.java |
cvs remove |
Supprimer des fichiers. Supprimer aussi manuellement les fichiers. |
cvs log un fichier ou répertoire |
Affiche tout l'historique de modification |
cvs diff –c |
Affiche les changements entre plusieurs versions Ex: cvs diff –c –r 1.4 –r 1.5 Makefile |
Flags de synchonisation :
M |
Modification |
U |
Mise à jour |
C |
Conflit |
? |
Un nouveau fichier |