TP5 : Le système de contrôle de versions CVS 1. Création de l'environnement et de l'entrepot - créer un répertoire TP5 - créer un répertoire TP5_Entrepot - créer la variable d'environnement CVSROOT en lui donnant la valeur $(HOME)/TP5_Entrepot - créer l'entrepot avec la commande : cvs init - voir quel est le résultat (quelles sont les modifications dans le répertoire $CVSROOT) 2. Mise en place des fichiers sources et chargement de l'entrepot - copier tous les fichiers du TP Makefile (progc) et les placer dans votre répertoire TP5 - créer un module "prodmat" dans l'entrepot composé de tous ces fichiers avec le message "Initialisation du module" - voir quelles sont les modifications dans le répertoire $CVSROOT 3. Manipulations des fichiers gèrés par CVS - Ouvrir une fenetre "UN" par la commande : xterm -T UN & - se placer dans cette fenêtre puis créer le répertoire "dev1" - se placer dans ce nouveau répertoire - extraire une copie de travail du module prodmat - compiler avec make - Modifier le fichier main.c (par exemple en y ajoutant un commentaire) - valider la modification du fichier pour CVS - créer un nouveau fichier de nom README - l'ajouter au module prodmat - valider cet ajout 4. Travail à plusieurs sur le meme fichier - Ouvrir une seconde fenetre "DEUX" - se placer dans cette fenetre - Créer un répertoire TP5/dev2 - se positionner dans ce répertoire - extraire une copie de travail - modifier le fichier fonctions.c - valider la modification - Aller dans la fenetre "UN" - la modification a-t-elle été transmise ? Pourquoi ? - dans cette fenetre "UN", modifier fonctions.c en rajoutant en fin de fichier la ligne "// fin de fichier" - valider la modification. Que se passe-t-il ? Il y a incohérence entre le travail de dev1 et de dev2. Il faut que dev1 se mette à jour par rapport à dev2. - Dans la fenetre "UN", exécuter la commande "update" pour fonctions.c - vérifier le résultat : il doit contenir les deux modifications - valider cette nouvelle version - revenir à la fenetre "DEUX" - dans quel état est fonctions.c ? Que faut-il faire pour rétablir la cohérence ? - Après avoir rétabli la cohérence (versions identiques) pour les deux fenetres, faire dans chaque copie de travail une modification différente mais sur la meme ligne (par exemple des espaces supplémentaires) - valider les modifications pour les deux fenetres - pour l'une tout se passe bien, pour l'autre il faut faire un "update" - Que se passe-t-il ? Il y a un conflit de versions - éditer le fichier et observer le résultat - choisir une version de ligne - valider la modification 5. Les commandes status, history, log Une aide des commandes peut etre obtenue par : cvs -H nom_commande - essayer les commandes "status", "history" et "log" d'abord sans argument puis avec des noms de fichiers - expérimenter leurs options - utiliser la commande "diff" pour visualiser les modifications apportées aux fichiers entre différentes versions - utiliser la commande "annotate" pour afficher toutes les modifications apportées aux fichiers suivant chaque version 6. Versions des fichiers et versions du logiciel Les numéros de version des fichiers ne sont pas les numéros de version du logiciel complet. Pour appliquer un numéro de version au logiciel, il faut utiliser le mécanisme de nom symbolique avec "tag". - Donner le nom symbolique "Version-1-0" à la version d'origine des fichiers - Donner un autre nom symbolique à la version courante des fichiers - créer un répertoire "dev3" sous votre home directory - se placer dedans et y extraire les versions originales des fichiers - vérifier le résultat (par exemple fonctions.c)