Emmanuel Grolleau. Observatoire de Paris LESIA Service d Informatique Scientifique. Master 2 «Outils et Systèmes de l Astronomie et de l Espace»

Documents pareils
La magie de SVN. Découverte & usage du logiciel

Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Contrôle de versions et travail collaboratif. Organisation du travail collaboratif. Organisation du travail collaboratif

C.M. 1 & 2 : Prise en main de Linux

Motivations (many2many) Motivations (many2one) Sur le thème de la Version. La gestion de version. La gestion de configuration.

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Once the installation is complete, you can delete the temporary Zip files..

ESPACE COLLABORATIF SHAREPOINT

Serveur Subversion Debian GNU/Linux

SOMMAIRE. Comment se connecter?

Tutoriel Création d une source Cydia et compilation des packages sous Linux

HDDtoGO. Guide de l'utilisateur

Les systèmes de gestion de version

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

MANUEL UTILISATEUR KIWI BACKUP V 3

HTTP Commander. Table des matières. 1-Présentation de HTTP Commander

MANUEL D UTILISATION - Précis Poste de Traitement d Images 1 - Déconvolution

Introduction à Eclipse

CONTACT EXPRESS 2011 ASPIRATEUR D S

Comment sauvegarder ses documents

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

FlashWizard v4.5b PRO

Gestion des documents avec ALFRESCO

Tutoriel git. Régis Briant, Youngseob Kim & Dmitry Khvorostyanov. Table des matières. 1 Configurer git 2

Correspondances Windows-Linux

Restaurer des données

Planifier les rapports d

TP Git. Author : Cedric Dumoulin Date : 2 déc Rev : 9 Dec. 2014

CAPTURE DES PROFESSIONNELS

TP 1 Prise en main de l environnement Unix

TP1 - Prise en main de l environnement Unix.

Un outil open source de gestion de bibliographies

Insérer des images dans Base

Dans la série LES TUTORIELS LIBRES présentés par le site FRAMASOFT. Premiers pas avec WinPT (cryptographie sous Win) EITIC

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

Tutoriel code::blocks

Ecran principal à l ouverture du logiciel

Réparer un disque dur passé en RAW

Manuel d'installation de GESLAB Client Lourd

Déploiement OOo en environnement Windows Terminal Server

Création de Sous-Formulaires

ZOTERO Un outil gratuit de gestion de bibliographies

Initiation à Mendeley AUT2012

Le langage C. Séance n 4

Les tablettes et l'extranet Intermixt Mode d'emploi

Guide de l utilisateur Mikogo Version Windows

TD/TP 1 Introduction au SDK d Android

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

MANUEL UTILISATEUR SOPISAFE V 3.5

FICHIERS ET DOSSIERS

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

ECLIPSE ET PDT (Php development tools)

wxwidgets dans un environnement Microsoft Windows

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

FRITZ!Box Fon WLAN 7270

Differential Synchronization

Installation d un ordinateur avec reprise des données

Guide de mise à niveau pas à pas vers Windows 8 CONFIDENTIEL 1/53

Initiation au logiciel de gestion bibliographique Zotero

TD séance n 2c Mise à jour des Systèmes

Comment se connecter au VPN ECE sous vista

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Projet de développement

Configurer la supervision pour une base MS SQL Server Viadéis Services

Exporter des écritures. Importer des écritures. Depuis EBP Comptabilité.

Guide pour les chercheurs. Version 1.0

Publication dans le Back Office

Guide de prise en main de la solution NetExplorer

Édu-groupe - Version 4.3

Utiliser Subversion (SVN) avec Tortoise

Bon ben voilà c est fait!

Google Drive, le cloud de Google

Comment faire un Mailing A partir d une feuille Calc

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

MODE D EMPLOI OUTLOOK ADD-IN POUR SELECTLINE

2. Cliquez Contact Directory of Public Administration. 5. Tapez le mot de passe - Hello (pour OFPA). Changez le mot de passe en cas de

Les Enseignants de l Ere Technologique - Tunisie. Niveau 1

Le système de gestion de version Git et GitHub

Septembre 2012 Document rédigé avec epsilonwriter

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Storebox User Guide. Swisscom (Suisse) SA

Guide de l enseignant. pour le Passeport Sécurité. Mise à jour : 10 août 2015

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

EndNote Web. Quick Reference Card THOMSON SCIENTIFIC

TP 7, 8 & 9 : Installation et Gestion de GLPI et Télédéploiement SISR 1 HUBERT JULIEN LABBE RICHARD DAY MICKAEL DOGNY CHRISTOPHE

LES TOUT PREMIERS PAS

IBM SPSS Statistics Version 22. Instructions d'installation sous Windows (licence simultanée)

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

FileZilla. Sauvegarder son site Guppy à l aide de. Sommaire:

Gestion de projets. avec. Microsoft Office PROJECT 2003

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Guide de formation EndNote Web Interface EndNote Web

Avira Professional Security Migrer vers Avira Professional Security version HowTo

F O R M A T I O N S LOTUS NOTES. 8.5 Utilisateurs rue de la Bôle. E U R L. a u c a p i t a l d e

Scénario de prise en main DataCar CRM v2.3 Gamme SFA

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

Nettoyer Windows Vista et Windows 7

Transcription:

Emmanuel Grolleau Observatoire de Paris LESIA Service d Informatique Scientifique Master 2 «Outils et Systèmes de l Astronomie et de l Espace»

Pourquoi un outil de gestion de version? 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 2

Solution : utiliser un outil de gestion de version Permettre à plusieurs personnes de travailler en parallèle Partage intègre de fichiers Gérer les accès Indiquer les conflits Notifier les modifications Gérer les versions des composants Garantir traçabilité source à exécutable Revenir à une version antérieure 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 3

Permettre à plusieurs personnes de travailler en parallèle ET4 ET1 ET3 Dépôt ET2 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 4

Problème des mises a jour simultanées Programmeur #1 Environnement de travail de P#1 à t4 SYSTÈME A Programmeur #2 à t1 à t2 C CONFLIT!! Environnement de travail de P#2 à t3 SOLUTION Un "secrétaire" doit garder trace des copies multiples et synchroniser les mises à jour 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 5

Gérer les versions des composants Cas 1 : 1.1 1.2 1.3 2.1 2.2 1.3.1.1 1.3.1.2 Corrections effectuées sur V1.3 Cas 2 : 1.1 1.2 1.3 1.4 Nouvelles fonctionnalités Cas 3 : 1.1 1.2 1.3.1.1 1.3.1.2 1.3 1.4 2.1 Fusion des corrections et nouvelles fonctionnalités donnant naissance à une nouvelle souche V2.1 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 6

Les principes Espaces de travail dédiés aux utilisateurs Un espace de travail par utilisateur en local Chaque utilisateur fait ses modifications en local Dépôt contenant l ensemble des versions Serveur Garantissant l intégrité Ne pouvant être accédé que par les commandes de l outil Sécurité de gestion des accès Contenant l ensemble des versions successives 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 7

Un outil de gestion de version : Subversion Subversion est un logiciel de gestion de sources et contrôle de versions. Il est principalement utilisé pour maintenir le code source ou la documentation. Ses principales fonctionnalités sont : garder un historique des différentes versions des fichiers d'un projet permettre le retour à une version antérieure quelconque garder un historique des modifications permettre un accès à ces fichiers, en local ou via un réseau permettre à des utilisateurs distincts de travailler ensemble sur les mêmes fichiers 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 8

Notions générales Dépôt (Repository) Emplacement central où sont stockées les données relatives aux projets (Serveur) On y accède via une URL distante Ex : https://nomserveur/svn/repo1 Projets Répertoire situé à la racine du dépôt contenant les fichiers et dossiers du projet. Copie de travail Répertoire situé en local sur le poste utilisateur et qui contient une copie d un projet. Modification d un projet local avant d être importé. Révision Modification faite au dépôt Indicateur s incrémentant à chaque opération et permettant de revenir à une version donnée d un ou plusieurs fichiers 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 9

Exemple de dépôt (repository) Le Dépôt de la documentation du projet SORBET-BepiColombo (Mercure). /Doc_Sorbet (par défaut tous les acteurs du projet ont le droit en lecture) /Doc_Sorbet FHW FSW EGSE ESSAIS ASIC FPGA Model SW HW Les accès en écriture : Dekkali : Davy : Grolleau : All : Astier : Boughedada : 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 10

Opérations de base import : Permet de placer dans le dépôt des fichiers locaux existant ; Opération à ne réaliser qu une fois par projet ; Génération d un nouveau projet sur le dépôt. svn import --username groupexx <chemin_projet> <url_repository> -m "import initial» checkout : Permet de récupérer les fichiers existants au sein d un projet du dépôt ; Opération à ne réaliser qu une fois par projet ; Génération d une copie de travail svn co --username groupexx <url_repository> 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 11

Opérations de base update : Permet de synchroniser la copie de travail avec le dépôt ; Génération éventuel de conflits de version. svn update commit : Permet la mise à jour du dépôt à partir de la copie de travail ; Si le commit est accepté => une nouvelle révision ; Sinon il faut effectuer un update et résoudre les conflits éventuels afin d effectuer un nouveau commit. svn commit m «message de commit» 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 12

Scénario nominal 1) Import des fichiers existants dans le dépôt (initialisation du dépôt) > svn import <répertoire à importer> <url_repository_parent> -m "import initial" Pour importer trunk dans https://version-lesia.obspm.fr/repos/osae/groupes/groupexx : cd trunk/..; svn import trunk https://version-lesia.obspm.fr/repos/osae/groupes/groupexx/ -m "import initial" Ou cd <rep_parent>; svn import. https://version-lesia.obspm.fr/repos/osae/groupes/groupexx/ -m "import initial" 2) Check out du projet à partir du dépôt > svn co https://version-lesia.obspm.fr/repos/osae/groupes/groupexx 3) Dans le répertoire du projet, créer, supprimer ou renommer des fichiers ou des répertoires. > svn add file svn delete file1 svn move file1 file2 Retourner à l étape 2. Ou, si l on est prêt à diffuser ses modifications, passer à l étape 4 4) Commit de vos changements vers le dépôt. Retourner à l étape 2. > svn commit -m " message sur le commit " 5) Mettre à jour la copie locale depuis le dépôt (récupérer les modifications des autres développeurs) > svn update Une commande indispensable : svn help <nom de la commande> 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 13

Scénario nominal Programmeur #1 Environnement local de P#1 Fichier1 Fichier2 Chef de projet (CP) Environnement de travail de CP Fichier1 Fichier2 3. Modifications 4. Commit 2. Checkout 1. Import 5. Update Fichier1 Fichier2 Dêpôt (Repository) 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 14

Les conflits Programmeur #1 Programmeur #2 Environnement local de P#1 monfichier.c Ligne 1: int main() Ligne 2: { Ligne 3: printf(«hello»); 3. Modifications 4. Modifications monfichier.c #include <stdio.h> Ligne 1: int main() Ligne 2: Ligne 3: 5. Commit 6. Commit SVN : CONFLIT! Échec de la propagation (commit), détails : Fichier ou répertoire monfichier.c' obsolète ; mettre à jour 2. Checkout 1. Checkout monfichier.c Ligne 1: int main() Ligne 2: { Ligne 3: printf(«hello»); Dêpôt (Repository) 17/06/2016 Environnement local de P#2 Emmanuel Grolleau - Observatoire de Paris 15

Les conflits Programmeur #1 Environnement local de P#1 monfichier.c #include <stdio.h> Ligne 1: int main() Ligne 2: { Ligne3:printf(«Hello»);»); SVN : CONFLIT! Échec de la propagation (commit), détails : Fichier ou répertoire monfichier.c' obsolète ; mettre à jour 10. Update Programmeur #2 8. Gestion des conflits Conflit découvert dans monfichier.c'. Sélectionner : (p) report, (df) diff entier, (e) édite, (mc) mes conflits, (tc) autres conflits, (s) affiche toutes les options : 7. Update monfichier.c >>#include <stdio.h> Ligne 1: int main() <<Ligne 2: 2: { { <<Ligne3:printf(«Hello»); 9. Commit monfichier.c #include <stdio.h> Ligne 1: int main() Ligne 2: { Ligne3:printf(«Hello»);»); Dêpôt (Repository) 17/06/2016 Environnement local de P#2 Emmanuel Grolleau - Observatoire de Paris 16

Conflits : Eclipse, perspective «Team synchronising» Dans la fenêtre de gauche est affichée un navigateur dans lequel ne sont affichés que les fichiers différents de la version du serveur SVN. Les fichiers peuvent avoir trois types d icône : Une icône avec une flèche grise orientée vers la droite : Cela signifie que le fichier a été modifié en local (par vous) depuis le dernier commit. Si vos modifications sont correctes, il convient de faire un «Commit» sur ce fichier. Clic droit sur le fichier puis «Validez» dans le menu. Une icône avec une flèche bleue orientée vers la gauche : Cela signifie que le fichier a été modifié par quelqu un d autre depuis votre dernière mise à jour. Autrement dit, la version du fichier sur le serveur SVN est plus récente que votre version. Il faut dans ce cas mettre à jour le fichier. Clic droit sur le fichier puis cliquez sur «Mettre à jour» dans le menu. Une icône avec une double flèche rouge : Cela signifie que le fichier est en conflit avec la version du serveur SVN. Vous avez probablement modifié le fichier en même temps qu une autre personne. 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 17

Conflits 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 18

Conflits : Eclipse, perspective «Team synchronising» Il faut donc résoudre le conflit. Plusieurs options s offrent à vous. Soit vous décidez que votre version est la bonne et le travail effectué par l autre personne sera archivé. Clic droit sur le fichier puis «Remplacer et valider» dans le menu. Soit vous décidez que le travail effectué par l autre personne est le bon, votre travail sera archivé. Clic droit sur le fichier puis «Surcharger et mettre à jour» dans le menu. Soit vous décidez de joindre les modifications effectuées par l autre personne avec les vôtres. Ouvrez le fichier dans l éditeur de comparaison en double cliquant dessus. L éditeur de comparaison possède deux fenêtres, une pour le fichier local (à gauche), qui est utilisable pour modifier le fichier local et une fenêtre à droite pour le fichier distant (sur le serveur SVN) en lecture seule. 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 19

17/06/2016 Emmanuel Grolleau - Observatoire de Paris 20

Conflits : Eclipse, perspective «Team synchronising» Une fois que le fichier local a été modifié pour prendre en compte le travail des deux personnes, Enregistrer le fichier. Clic droit sur le fichier puis «Remplacer et valider» dans le menu. la perspective de synchronisation a une troisième fenêtre qui permet d afficher l historique d un fichier. Clic droit sur un fichier puis «Afficher l historique des ressources» 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 21

Les conflits suite Cas 2 : modifications incompatibles Ce type de conflit est à gérer manuellement. Subversion modifie le répertoire local du développeur en créant des fichiers supplémentaires : file : contient maintenant l'ensemble des modifications file.mine : contient le fichier file modifié par l'utilisateur file.r#old (où #old est le numéro de l'ancienne révision) : c'est le fichier de la base avant que l'utilisateur ne fasse ses propres modifications ; file.r#new (où #new est le numéro de la nouvelle révision) : c'est le fichier de la base le plus récent. L utilisateur modifie le fichier en accord avec l autre utilisateur et avertit le serveur que le conflit est résolu par la commande svn resolved. Ensuite, on peut soumettre les modifications par svn commit. 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 22

Principales fonctions svn checkout svn commit svn import svn resolved svn revert svn update svn cat svn diff svn info svn list svn log svn status svn add svn copy svn delete svn mkdir svn move récupérer le contenu de la base soumettre des modifications à la base importer un projet dans la base indiquer que les conflits ont été résolus annuler toute modification locale mettre à jour le répertoire local lire le contenu d'un fichier de la base regarder les différences entre des versions de la base obtenir des infos sur le réperoire local lister le contenu de la base voir les messages accompagnant chaque révision de la base afficher l'état des fichiers/dossiers du répertoire local ajouter un fichier/dossier dans l'arborescence de la base copier des fichiers/dossiers dans l'arborescence de la base supprimer des fichiers/dossiers de l'arborescence de la base créer un dossier dans l'arborescence de la base déplacer des fichiers/dossiers dans l'arborescence de la base 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 23

svn status With no arguments, it prints only locally modified items (no repository access) svn status --show-updates toto.c (ou svn status u) ' The item in your working copy is up-to-date. '*'A newer revision of the item exists on the server. '? Item is not under version control.! Item is missing 'A Item is scheduled for Addition. 'D Item is scheduled for Deletion. 'M Item has been modified. 'C Item is in conflict with updates received from the repository. 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 24

Tags et Branches : svn copy La commande svn copy sert à la fois pour la création de Tags et de branches Création d un Tag à partir de la branche principale (trunk) : svn copy https://xxx/osae/groupexx/trunk http://xxx/osae/groupexx/tags/test1-release-1.0 -m "Tagging the 1.0 release of the 'test1' project." Création d une branche à partir de la branche principale (trunk) : svn copy https://xxx/osae/groupexx/trunk http://xxx/osae/groupexx/branches/test1-dev1 -m «Branch the of the 'test1' project." 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 25

Fusion de branches Privilégier la ligne de commande Se placer à l intérieur du répertoire de la branche (cd test1-dev1) svn log --stop-on-copy => affiche les modifications depuis la création de la branche, noter la plus ancienne révision rxx Se placer à l intérieur de trunk (si nécessaire faire svn co https://version-lesia.obspm.fr/repos/osae/trunk/src/ Faire un svn upate noter la révision YY (il s agit de la dernière révision) Faire le merge (depuis le répertoire trunk) cd trunk svn merge --dry-run rxx:yy https://versionlesia.obspm.fr/repos/osae/branches/src-br1 ou svn-merge rxx:head Tester le process svn commit m Merged branch XXX into trunk 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 26

Bonnes pratiques Subversion (1) Interactions avec le dépôt Un «update» doit toujours précéder un «commit». Mettre à jour l ensemble de la copie locale. Mettre à jour la copie locale périodiquement. Ne versionner que les fichiers nécessaires au projet. Un «commit» doit représenter un tout. Chaque «commit» doit comporter un message représentatif de l objectif et de la raison des modifications envoyées et non un résumé des modifications 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 27

Bonnes pratiques Subversion (2) Gestion de projet Il existe des schémas recommandés concernant le choix de l arborescence d un dépôt. Exemple : /Projet /trunk /tags /branches trunk : Contient généralement la version la plus récente et en cours de développement. tags : Contient les différentes versions stables («releases») d un logiciel. branches : Contient des développements en parallèle. Liste officielle : http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-bestpractices.html 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 28

Client Subversion Windows Aucune configuration particulière n'est nécessaire pour utiliser Subversion, il suffit juste de se procurer un client qui permette de se connecter et de communiquer avec le dépôt. TortoiseSVN dans l explorateur Récupérer la version courante du projet (menu checkout) Working_copy est un nouveau dossier vide crée en local par l utilisateur. 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 29

Client Subversion Linux Il existe aussi des clients graphique svn sous Linux : RapidSVN (http://rapidsvn.tigris.org/), esvn (http://esvn.umputun.com/) (multiplateforme), Subversive (www.eclipse.org/subversive/ ) (plugin pour Eclipse), psvn.el (http://xsteve.nit.at/prg/vc_svn/) (mode pour Emacs)... Une liste complète de clients est disponible : http://fr.wikipedia.org/wiki/comparaison_des_clients_pour_ Subversion 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 30

Outils centralisés et distribués Il existe deux types principaux de logiciels de gestion de versions Les logiciels centralisés : un serveur conserve les anciennes versions des fichiers et les développeurs s y connectent pour prendre connaissance des fichiers qui ont été modifiés par d autres personnes et pour y envoyer leurs modifications. Subversion, CVS Les logiciels distribués : il n y a pas de serveur, chacun possède l historique de l évolution de chacun des fichiers. Les développeurs se transmettent directement entre eux les modifications, à la façon du peer-to-peer. GIT 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 31

Outil de gestion de version centralisé (CVS, SVN) 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 32

Outil de gestion de version distribué 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 33

Outil de gestion de version distribué : dans la pratique Dans la pratique, les logiciels distribués sont rarement utilisés comme sur le schéma précédent. Même lorsque les logiciels sont capables de fonctionner en mode distribué, on utilise très souvent un serveur qui sert de point de rencontre entre les développeurs. Le serveur connaît l historique des modifications et permet l échange d informations entre les développeurs, qui eux possèdent également l historique des modifications. Avantage : meilleure gestion des branches 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 34

Outil de gestion de version distribué : dans la pratique (GIT) 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 35

Sources SVN http://subversion.apache.org/ Manuel SVN : http://svnbook.red-bean.com/ Liste des clients SVN : http://fr.wikipedia.org/wiki/comparaison_des_clients _pour_subversion GIT https://openclassrooms.com/courses/gerer-son-codeavec-git-et-github 17/06/2016 Emmanuel Grolleau - Observatoire de Paris 36