cvs - Informatique - Université de Sherbrooke

Transcription

cvs - Informatique - Université de Sherbrooke
Introduction à CVS
Youcef Rahal
Université de Sherbrooke
IFT 232
Hiver 2006
●
●
●
●
●
Fonctionnement de CVS
Intégration à Eclipse
Particularités du départment d'informatique
Gestion des TODOs
Références
CVS
●
●
●
●
●
●
Concurrent Versions System
Présent depuis 1989 (remonte à 1986)
Licence libre (GPL)
Tourne sur plusieurs systèmes d'exploitation
Facile d'utilisation
Souple
Léger
Schéma de fonctionnement
●
Architecture client-serveur
Local
Serveur CVS
(repository)
Distant
Client
CVS
Client
CVS
Client
CVS
Exemples d'utilisation
●
Pour:
–
–
Le travail en équipe
L'archivage (1 seule personne)
●
●
Code
Documents textes
Depuis:
–
–
Une machine locale
Une machine distante
En pratique
●
Très populaire dans le monde des logiciels libres
–
–
–
–
●
La quasi majorité des projets de logiciel libre ou open
source ont un repository accessible (ViewCVS)
Plusieurs projets fonctionnent et produisent sans que
leurs membres ne se soient rencontré (physiquement)
Possibilité de checkout anonyme
Possibilité de droit de soumission si participation
Exemples
–
–
GNOME, Debian...
Eclipse !
CVS de Eclipse
Commandes CVS
●
En ligne de commande (Unix, Linux...)
●
cvs [options] commande [options de commande]
–
commande = checkout, commit, add, remove, diff...
➔
man cvs
Commandes de base (1)
... Vue d'ensemble
●
Connexion
●
Rapatriement
●
Mise à jour
●
Ajout
●
Suppression
●
Soumission
●
Gestion des étiquettes (“versions”)
Commandes de base (2)
... Connexion
●
D'abord, fixer la variable CVSROOT
$ export CVSROOT=:pserver:user@server:Repository
●
Ensuite, connexion
$ cvs login
●
Deux protocoles de connexion
–
pserver
●
–
Ci-dessus
ssh
$ export CVS_RSH=ssh
$ export CVSROOT=:ext:user@server:Repository
$ cvs login
Commandes de base (3)
... Rapatriement
●
Se créer un espace de travail puis s'y placer
●
$ cvs [options] checkout module
–
–
options = - z n [n =1,9] niveau de compression
●
1 basse compression, transfert rapide
●
9 haute compression, transfert lent
●
0 pas de compression [par défaut]
●
En géneral n=3
module = projet à rapatrier
Commandes de base (4)
... Mise à jour
●
Se placer dans le répertoire adéquat
●
$ cvs update [-dP]
d = pour rapatrier les nouveaux répertoires
P = pour ignorer les répertoires vides
Commandes de base (5)
... Ajout
●
Créer un fichier, ensuite
$ cvs add fichier.java
Il faut que le fichier existe
Il faut faire une soumission pour que le fichier soit
effectivement introduit dans le repository
●
Même choses pour les répertoires, sauf:
–
–
Pas de soumission nécéssaire
Le contenu du répertoire n'est pas ajouté. Si le
répertoire n'est pas vide il faut ajouter récursivement
chacun des fichiers ou répertoires qu'il contient ou
utiliser la commande “import”
Commandes de base (6)
... Suppression
●
Supprimer le fichier localement, puis:
$ cvs remove fichier.java
Il ne faut pas que le fichier existe
Il faut faire une soumission pour que le fichier soit
effectivement supprimé du repository
●
Mais...
–
–
Un fichier n'est jamais totalement supprimé. La
dernière version et l'historique sont gardés dans le
grenier ('attic')
Les répertoires ne sont jamais supprimés
Commandes de base (7)
... Soumission
●
Sert à soumettre les fichiers modifiés et à
confirmer les commandes précédentes (ajout,
suppression etc)
$ cvs commit –m “note cocernant la soumission”
●
Si la note n'est pas spécifiée en ligne de
commande, l'éditeur de texte par défaut est utilisé
pour saisir la note
–
Les notes sont utiles pour l'historique et les
autres membres de l'équipe
Commandes de base (8)
... Gestion des étiquettes (a)
●
●
Chaque fichier soumis prossède un numéro de
version qui lui est propre:
–
Géré et incrémenté par CVS
–
Dépend du nombre de fois que le fichier à été soumis.
La plupart des fichiers ont des numéros de
versions différents
Commandes de base (8)
... Gestion des étiquettes (b)
●
●
On peut alors étiquetter tout le code source à un
moment donné pour:
–
Repérer une modification majeure
–
Repérer une version du logiciel
Utile pour gérer l'historique et la création de
“branches”.
$ cvs tag etiquette
$ cvs tag -d etiquette (suppression-irréversible!)
Scénario d'utilisation
●
●
1.Connexion (éventuellement)
2.
–
–
●
3.
–
–
●
Rapatriement
ou Mise à jour (généralement)
Ajout/suppression de fichiers/répertoires (si besoin)
et/ou Modification de fichiers existants
4.
–
–
Soumission
et Gestion des “conflits” ???
Gestion des conflits
1.Vous avez modifié puis soumis un fichier qui n'est
pas synchronisé avec le repository, parce que:
•
•
Quelqu'un d'autre l'a fait avant vous...
Vous avez travaillé depuis un autre endroit et avez
oublié de faire une mise à jour locale...
2.Si vous êtes chanceux, CVS arrive à fusionner les
deux versions sans “problème”:
•
Reste plus qu'à découvrir puis corriger les bugs...
La plupart du temps CVS n'arrive pas à résoudre les
conflits !
Évitez les conflits !
●
Il vaut mieux les éviter en utilisant:
–
La communication entre les membres de l'équipe
–
Le partage du travail (travail par module)
–
La soumission régulière (en fin de journée par ex)
–
La mise à jour systématique (chaque fois avant de
commencer)
Que faire en cas de conflit ?
●
La copie du repository est prioritaire:
–
●
Premier arrivé, premier servi...
Par conséquent:
–
La seconde personne à soumettre le même fichier
devra régler elle-même les conflits jusqu'à ce que les
deux versions (locale et celle du repository) soient
compatibles
–
Comportement “imprévisible” du code produit...
Encore des raisons pour
éviter les conflits...
●
Essentiellement, à cause la perte de temps:
–
Double travail (deux personnes travail sur le même
code)
–
Correction de conflit (travail difficile et “inutile”)
–
Déboguage (le code produit après correction de conflit
n'est pas nécessairement correct ou propre)
CVS dans Eclipse... (1)
●
File -> Import...
●
Checkout Projects from CVS
●
Create a new repository location
●
Insérer les paramètres
●
Finish
CVS dans Eclipse... (2)
CVS dans Eclipse...(3)
Perspective Java
●
Dans Package Explorer, un nouveau projet est
ajouté
●
Clique droit: menu Team
CVS dans Eclipse... (4)
Au département
d'informatique
●
Création d'un compte par équipe
–
Les membres de l'équipe partage le même nom
d'utilisateur
●
Le repository est stocké sur un compte Unix
●
Transparent pour l'équipe:
–
Fonctionne comme un CVS “traditionnel”...
Documentation et gestion
des todos... (1)
●
TODO = “À_FAIRE”...
●
Utiliser le mot clé TODO dans la documentation
des classes et des méthodes
●
Eclipse crée automatiquement une nouvelle tache
●
Ouvrir la vue Tasks pour gérer les taches
–
Window -> Show View -> Other...
–
Basic -> Tasks
Documentation et gestion
des todos... (2)
Soumission de TPs
●
●
●
Utilisation de la commande “turnin”
Voir la documentation en ligne
Pour le 1er TP, le nom de projet est “tp1”:
–
turnin -cift232 -ptp1 fichier1 repertoire1...
(pour
soumettre)
–
–
–
–
(pour vérifier la soumission)
Si problème, soumettre une nouvelle fois
Possible de soumettre autant de fois que nécessaire (les
anciennes versions sont écrasées)
Impossible de soumettre après la date limite
turnin -cift232 -ptp1 -v
Références
●
CVS
–
●
Eclipse
–
●
http://www.nongnu.org/cvs/
http://www.eclipse.org/documentation/main.html
Turnin
–
http://www.usherbrooke.ca/informatique/ressources/documentation/data/turnin/turnin.html

Documents pareils