Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff...
Transcript of Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff...
Axe Ingénierie des Systèmes d’Informations
3 novembre 2008
Initiation à CVS
Philippe [email protected]
3 novembre 2008 Axe ISI2
Initiation à CVS
emploi du temps :une séance de cours (aujourd'hui)une séance de T.P. (jeudi 6 novembre matin)
appropriation par la pratique
application dans les projets ISI, et ...
3 novembre 2008 Axe ISI3
plan
1) le versionnage
2) quelques outils basiques
3) l'outil CVS
4) quelques recommandations
3 novembre 2008 Axe ISI4
versionnage : qu’est-ce ?● Un système de gestion de l'évolution (et
éventuellement de la co-production) d'un document ; et gestion des versions (concurrentes, parallèles)
● Un système de gestion de versions : pour la programmation, les sites Web, les livres, …
● Permet de garder des traces● Répond au problème des copies multiples dans une
arborescence de versions différentes● Données centralisées sur un serveur● En extraire une partie pour travailler localement sur
sa machine : travail en parallèle possible, aide à la gestion des conflits
3 novembre 2008 Axe ISI5
Versionnage : pourquoi ?● En Génie Logiciel :
● Développement multi-plateforme, multi-license● Gestion de produits spécifiques qui évoluent, issus
d'un tronc commun qui évolue également● Traçabilité de l'évolution d'un logiciel● Notion de release stable (versions majeures, mineures,
alpha/beta)● Possibilité de travail collaboratif● Incitation à documenter les changements mêmes
mineurs● Utilisable pour la production de n'importe quel
document numérique, sous conditions ...
3 novembre 2008 Axe ISI6
Versionnage : problématique
● Cohérence : si plusieurs documents sont nécessaires à un projet et évoluent
● Dépendances : si un document est modifié, quelques autres documents doivent l'être
● Coordinations : si travail d'équipe● Consistance : si plusieurs versions en parallèle● Archivage/historisation : permettre des retours
en arrière
3 novembre 2008 Axe ISI7
Versionnage : numérotation● M.m.p :
● M = Major level ; modif fonctionnelle du produit, compatibilité non garantie
● m = Minor level ; modif fonctionnelle d'une caractéristique● p = Patch level ; correction de bugs
● Éventuellement ajout de d (développement), a (alpha), b (beta), puis RC (release candidate), numérotés :● 4.0.8.b2 2.7.1.RC1
● Éventuellement si M=0 : en développement● Éventuellement si m impair : en développement, sinon stable● CVS fait autrement, mais offre la possibilité de «tags»
3 novembre 2008 Axe ISI8
CVS : comment ça marche ?
● On peut travailler avec un CVS en local (seul, ou partage de disque) ou sur un serveur (à plusieurs, en client/serveur)
● L’accès au serveur peut être non sécurisé (pserver) ou sécurisé (kerberos, ssh, …)
● Travail local puis synchronisation avec la base● Pas sur modèle lock-modify-unlock● ... mais sur modèle copy-modify-merge
3 novembre 2008 Axe ISI9
L'outil standard diff● Standard sous Unix pour fichiers «texte» ; existe
sous d'autres OS, pour d'autres formats de fichiersdiff fichier1 fichier2
● Sortie de la forme :n1 a n3,n4n1,n2 d n3n1,n2 c n3,n4
● Exemple :2c2,3< voici la ligne 2--> voici la ligne 2 modifiée> et la suivante ajoutée
3 novembre 2008 Axe ISI10
L'outil historique rcs● Revision Control System● Fonctionne sur modèle lock-modify-unlock● Fichiers texte uniquement
● ci <filename> : check in (crée <filename,v> et demande un commentaire), voir les options
● co -l <filename> : check out a working copy● rcsdiff -r1.2 [-r2.3] <filename>● rlog -r1.2 <filename>
3 novembre 2008 Axe ISI11
rcs : versions et autres sélections
● Par défaut : 1.1 puis 1.2 puis 1.3 ... à chaque ci
● Option -r2.3 crée une version 2.3● Option -sToto : spécifie un état (Exp, Stab, Rel)● Option -wToto : spécifie l'auteur (sinon login)● Option -dDate : seulement pour co
● Option -n : spécifie un nom symbolique pour ci
utilisable ensuite avec -r pour co
3 novembre 2008 Axe ISI12
rcs : création de branches
● Développement linéaire par défaut :(1.1) -> (1.2) -> (1.3) -> (2.1) -> (2.2)
● Pour créer une branche utiliser l'option -r avec par exemple -r1.3.1.1
(1.1) -> (1.2) -> (1.3) -> (2.1) -> (2.2)
\----> (1.3.1.1)
● Puis possibilité de recoller avec rcsmerge
3 novembre 2008 Axe ISI13
rcs : substitution de mots-clés● rcs substitue ces chaines lors du co
$Author$$Date$$Id$ ou $Header$$Revision$$Log$$Locker$$Name$$State$
3 novembre 2008 Axe ISI14
rcs : limitations
● Ne permet de travailler que sur un seul fichier à la fois (fichiers non liés, pas d'ensembles)
● Ne travaille que localement, pas de réseau (à plusieurs => partage nécessaire du disque)
● Bloque l'accès au fichier «chargé»
3 novembre 2008 Axe ISI15
CVS : principes● Concurrent Version System● Repository = référentiel (local ou client/serveur)● Modèle copy-modify-merge● Fichiers texte uniquement● Convient mêmes aux gros projets● Reprend les idées de base de rcs● Beaucoup d'implantations (inclus dans Linux,
dans eclipse, existe aussi sous MSWindows)
3 novembre 2008 Axe ISI16
CVS : fonctionnalités
● CVS gère les numéros de versions et aide à gérer les conflits● CVS permet aussi de comparer les fichiers locaux avec ceux
du référentiel (marche sur du texte ligne à ligne : ne pas hésiter à aller à la ligne, ne pas tout mettre dans la base)
● CVS permet d’avoir des historiques● CVS permet d’attacher des commentaires aux versions● CVS permet d’attacher des noms symboliques aux versions
(tags)● CVS permet de créer des branches puis de fusionner● Attachement de scripts sur événements (avertissement par
mél, ...)
3 novembre 2008 Axe ISI17
CVS : quelques commandes● init : création d'un référentiel vide● import : mise en place initiale des fichiers● checkout : extrait une copie de travail des
modules désirés● update : met à jour les fichiers d’une copie de
travail par rapport aux versions de la base● commit : archive une version dans la base
mais il faut synchroniser avant (avec update)● add puis commit : ajout d'un fichier
3 novembre 2008 Axe ISI18
3 novembre 2008 Axe ISI19
Puisque l'utilisateur Y veut apporter des modifsfaites sur une version antérieure (à cause desmodifs faites par X), cvs refusera le commit.
Y devra faire un update pour «merger» les modifsde X et les siennes. S'il n'y a pas de conflits, cvsle fait, sinon il avertit et Y doit faire les modifs.
3 novembre 2008 Axe ISI20
CVS : accès au référentiel
● 5 méthodes d'accès :● accès direct (en local) : local● serveur simple (port 2401 par déf.) : pserver● serveur avec kerberos : kserver● serveur avec GSSAPI : gserver● serveur avec rsh/ssh : ext
● cf. variable d'environnement CVSROOT
3 novembre 2008 Axe ISI21
CVS : versions, sélections, branches
● sélection par dates● sélection par tag● création de branches
3 novembre 2008 Axe ISI22
La gestion de versions
● Il n’y a pas que CVS … mais il est assez simple● Il est ouvert et gratuit● Il existe comme outils en ligne sur Linux● Il existe des versions GUI pour Windows et autres, et
des interfaces Web● Il existe même une version serveur pour Windows
NT● Il est intégré dans eclipse● Très utilisé dans l’Open Source
3 novembre 2008 Axe ISI23
CVS : quelques conseils
● Régler les horloges● Se limiter aux fichiers texte● Ne pas tout mettre dans CVS● Ne déposer dans la base CVS un fichier
modifié qu’après être vraiment sûr qu’il fonctionne bien avec le reste (compil, tests, …)
3 novembre 2008 Axe ISI24
CVS : des faiblesses● renommage de fichiers
● donc bien définir a priori sa politique de nommage des fichiers
● gestion de l'arborescence ● cvs ne gère que des fichiers indépendamment les
uns des autres● atomic commits● Subversion (svn) va plus loin que CVS
à vos claviers …