Institut de la Francophonie pour l'Informatique Institut National des Télécommunications MÉMOIRE DE FIN D'ÉTUDES MASTER EN INFORMATIQUE Intégration d'un gestionnaire de versions pour les documents dans le portail Web de travail collaboratif NGO Van Cong Responsable de stage: Christian BAC Ce stage a été réalisé au sein du projet PFTCR du département Informatique de l'Institut National des Télécommunications(INT) Hanoi, 20 Décembre 2006 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Remerciements J’adresse toute ma gratitude à mon responsable de stage, M. Christian BAC, pour sa disponibilité, son soutien constant et son aide précieuse durant ce stage. Je voudrais également remercier M. Benoît HAMET pour leurs collaborations serrées, leurs aides tout au long de mon stage.
Un grand merci à toutes les personnes du département Informatique à l'INT pour leurs aides et leur gentillesse pendant mon séjour en France. Enfin, je voudrais exprimer mon entière reconnaissance envers ma famille, mes amis et ses professeurs à l’IFI pour leurs soutiens, leurs aides et leurs encouragements. NGO Van Cong – Promotion 10 – IFI 2 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Résumé Le problème de perte de mise à jours dans l'environnement de travail collaboratif existe depuis longtemps. On voudrait de pouvoir suivre ces changements pour aider les développeurs à garder le contrôle du projet et à communiquer (même à des kilomètres de distance) tout en restant assez peu intrusif.
À notre jour il y a de nombreux utiles qui nous aident à gérer des révisions par logiciel comme CVS, Subversion, Sourcesafe. Ce stage vise à intégrer le gestionnaire de versions(Subversion) dans un environnement de travail collaboratif(phpGroupWare) pour remplacer WebDAV(mod_dav d'Apache dans ProGet). Dans le cadre de stage, nous avons développé un nouveau module qu'il permet de manipuler les fichiers avec les méthodes du protocole DeltaV. Ce Module est intégré dans la base de code standard du module APIs de la nouvelle version 0.
Mots-clefs: WebDAV, DeltaV, Subversion, Filemanager, VFS. NGO Van Cong – Promotion 10 – IFI 3 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Table des matières Remerciements. 7 1 Objectifs du stage. 7 3 Organisation du rapport.
8 Chapitre 2: État de l'art. 9 1 Étude de cas pour la gestion de version.2 Correction de bogue.2 Le rôle de CVS.4 Accès à une base CVS.5 Session de CVS.6 Limite de CVS.4 Gestion des accès concurrents.5 Les implémentations de serveur WebDAV.6 Limite de WebDAV.2 Les termes dans Deltav.3 Opération de version.5 Espace de travail (Workspace).6 Fonctionnement de DeltaV. 22 5 Étude de cas: subversion.3 Modèle Copier- Modifier – Fusionner .4 Subversion et Deltav. 26 6 Comparaison entre Subverson et CVS.
27 Chapitre 3: Intégration de système de gestion de versions dans le gestionnaire de fichiers de phpGroupWare .2 Architecture de gestionnaire de fichiers (filemanager).32 3 Utiliser subversion client API.1 Construire un wrapper de libsvn_client dans PHP.2 Le cycle de vie d'une extensions.34 4 Implémenter des méthodes de protocole deltav.34 NGO Van Cong – Promotion 10 – IFI 4 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif 5 Implémentation.2 Accès au historique .3 Comparaison la différence entre deux révision. 38 Chapitre 4: Contrôle des droits d'accès.40 1 Gestion par le serveur Web apache.1 Client et serveur d’authentification Handshake.2 Méthode de Contrôle d’accès.3 Méthode de passage des certificats.4 Authentification et autorisation.5 Les phases de sécurité d’Apache. 42 2 Gestion par un accès direct à subversion.2 Modèle de sécurité d’Apache et Subversion.48 Annexe A: Intégration Subverison dans Picolibre.49 NGO Van Cong – Promotion 10 – IFI 5 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Table de Figure Figure 1: Accès à une base de CVS 12 Figure 2: Checkout 12 Figure 3: Commit 13 Figure 4: Update 13 Figure 5: Plusieurs applications en utilisant Delta-V 19 Figure 6: Les opérations de protocole HTTP, WebDAV et DeltaV 20 Figure 7: Représentation de l'hitorique d'un fichier foo.html dans DeltaV 23 Figure 8: Modèle copier-modifier-fusionner 26 Figure 9: Subverison Architecture 30 Figure 10: Architecture de Filemanager 32 Figure 11: Filemanager avec le wrapper de libsvn_client 33 Figure 12: Filemanager avec WebDAV/DeltaV 35 Figure 13: L'interface après avoir intégré le gestionnaire de version 38 Figure 14: Comparaison entre deux fichiers et deux répertoires 39 Figure 15: Modèle de sécurité d'Apache et Subversion 43 Figure 16: Mécanisme de NSS 50 Figure 17: Mécanisme de PAM 51 NGO Van Cong – Promotion 10 – IFI 6 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Chapitre1: Introduction 1 Objectifs du stage L'objectif de ce stage est d'intégrer la gestion des révisions par le logiciel SubVersion dans des portails de travail collaboratifs appelés ProGet et PicoLibre, en replacement de CVS (Concurrent Version System) dans PicoLibre ou WebDAV(mod_dav d'Apache dans ProGet). Le but est de disposer d'un même référentiel de documents partagés dans les projets qui soit à la fois accessible avec des clients DAV, de façon "transparente" pour un maximum d'utilisateurs ne souhaitant pas faire de gestion de versions, comme cela se passe dans ProGet actuellement et accessible avec un client SubVersion pour les utilisateurs désirant faire du suivi de version, comme c'est le cas dans PicoLibre actuellement avec CVS.
2 Contexte Ce stage se déroule dans le cadre d'un projet pour améliorer les plate-forme ProGet et PicoLibre. ProGet Le portail ProGET présente l'ensemble des projets de recherche du GET(Groupe des Écoles des Télécomunications) répartis dans cinq programmes activités articulés autour de trois grandes thématiques - systèmes de communication , systèmes de traitement et d'élaboration de contenus, applications à la société de l'information - couvrant la totalité des activités de recherche du GET. Le portail propose une consultation facile et rapide des informations générales sur les 115 projets structurants (objectifs généraux, coordonnateurs, écoles participantes) ainsi qu'un descriptif des 5 programmes. Le moteur de recherche intégré au portail permet par ailleurs un accès direct à une information ciblée par mot clés permettant d'identifier par exemple les projets traitant d'une thématique particulière ou bien encore les équipes de recherche impliquées sur un thème.
PicoLibre Le projet PicoLibre a pour le but de développer les outils nécessaires à une plate-forme collaborative de développement de logiciel spécialement adaptée au contexte de l'enseignement supérieur. Les principales caractéristiques de cette plate-forme résident dans sa simplicité (d'où le préfixe Pico) : simplicité d'installation et d'administration, facilité d'apprentissage et d'utilisation par des novices. Elle permet en effet d’héberger des projets en mettant à la NGO Van Cong – Promotion 10 – IFI 7 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif disposition des utilisateurs un espace de travail associé à un ensemble d’outils. Ces outils mettent en musique les différents registres d’activité de la vie d’un projet - communication au sein de l’équipe, communication externe, gestion et synchronisation des développements, planification des tâches, documentation du projet, suivi de bogues, mise à disposition des sources.
- et favorisent ainsi une gestion efficace, cohérente et responsable. Accessible à partir de tout navigateur WEB, la plate-forme offre une maîtrise complète de sécurisation des accès. Ainsi un projet peut être visible de tout l’Internet (accès anonyme), alors qu’un autre n'est accessible que par un groupe de personnes identifiées. PicoLibre est développée dans le cadre du projet PeCoRes[4].
Dans l'avenir, PicoLibre respectera le protocole d'interconnexion de plateformes de développement CoopX en cours de définition [5], et PicoLibre est un Logiciel Libre publié sous la GNU General Public License [19]. 3 Organisation du rapport Le chapitre 2 présente les notions générales sur l'aspect de gestionnaire de version, il décrit les protocoles WebDAV et DeltaV ainsi que le logiciel Subversion qui offre une implémentation du protocole DeltaV. Dans le chapitre 3, nous abordons des possibilités d'intégration de gestionnaire de versions dans le gestionnaire de fichiers, ainsi qu'une partie de réalisation qui permet de choisir entre les approches présentées. Ce chapitre 3 contient également une description des interfaces de logiciel après l'intégration.
Le chapitre 4 présente des aspects de sécurité de Apache et Subversion et l'association entre les deux. Le rapport se termine par des conclusions, une bibliographie et une annexe qui décrit l'intégration du support de subversion dans PicoLibre. NGO Van Cong – Promotion 10 – IFI 8 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif Chapitre 2: État de l'art 1 Étude de cas pour la gestion de version Le contrôle de versions aide les développeurs à garder le contrôle du projet. Il est possible de chercher un bogue et d’appliquer un correctif à plusieurs versions de l’application.
Comme le système fonctionne aussi en mode déconnecté, il permet aux développeurs de travailler hors site. Grâce au contrôle de versions, il est possible de gérer de nombreux cas. Le contrôle de versions fournit maîtrise et flexibilité.1 Travail concurrent Considérons les développeurs d’un même projet. Avant de se mettre au travail, ils mettent à jour la copie locale du code source du projet par rapport au système central de contrôle de versions et vérifient que rien ne risque de poser problème pour leurs développements de la journée.
En l’occurrence, une des classes principales du système a été modifiée et le commentaire associé instille le doute dans l’esprit d’un des développeurs. La personne qui a fait cette modification est absente, c’est donc le système de contrôle de versions qui précise ce qui a été changé. Des variables d’instances ont été ajoutées, mais leurs valeurs par défaut ne semblent pas évoluer par la suite. Même si ces variables peuvent poser problème, cela ne gênera pas la journée de travail.
Notre développeur ajoute une nouvelle classe et quelques tests au système. Au fur et à mesure, il en informe le système de gestion des versions – les fichiers eux-mêmes ne seront transmis que lorsqu’il les aura validés. Quelques heures plus tard, le développeur termine la première partie d’une nouvelle fonctionnalité. Les tests ne posent pas de problème et rien n’est affecté dans le reste du code ; il transfère tout au système de contrôle de versions pour que les autres membres de l’équipe puissent y accéder.2 Correction de bogue Un bogue est signalé dans la version du logiciel utilisée chez un client : il faut le corriger d’urgence.
Le développeur affecté à cette tâche extrait la version correspondante sur son disque dur et dispose maintenant de deux copies locales du code source : le tronc commun (trunk), qui suit les développements principaux, et la version livrée au client. Grâce au système de contrôle de versions, il pose une marque (tag) sur son code source ; il en posera une seconde lorsque le bogue sera corrigé. Les marques servent à identifier les points saillants NGO Van Cong – Promotion 10 – IFI 9 TIEU LUAN MOI download : skknchat@gmail.com Intégration d'un gestionnaire de versions pour les documents dans le portail de travail collaboratif du développement du code. En les nommant de manière cohérente, il est facile de suivre ce qui a été modifié.
Il faut d’abord isoler le problème (ce que l’on fait par une série de tests) et en déterminer la cause – un bogue dans un logiciel livré à un client ne devrait pas arriver, il faut éventuellement en discuter en réunion d’équipe. Une fois le problème identifié, le développeur le corrige, puis il compile et teste le code. Il propage ensuite la modification dans le système de contrôle de versions et pose une marque pour indiquer que le bogue a été corrigé. Il reste une question : le bogue est-il encore présent dans la version de développement du code ? Pour le vérifier, le plus simple est de soumettre cette version au test écrit pour le code livré.