Outils supportant le DEVeloppement, le déploiement et la maintenance collaborative des Applications (ODEVA) a) Systèmes de Contrôle de Versions (Source Control Management) Centralisés : svn Distribués : mercurial, git b) Plateformes de tests : JUnit, Selenium c) Outils de déploiement : maven d) Outils de qualité : sonar e) Intégration continue : hudson, jenkings f) Suivi intégré de projets : trac, redmine 1
Système de Contrôle de Versions Plusieurs développeurs travaillent ensemble sur le même projet Chacun dispose de sa copie locale Chacun met à disposition des autres les dernières modifications Co-développement, contrôle de distributions, maintenance. Evolution des changements subis par un ensemble de fichiers 2
Pourquoi le contrôle de versions? Garder (ad-hoc) différentes versions d'un même projet Chaque fichier est répliqué à chaque modification du projet Organisation et discipline très stricte Utilisation de systèmes de contrôle de versions Développeur déchargé de l'organisation de versions Optimisation de l'espace de stockage Utilisation de delta-encoding Edition simultanée d'un même fichier Gestion de conflits 3
Système de Contrôle de Versions Mise en oeuvre générale Une ou plusieurs machines gardent la version courante et l'historique d'un projet Un client se connecte à une machine dédiée afin de récupérer une copie intégrale de la dernière version - check out le client travaille sur sa copie et ultérieurement transmet les changements - check in/commit Note: le SCV/SCM n'accepte que des mises à jours sur la dernière version 4
Système de Contrôle de Versions check out check in SCV check out check in 5
Modèles de management SVC Systèmes de contrôle centralisé gère les conflits en utilisant: Blocage de fichier mécanisme Check-out/check-in Mixage de versions (version merging) 1 er check-in toujours réussi lors du 2 eme check-in l'on présente les différences au développeur 6
Glossaire SCV Trunk versions suivant la ligne principale de développement Branch différents lignes de développement du projet Tags branche du projet n'évoluant plus Head la dernière version/le dernier Commit Checkout création d'une copie locale Update mise à jour de la copie locale Merge Intégration des changements sur le même fichier Commit les modifications locales sont transmises au SCV Export crée une copie locale coupée du SCV Import copie (1 ere fois) un répertoire dans le SCV 7
Architectures SCV Centralisé Distribué - P2P Copie Locale Copie Locale Entrepôt pull/clone Check-Out Update Entrepôt central Entrepôt X Entrepôt Copie Locale Commit Copie Locale push Entrepôt Entrepôt 8 Merge
Architectures SCV Architectures client-server Revision Control System (1985) uniquement fichiers Concurrent Version Systems (1986) projets OpenCVS sécurité + contrôle d'accès + fichiers corrects SVN (2000-) Architecture distribuée Git (used by Linux) Mercurial (used by Mozilla et Sun) SVK SVN distribué http://en.wikipedia.org/wiki/comparison_of_revision_contrôle_software 9
CVS et SVN SVN reprend la plus part des fonctions de CVS + l'opération commit est atomique + suppression/déplacement des fichiers/dossiers + contrôle d'accès au niveau des répertoires + support pour tous les MIME types http://svnbook.red-bean.com/ - documentation http://subversion.tigris.org/ - distribution 10
Système de Contrôle de Versions : notions check out check out Copie Locale check in Entrepôt SCV central check in Copie Locale Dossier de travail Note : * Il peut y avoir dans le dossier de travail des fichiers/dossiers qui ne sont pas sous contrôle de version. Dossier de travail 11
SVN organisation Système de fichiers 3D Répertoire fichiers versions. Chaque révision a sa propre racine. Les fichiers sont stockés comme liens à leur dernière version 12
SVN qqs propriétés svn:mime-type retient le MIME type svn:ignore fichiers à ignorer (*.exe) svn:eol-style convertit les fins de lignes dans les fichiers texte svn:externals permet des check-out partiels de certains répertoires svn:needs-lock indique que l'édition du fichier implique la création d'un bloquage 13
SVN ligne de commande svn co svn://svnrepo/hellosite. (CheckOut) svn status svn diff file.xxx svn add file.yyy svn commit -m 'Ajout d'un fichier' svn status -u (prévoir les effets de l'update) svn update 14
Création et Accès au SVN Création de l'entrepôt svnadmin Accès à l'entrepôt En local : file:///path En reseau : svnserve port 3690 plain text or over SSH. svn://host/path access scheme svn+ssh://host/path scheme for SSH tunneling Sur le réseau à travers un serveur web par WebDAV en activant mod_dav_svn d'apache 2 http(s)://webserver/path 15
SVN modifications copie locale Le entrepôt doit en être informé Éviter de dupliquer les sources Utilisation de commandes SVN svn copy/cp svn move/mv svn rm/delete 16
SVN - outils associés SVNKit API Java pour interfaçage SVN Intégration avec Windows Explorer Tortoise SVN, Smart SVN Intégration avec IDEs Netbeans (Subversion plugin), Eclipse (Subeclipse) Microsoft Visual Studio (VisualSVN) Intégration avec Nautilus (Unix) Nautilus SVN WebSVN Online view of repository 17
SVN Exercices https://forge.fil.univ-lille1.fr/odeva/wiki/svnexo Manipulations en ligne de commande Manipulations avec NetBeans/Eclipse Créez votre propre SVN 18
SVN et Netbeans Checkout Team/Subversion/Checkout 19
SVN et Netbeans Checkout 20
SVN et Netbeans Checkout 21
SVN et Netbeans utilisation 22
Création d'entrepôts SVN Création d'entrepôt mkdir /home/user/myrepo/ svnadmin create /home/user/myrepo/ Structure physique d'un entrepôt myrepo/conf configuration & accès myrepo/db encodage des sources et D-coding myrepo/hooks automatisation / actions myrepo/locks Configuration d'accès - myrepo/conf/snvserv.conf [general] anon-access = read auth-access = write realm = My First Repository password-db = passwd 23
SVN limitations et problèmes SVN garde en local de données concernant les versions (répertoires.svn) Problème lorsque l'on souhaite travailler sur plusieurs branches Problème lorsque l'utilisateur modifient directement les.svn SVN n'informe les développeurs des nouvelles versions maj fréquentes SVNNotifier Tout le monde est directement concerné par tous les changements 24