Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff...

24
Axe Ingénierie des Systèmes d’Informations 3 novembre 2008 Initiation à CVS Philippe BEAUNE [email protected]

Transcript of Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff...

Page 1: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

Axe Ingénierie des Systèmes d’Informations

3 novembre 2008

Initiation à CVS

Philippe [email protected]

Page 2: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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 ...

Page 3: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

3 novembre 2008 Axe ISI3

plan

1) le versionnage

2) quelques outils basiques

3) l'outil CVS

4) quelques recommandations

Page 4: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 5: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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 ...

Page 6: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 7: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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»

Page 8: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 9: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 10: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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>

Page 11: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 12: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 13: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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$

Page 14: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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é»

Page 15: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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)

Page 16: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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, ...)

Page 17: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 18: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

3 novembre 2008 Axe ISI18

Page 19: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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.

Page 20: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 21: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

3 novembre 2008 Axe ISI21

CVS : versions, sélections, branches

● sélection par dates● sélection par tag● création de branches

Page 22: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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

Page 23: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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, …)

Page 24: Initiation à CVSbeaune/docnum/2008_2009/coursCVS.pdf3 novembre 2008 9 Axe ISI L'outil standard diff Standard sous Unix pour fichiers «texte» ; existe sous d'autres OS, pour d'autres

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 …