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

Introduction à la gestion de configuration avec CVS

Présentations similaires


Présentation au sujet: "Introduction à la gestion de configuration avec CVS"— Transcription de la présentation:

1 Introduction à la gestion de configuration avec CVS
Xavier Baril

2 Plan Introduction Architecture Quelques commandes Les tags
Les branches Conclusion (C) Xavier Baril

3 La gestion de configuration
« La gestion de configuration consiste à gérer la description technique d'un système (et de ses divers composants), ainsi qu'à gérer l'ensemble des modifications apportées au cours de l'évolution du système. » Wikipedia Logiciel de gestion de version (CVS) La gestion de configuration consiste à gérer la description technique d'un système (et de ses divers composants), ainsi qu'à gérer l'ensemble des modifications apportées au cours de l'évolution du système. La gestion de configuration est utilisée pour la gestion de systèmes complexes : - en informatique - en aéronautique - en automobile En informatique, la gestion de configuration est utilisée de manière à stocker et tracer les différentes versions ou révisions de toute information destinée à être utilisée par un système (matériel, logiciel, document, donnée unitaire, etc.). Ceci est réalisé à l'aide de Logiciel de gestion de versions, commerciaux, payants ou gratuit (exemple CVS). Utilisée dans le suivi de version de logiciels, la gestion de configuration permet par exemple de gérer les codes sources. Utilisée dans le suivi de version de documents, il permet de tracer toutes les modifications qui sont intervenues sur les informations contenues dans le document. (C) Xavier Baril

4 CVS : qu’est ce que c’est ?
CVS = Concurrent Version System Outil d’aide au développement Gestion de versions Au niveau du projet Au niveau de chaque fichier Permet d’annoter les modifications sur des fichiers (C) Xavier Baril

5 Projet informatique Entre 1 et N développeurs Un cahier des charges
De la production (spécification ?, conception, codage, …) Des livraisons (conception, sources, tests, exécutable, documentation) Beaucoup de fichiers ! Nécessité de conserver une trace du travail (C) Xavier Baril

6 Exemple d’arborescence
code lib scripts src test delivery doc design quality spec test tools java uml (C) Xavier Baril

7 Intérêts de CVS Conserver un historique du travail
Faciliter le développement en équipe Qui a fait une modification ? A quelle date ? Pourquoi ? Stockage centralisé Gestion des accès concurrents (C) Xavier Baril

8 Limites et difficultés
Espace de stockage CVS ne gère pas tout ! Pas de prise en compte de « processus métier » Difficultés : Renommer les fichiers Modifier l’arborescence Nécessite des compétences (administration, gestion des branches, …) (C) Xavier Baril

9 Historique SCCS (Source Code Control System)
RCS (Revision Control System) Défauts de SCCS et RCS Fonctionnent au niveau fichier Ne sont pas interopérables à distance Création de CVS en appui sur RCS : 1989 (CVS est sous licence GPL) Les systèmes unix étaient fournis avec SCCS, mais cet outil ne convient pas à la Free Software Foundation créée par Richard M. Stelllman pour être utilisé dans son projet GNU (Gnu is Not Unix) 4 droits fondamentaux pour la licence GPL : Utilisation sans limitation Étudier et adapter Redistribuer Améliorer et distribuer les améliorations (C) Xavier Baril

10 Concepts de base Dépôt (repository) Module Révision
Répertoire partagé par tous Conserve l’historique des modifications Module Ensemble de fichiers sources ou de répertoire constituant un projet Révision Chaque fichier a un numéro de révision unique (C) Xavier Baril

11 Architecture CVSROOT /usr/local/cvs
CVSROOT Copie Server CVS Copie Client CVS (pserver) CVSROOT Copie Client CVS (ssh) (C) Xavier Baril

12 Vocabulaire Revision Repository Working copy Check out Commit
Log message Update Conflict - Revision: A committed change in the history of a file or set of files. A revision is one "snapshot" in a constantly changing project. - Repository: The master copy where CVS stores a project's full revision history. Each project has exactly one repository. - Working copy: The copy in which you actually make changes to a project. There can be many working copies of a given project; generally each developer has his or her own copy. - Check out: To request a working copy from the repository. Your working copy reflects the state of the project as of the moment you checked it out; when you and other developers make changes, you must use commit and update to "publish" your changes and view others' changes. - Commit: To send changes from your working copy into the central repository. Also known as check-in. - Log message: A comment you attach to a revision when you commit it, describing the changes. Others can page through the log messages to get a summary of what's been going on in a project. - Update: To bring others' changes from the repository into your working copy and to show if your working copy has any uncommitted changes. Be careful not to confuse this with commit; they are complementary operations. Mnemonic: update brings your working copy up to date with the repository copy. - Conflict: The situation when two developers try to commit changes to the same region of the same file. CVS notices and points out conflicts, but the developers must resolve them. (C) Xavier Baril

13 Quelques commandes (1) Cvs add Cvs checkout
Nécessaire lorsqu’on créé un nouveau fichier (ou répertoire) pour l’ajouter au module Seules les modifications en local sont effectuées : utiliser cvs commit Cvs checkout Demander au serveur de renvoyer les fichiers d'un module (C) Xavier Baril

14 Quelques commandes (2) Cvs commit Cvs update
Valider et intégrer les changements effectués en local Le serveur attribut un nouveau numéro de révision Cvs update Mettre à jour les fichiers locaux La commande commit demande au serveur de valider et d'intégrer les changements qui ont pu être faits sur les fichiers en local. Le serveur mettra donc à jour les fichiers modifiés et leur attribuera un nouveau numéro de révision. Le commit peut se faire sur l'ensemble des fichiers modifiés, ou sur un fichier précis. La commande update a pour effet de mettre à jour les fichiers locaux à partir de versions situées sur le serveur, ou de consulter le statut des fichiers locaux par rapport à ceux sur le serveur. Cette commande est un peu plus complexe que les précédentes. Un simple cvs update va lister l'ensemble des fichiers et préciser le statut de ces fichiers dans le serveur par rapport à ceux présents sur le poste local. Mais ce n'est pas tout, l'ensemble des fichiers pour lesquels une nouvelle révision sera disponible sur le serveur seront directement mis à jour sur le poste local. Ainsi, si vous avez entamé des modifications à partir d'une révision et que quelqu'un a créé une nouvelle révision entre temps, l'appel de cvs update vous permettra de mettre à jour votre copie locale en intégrant les changements induits par la nouvelle révision (ce qui n'exclue pas la possibilité d'avoir à résoudre des conflits). Vos modifications sont alors intégrées en local à la révision la plus récente, vous pouvez tranquillement mettre à jour le fichier sur le serveur avec un cvs commit. (C) Xavier Baril

15 Statuts d’un fichier Up-to-date Locally Modified Locally Added
Locally Removed Needs Checkout Needs Merge Unresolved Conflict Unknown Up-to-date The file is identical with the latest revision in the repository for the branch in use. Locally Modified You have edited the file, and not yet committed your changes. Locally Added You have added the file with add, and not yet committed your changes. Locally Removed You have removed the file with remove, and not yet committed your changes. Needs Checkout Someone else has committed a newer revision to the repository. The name is slightly misleading; you will ordinarily use update rather than checkout to get that newer revision. Needs Patch Like Needs Checkout, but the CVS server will send a patch rather than the entire file. Sending a patch or sending an entire file accomplishes the same thing. Needs Merge Someone else has committed a newer revision to the repository, and you have also made modifications to the file. File had conflicts on merge This is like Locally Modified, except that a previous update command gave a conflict. If you have not already done so, you need to resolve the conflict as described in 10.3 Conflicts example. Unknown CVS doesn't know anything about this file. For example, you have created a new file and have not run add. (C) Xavier Baril

16 La notion de « tag » Tag : (marqueur) d’un ensemble de fichiers afin de définir une version pour le projet. Utilisé pour les livraisons Un tag permet justement de ne pas avoir à connaître les révisions qu'il faut demander pour chaque fichier afin d'avoir un ensemble fonctionnel (C) Xavier Baril

17 Les « sticky tags » Bloquer un fichier sur une révision particulière
Lors d’un update : « classique » le fichier n’est pas modifié « remove any sticky tag » le fichier est modifié (C) Xavier Baril

18 La notion de branche Définition : « dérivation dans l’histoire des éléments de configuration » Caractéristiques : Correspond à un « axe d’évolution » Rattachée à une branche source Peut contenir des sous-branches Concrètement : permet de gérer l’évolution de versions parallèles En gestion de configuration, une branche est une dérivation dans l'histoire de l'évolution des éléments de configuration. On parle donc de «branche de version». Une branche de version correspond à un axe d'évolution de versions. Elle est rattachée à une branche source et peut découler sur plusieurs sous-branches. L'évolution des versions se fait de façon linéaire au sein d'une même branche ; c’est-à-dire que les versions se suivent chronologiquement. L'apport des branches offre la possibilité d'avoir des évolutions de versions en parallèle. (C) Xavier Baril

19 Fusion de branches Combiner des modifications pour créer une nouvelle version Intérêts : Synchronisation entre plusieurs développeurs Annulation d’une ancienne modification Import d’une modification d’une branche vers une autre Cette activité consiste à combiner des modifications ou des suites de modifications (qu'elles viennent de branches différentes ou non) pour créer une nouvelle version. On peut décliner plusieurs intérêts à la fusion : - la synchronisation entre plusieurs développeurs, qui travaillent habituellement séparément, donc sur des branches de version différentes - l'annulation d'une ancienne modification (par opposition à la toute dernière), à appliquer sur la version actuelle - l'import d'une modification d'une branche vers une autre (C) Xavier Baril

20 Modèle de branche par objectif
(C) Xavier Baril

21 Outils Client : Interfaces graphiques Serveur (Windows) WinCVS
TortoiseCVS tkcvs … Eclipse Serveur (Windows) CVSNT (C) Xavier Baril

22 Plugin Eclipse : propriétés
(C) Xavier Baril

23 Plugin eclipse : menus (C) Xavier Baril

24 Conclusion (1) Cas d’utilisation Points faibles
Historisation archivage de documents Développement à plusieurs Points faibles Renommage, déplacement, suppression de fichiers Dépôt unique Incomplet pour la gestion de configuration (pas de règles d’utilisation) (C) Xavier Baril

25 Conclusion (2) Points forts Performant pour la gestion de versions
Accès à distance du dépôt Très utilisé Intégré dans de nombreux outils Gratuit, open-source (C) Xavier Baril

26 Bibliographie http://www.cvshome.org (site officiel)
(assez complet) ;-) (C) Xavier Baril


Télécharger ppt "Introduction à la gestion de configuration avec CVS"

Présentations similaires


Annonces Google