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