Design Pattern - CVS

Le but de ce TD est d'apprendre à utiliser CVS hors et avec eclipse.

CVS, concurrent versionning system, est un système permettant de travailler à plusieurs sur un projet. Les projets sont rassemblés dans un repository.

Le service cvs, contrairement à http ou ftp, n'est pas assuré par un démon tournant en permanence sur une machine. Les mises à jour des différents projets sont assurés en faisant exécuter des commandes à distance sur la machine contenant le repository.

Pour accéder à un repository, on utilise une description appelée cvsroot de la forme suivante :
   :method:user@host:path

Les méthodes disponibles dépendent du client utilisé. Les méthodes classiques sont :

On peut soit préciser le cvsroot avec l'option -d sur la ligne de commande, soit le mettre dans la variable d'environnement CVSROOT.

Éclipse connait les méthodes pserver, ext qui utilise tout le temps ssh et non le contenu de la variable CVS_RSH et ext-ssh qui utilise un client ssh inclus dans Éclipse. En revanche, il ne sait pas utiliser la méthode local.

On utilisera deux repository. Tout d'abord un repository local et un repository distant :
hostname
cvs.symphonie.berlios.de
repository
/cvsroot/symphonie
login
forax
password
designpattern
La page web http://cvs.berlios.de/cgi-bin/viewcvs.cgi/symphonie/ permet de visualiser le contenu du repository.

Le client en ligne de commande s'utilise de la manière suivante :

cvs [-d cvsroot] commande options
Les commandes princiales sont : Spécifier le cvsroot (avec la variable CVSROOT ou l'option -d) n'est utile que pour la commande checkout ou import. Pour les autres, le client utilise le contenu du répertoire CVS du répertoire courant.

Exercice 0 - Création d'un repository CVS

Créer un repository localement sur votre compte :
      cvs -d cvsroot init
     

Exercice 1 - CVS à la main

Avec la commande checkout, extraire le module cvs-example du repository de berlios.de, tout d'abord avec la méthode ext, puis la méthode pserver.

Que signifie l'option -z3 pour le client ?

À quoi sert la commande login ?

À quoi sert le répertoire cvs-example/CVS ?

Une fois l'exercice terminé, vous pouvez effacer le répertoire cvs-example.

Exercice 2 - Mettre un projet sur le serveur

Sous Éclipse, créer un projet groupa si vous êtes le groupe A, groupb si vous êtes le groupe B etc.
Créer une classe fr.umlv.groupa.Main affichant les arguments pris sur la ligne de commande.

Nous allons maintenant mettre le projet sur les serveur CVS :

Une fois le module importé, renommer le répertoire groupen en groupen.orig. Enfin, extraire le projet du repository dans le répertoire workspace.

Exercice 3 - Ajouter des fichiers

Dans Éclipse, rafraîchir le projet, puis y ajouter des classes.

Avec la commande add de cvs, ajouter ces fichiers au repository. Cela suffit-il ?

Tester les commandes commit et update suivant différents scénarii pour bien comprendre le mécanisme. Dans quels cas y a-t-il conflit ? Comment cvs les résout-il ?

Enfin, extraire les sources dans un répertoire vide avec la commande export. Quelle est la différence avec la commande checkout ?

Tester la commande status.

Exercice 4 - mots-clef

Dans le commentaire javadoc d'une des classes java, ajouter $Id$, $Date$ et $Author$.

Ajouter le fichier dans le repository, puis examiner-le à nouveau.

Expliquer ce qui se passe. Décrire l'option -k des commandes add et admin.

Exercice 5 - Avec Éclipse

Créer un nouveau projet Java dans Éclipse nommé eclipse-cvs.

Créer un paquetage fr.umlv.eclipsecvs ainsi qu'une classe Main dans ce paquetage affichant hello CVS.

Utiliser Éclipse pour ajouter le projet eclipse-cvs au repository précédemment créé.

Sur le projet (arbre à gauche), dans le menu contextuel, aller dans Team/Share Projet...

Puis indiquer à Éclipse quel repository utiliser (create repository location).

La machine est celle sur laquelle vous êtes, le chemin du repository est celui que vous avez donné au départ (un chemin absolu), le type de connexion est ext et le port est le port par défaut. Comme vos machines ne permettent pas de vous loger en ssh, copier le script situé à cette adresse, mettez le dans votre répertoire bin (à créer s'il n'existe pas), et ajouter ce répertoire en premier dans la variable PATH :

export PATH=$HOME/bin:$PATH

Il faut relancer Éclipse du terminal dans lequel vous avez modifié la variable PATH.

Une fois le repository configuré et testé, indiquer le nom du modèle sous lequel votre projet sera inscrit. Cocher use project name as module name si c'est le même que le nom du projet.

Enfin, indiquer vouloir envoyer tous les fichiers du projet sur le serveur CVS (opération commit).

Vérifier que les fichiers sont bien présents sur le serveur CVS :
Avec Éclipse, changer de perspective pour la perspective Team Synchronizing, aller dans la vue CVS Repository et ouvrir l'arbre correspondant au repository.

Expliquer ce que représentent les sous-arbres Head, Branches et Versions.

Aller dans le sous-arbre Head et vérifier que les fichiers sont bien présents.

Exercice 6 - Configurer le repository

Extraire les fichiers d'administration de votre repository local, c'est-à-dire le module CVSROOT.

À quoi servent les fichiers cvsignore et cvswrappers ?

Configurer le repository pour que les PDF, les JAR et les images soient traitées en binaire, et pour que le répertoire classes et les fichiers .class soient ignorés.