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.
: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.
Le client en ligne de commande s'utilise de la manière suivante :
cvs [-d cvsroot] commande optionsLes commandes princiales sont :
cvs -d cvsroot init
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.
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.
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.
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.
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).
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).
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.
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.