La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

-Techniques de Développement - Contrôle de Sources 1 Le Contrôle de Sources

Présentations similaires


Présentation au sujet: "-Techniques de Développement - Contrôle de Sources 1 Le Contrôle de Sources"— Transcription de la présentation:

1 -Techniques de Développement - Contrôle de Sources 1 Le Contrôle de Sources

2 -Techniques de Développement - Contrôle de Sources2 Introduction Contrôle de sources : au + simple : sauvegarde et restauration des données beaucoup + puissant enregistrer toutes les modifications successives récupérer un ancienne version maintenir de différentes versions en cours partager le développement entre plusieurs personnes Outils de contrôle de sources RCS, SCCS, CVS

3 -Techniques de Développement - Contrôle de Sources3 Le contrôle de sources Destiné à toutes les tâches où des changements fréquents interviennent sur des fichiers Développement Sources de programmes Fichiers de configuration Scripts dinstallation/désinstallation Administration système Gestion des utilisateurs Gestion des connections ( routeurs,DNS, passerelles) Rapports et documentations Rapports techniques Manuel utilisateur Documentation de logiciel Taches où un retour en arrière est nécessaire

4 -Techniques de Développement - Contrôle de Sources4 Le contrôle de sources Quels fichiers placer sous contrôle ? Les fichiers sources Les fichiers auxquels des modifications régulières sont apportées (docs, manuel utilisateur) Les fichiers qui permettent de reconstruire une version antérieure du produit Quels fichiers ne pas placer sous contrôle ? Fichiers dérivés (ie que lon peut reconstruire à partir des sources) Fichiers objet, fichiers exécutables Fichiers générés par lex et yacc fichiers temporaraires Fichiers binaires en général Il faut pouvoir reconstruire une version précédente du logiciel

5 -Techniques de Développement - Contrôle de Sources5 Cycle dun fichier source Lidée derrière le CS est le versioning : enregistrer une version spécifique dun fichier pour la récupérer ultérieurement Obtenir une versionModifications Tests Créer une nouvelle version

6 -Techniques de Développement - Contrôle de Sources6 Objectifs du CS Sauver une version spécifique dun fichier (appelé révision) dans une archive Récupérer une révision précédente du fichier Modifier une révision précédente dun fichier sans changer les révisions en cours Enregistrer un texte explicatif des changements Permettre un accès contrôlé aux archives Partager et coordonner le développement entre plusieurs personnes Avoir des branches de développement (plusieurs versions différentes dun même fichier pour du développement en parallèle) Maintenir le développement de différentes distributions (releases) Ajouter des extensions (plug-ins) Maintenir des versions pour des plate-formes/environnements différents

7 -Techniques de Développement - Contrôle de Sources7 Les opérations du contrôle de sources Création de larchive Obtention du fichier (lecture seule) Obtention du fichier (lecture seule) Obtention du fichier (lecture écriture) Obtention du fichier (lecture écriture) Historique des modifications Historique des modifications Comparaison du fichier et de larchive Comparaison du fichier et de larchive Changements Ajout des modifications à larchive Ajout des modifications à larchive Archive créée Archive modifiée non oui

8 -Techniques de Développement - Contrôle de Sources8 Terminologie Révision : fichier source archivé. A chaque révision est associé un identifiant sous la forme m.n m : révision majeure n : révision mineure La première révision dun fichier est 1.1, la deuxième 1.2 etc. Archive : fichier qui contient toutes les modification dun fichier source et des informations administratives Référentiel : structure où sont stockées les archives Distribution : ensemble de fichiers auxquels sont associés un nom symbolique

9 -Techniques de Développement - Contrôle de Sources9 RCS – Revision Control System Outil basique destiné au contrôle de sources, développé au début des années 80 par W. F. Tichy, il est plus simple et plus convivial que loutil SCCS (Source Code Control System) Un répertoire RCS par répertoire de travail contient le référentiel Un fichier archive contient Lensemble des modifications apportées au fichier Log des modifications Informations administratives droits daccès noms symboliques numéro de révision

10 -Techniques de Développement - Contrôle de Sources10 RCS-Créer une archive La commande ci (check-in) place un fichier dans le référentiel > ci toto.c Crée une archive nommée toto.c,v Demande un texte de description (log) Efface le fichier toto.c Tous les fichiers sources doivent être placés dans le référentiel >ci toto.c RCS/toto.c,v <-- toto.c enter description, terminated with single '.' or end of file: NOTE: This is NOT the log message! >> fonctions de base de la structure coord2D >>. initial revision: 1.1 done

11 -Techniques de Développement - Contrôle de Sources11 RCS-Obtenir une révision Commande co (Check-out) > co toto.c Crée le fichier toto.c à partir de la dernière révision de larchive toto.c,v (avec accès en lecture seule). La commande suivante récupère une révision donnée dun fichier > co –r1.6 toto.c Commande co –l Accès en écriture (lock) > co –l toto.c Permet de bloquer par un verrou toute autre modification sur ce fichier, en attendant une révision ultérieure Vous navez pas accès à ce fichier si une autre personne est en train de modifier une révision de ce fichier

12 -Techniques de Développement - Contrôle de Sources12 RCS-Comparer des révisions Commande rcsdiff Comparer le fichier de travail à une révision donnée > rcsdiff –r1.6 toto.c Comparer deux révisions > rcsdiff –r1.6 –r toto.c Exemple : RCS file: RCS/toto.c,v retrieving revision 1.6 diff -r1.6 toto.c 40c40 < void somme(coord2D a, coord2D b, coord2D *c) { --- > void plus(coord2D a, coord2D b, coord2D *c) {

13 -Techniques de Développement - Contrôle de Sources13 RCS-Mettre à jour une archive Commande ci (check-in) > ci toto.c Ajoute les modifications de ce fichier à larchive existante Incrémente le numéro de révision Demande un log Forcer le numéro de révision (e.g. pour une révision majeure) > ci –r2.0 toto.c Seulement si vous êtes satisfait de votre fichier (compilation correcte) et que vous voulez le sauver pour y accéder plus tard RCS/toto.c,v <-- toto.c new revision: 2.0; previous revision: 1.2 enter log message, terminated with single '.' or end of file: >> erreur lors du calcul de somme >>. done

14 -Techniques de Développement - Contrôle de Sources14 RCS-Historique Commande rlog > rlog toto.c Historique des modifications sur un fichier Informations administratives sur le fichier Exemple : RCS file: RCS/toto.c,v Working file: toto.c head: 1.2 branch:RCS file: RCS/toto.c,v Working file: toto.c head: 1.2 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 2; selected revisions: 2 description: fonctions de base de la structure coord2D revision 1.2 date: 2001/10/30 15:52:46; author: marco; state: Exp; lines: erreur lors du calcul de somme revision 1.1 date: 2001/10/30 15:50:13; author: marco; state: Exp; Initial revision

15 -Techniques de Développement - Contrôle de Sources15 Construire une distribution Nécessité de partager des versions avec dautres personnes, en interne ou en externe (étape essentielle dans un processus de développement) Prendre un instantané de votre projet (ensemble des sources) pour distribuer le projet. On parle de distribution (release) Techniquement on regroupe lensemble des fichiers sous un nom symbolique Release1_0 Makefile v1.3 toto.cv1.8 main.c v1.14 titi.c v1.2 Release2_0 Makefile v1.3 toto.cv2.3 main.c v1.25 titi.c v1.5

16 -Techniques de Développement - Contrôle de Sources16 RCS-Construire une distribution La commande rcs –n associe le nom symbolique Release1_0 à la révision 1.5 du fichier toto.c > rcs –nRelease1_0:1.5 toto.c Pour créer une distribution, il faut associer le même nom à tous les fichiers du projet. La commande suivante associe le nom Release1_0 à la dernière révision du fichier toto.c > rcs –nRelease1_0: toto.c On peut ensuite récupérer un fichier de cette distribution > co –l –rRelease1_0 toto.c

17 -Techniques de Développement - Contrôle de Sources17 Versions Multiples Exemple Release 1.0 Release 1.2 Release 2.0

18 -Techniques de Développement - Contrôle de Sources18 Notion de branches de développement Il existe toujours une branche de développement par défaut (cest sur cette branche que se font les Check-in et Check-out) Pour maintenir différentes versions du produit, il est indispensable de créer des branches de développement Permet le développement de différentes distributions (releases) Permet la maintenance de différentes distributions (patchs) Permet lajout dextensions (plug-ins) Permet le développement et la maintenance de distributions pour des plate- formes/environnements différents (Unix/Irix/Linux/FreeBSD, Windows,BeOS)

19 -Techniques de Développement - Contrôle de Sources19 Branches de développement (exemple) Release 1.0 Release 1.2 Release 2.0

20 -Techniques de Développement - Contrôle de Sources20 RCS-Création dune branche de développement Créer une révision sur un fichier qui nest pas la dernière révision Récupérer une ancienne révision dun fichier > co -l –r1.2 toto.c Faire une modification et mettre à jour larchive > ci toto.c Ou forcer une révision en utilisant la commande ci –r Crée une révision sur une nouvelle branche > ci –r1.2.1 toto.c Crée une révision sur une nouvelle branche à partir de la dernière révision mineure du fichier toto.c > ci –r1 toto.c

21 -Techniques de Développement - Contrôle de Sources21 Norme de numérotation des branches de distribution Release Majeur : n.0 Introduit de nouvelles fonctionnalités incompatibles avec les anciennes Introduit des changements de fonctionnalités incompatibles avec les anciennes Release Mineur : n.m Introduit quelques nouvelles fonctionnalités Doit rester compatible avec lancienne version Mise à jour : n.m.u Répare les bugs de la version précédente Nintroduit pas de nouvelles fonctionnalités

22 -Techniques de Développement - Contrôle de Sources22 Norme de dénomination des branches de distribution beta0_mdistribution beta 0.m beta0_m_headtête de développement de la distribution beta 0.m beta0_m_udistribution beta 0.m.u beta0_m_u_headtête de développement de la distribution beta 0.m.u headtête de développement de la branche par défaut reln_0distribution n.0 reln_0_pppatch p sur la distribution n.0 reln_0_headtête de développement de la distribution n.0 reln_mdistribution n.m reln_m_pppatch p sur la distribution n.m reln_m_headtête de développement de la distribution n.m reln_m_udistribution n.m.u reln_m_u_pppatch p sur la distribution n.m.u reln_m_u_headtête de développement de la distribution n.m.u

23 -Techniques de Développement - Contrôle de Sources23 RCS-Maintenance dune branche de développement Rel1_0 Rel1_2 Rel2_0 Rel1_0_p1 Rel1_2_p1 2.1 Rel1_0_head Rel1_2_head

24 -Techniques de Développement - Contrôle de Sources24 RCS-Maintenance dune branche de développement Pour maintenir les différentes distributions, il faut toujours un symbole qui représente la tête de la branche de développement (head). On peut associer plusieurs symboles à un fichier : > rcs –nRel1_0: nRel1_0_head: toto.c Cependant, rcs génère une erreur si on tente de réutiliser le même symbole avec une révision différente : > rcs -nRel1_0_head: toto.c On utilise alors loption –N pour assigner le symbole à cette révision et effacer les autres utilisations de ce symbole. > rcs -NRel1_0_head: toto.c Permet de toujours conserver un symbole unique pour la tête de la branche de développement

25 -Techniques de Développement - Contrôle de Sources25 Opérations entre les branches de développement « Comparer » deux branches > rcsdiff –r1.4 –r toto.c « Merger » ensemble deux branches Appliquer les changements dune branche secondaire vers la branche principale Appliquer les changements entre deux branches RCS file: RCS/toto.c,v retrieving revision 1.4 retrieving revision diff -r1.4 –r toto.c 40c40 < void somme(coord2D a, coord2D b, coord2D *c) { --- >void plus(coord2D a, coord2D b, coord2D *c) { …

26 -Techniques de Développement - Contrôle de Sources26 RCS-Merge Rel1_0 > co –l toto.c > rcsmerge –r1.4 –r toto.c

27 -Techniques de Développement - Contrôle de Sources27 RCS-merge (conflits) Attention aux conflits ! RCS file: RCS/toto.c,v retrieving revision retrieving revision 1.1 Merging differences between and 1.1 into toto.c rcsmerge: warning: conflicts during merge

28 -Techniques de Développement - Contrôle de Sources28 RCS-merge (conflits) <<<<<<< toto.c coord2D *somme(coord2D a, coord2D b) { coord2D *c = (coord2D *)(malloc(sizeof(struct coord2D))); ======= void plus(coord2D a, coord2D b, coord2D *c) { >>>>>>> 1.3 … <<<<<<< toto.c c->y = a.y - b.y; return c; ======= c->y = a.y + b.y; >>>>>>> 1.3 … <<<<<<< toto.c coord2D *diffrence(coord2D a, coord2D b) { coord2D *c = (coord2D *)(malloc(sizeof(struct coord2D))); ======= void moins(coord2D a, coord2D b, coord2D *c) { >>>>>>> 1.3 …

29 -Techniques de Développement - Contrôle de Sources29 RCS-Conclusion Outil assez basique de contrôle des sources Limité pour des projets très importants (pas gestion des répertoires, gestion multi- utilisateur limitée) Bonne base pour des outils plus évolués (CVS)

30 -Techniques de Développement - Contrôle de Sources30 Quelques Interfaces WinCVS

31 -Techniques de Développement - Contrôle de Sources31 Quelques interfaces Cervisia

32 -Techniques de Développement - Contrôle de Sources32 Conclusion sur le CS Permet la sauvegarde et la restitution de fichiers Permet de conserver plusieurs versions dun même fichier (branches de développement) Permet de partager les sources à plusieurs (verrous)


Télécharger ppt "-Techniques de Développement - Contrôle de Sources 1 Le Contrôle de Sources"

Présentations similaires


Annonces Google