Les systèmes de gestion de version



Documents pareils
Systèmes de gestion de code source

Le système de gestion de version Git et GitHub

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

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

Les logiciels de gestion de version exemple de GIT et application avec SmartGIT

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

Outils de développement collaboratif

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

Pro Git. Scott Chacon*

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

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

Part IV. Outils de dévéloppement pour le logiciel libre. Logiciel libre, une introduction. Support pour le dévéloppement collaboratif

Utiliser Subversion (SVN) avec Tortoise

Surveiller et contrôler vos applications à travers le Web

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

Le Client/Serveur avec Enterprise Miner version 4

Méthodes et outils employés pour développer des logiciels libres

Réplication des données

Gestion de documents

Groupe Eyrolles, 2006, ISBN :

Automatisation de l administration système

Serveur Subversion Debian GNU/Linux

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

Correspondances Windows-Linux

Serveur de travail collaboratif Michaël Hoste -

Impression de sécurité?

Le service FTP. M.BOUABID, Page 1 sur 5

Manuel d utilisation de la messagerie.

Modelio by Modeliosoft

Chapitre 1 Windows Server

G.E.D. Gestion Électronique des Documents

et Groupe Eyrolles, 2006, ISBN :

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Gestion répartie de données - 1

Configuration de SQL server 2005 pour la réplication

UltraBackup NetStation 4. Guide de démarrage rapide

Étude de l application DNS (Domain Name System)

Haute disponibilité avec OpenBSD

Outils logiciels SPC - une façon simple d optimiser les performances et la protection

Groupe Eyrolles, 2004 ISBN :

Partie publique / Partie privée. Site statique site dynamique. Base de données.

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Cette option est aussi disponible sur les clients Windows 7 sous la forme d un cache réparti entre les différentes machines.

Définition des Webservices Ordre de paiement par . Version 1.0

WEA Un Gérant d'objets Persistants pour des environnements distribués

Mise en place d un cluster. De basculement. Et DHCP Failover. Installation. Préparation. Vérification

Atelier Le gestionnaire de fichier

Modélisation et Gestion des bases de données avec mysql workbench

Implémentation des SGBD

LES OUTILS DU TRAVAIL COLLABORATIF

TP Bases de données réparties

Manuel d intégration API FTP SMS ALLMYSMS.COM

Sécurité des réseaux IPSec

Wolters Kluwer propose des solutions logicielles adaptées, quels que soient la taille et les besoins de votre cabinet!

Adopter une approche unifiée en matière d`accès aux applications

Allo Support et services électroniques

ASUS WebStorage Guide d utilisation

RM 4.0 RM 3.6 RM 3.5 RM 3.1 RM 3.0 RM 2.1 RM

Créer et partager des fichiers

La réplication sous SQL Server 2005

MATRICE DES FONCTIONNALITES

De EnvOLE 1.5 à EnvOLE 2. Document pour l administrateur

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Differential Synchronization

Plateforme PAYZEN. Définition de Web-services

Du 10 Fév. au 14 Mars 2014

Transactionnel et transactionnel réparti. Source R.CHEVANCE G.Gardarin

Transfert de fichiers (ftp) avec dreamweaver cs5 hébergement et nom de domaine. MC Benveniste

G.U.S.T.A.V. Gestion Unifiée des Systèmes de fichiers Transposée aux Appareillages Virtuels G U S T A V

Travailler à l'ensimag avec son matériel personnel

1 Introduction à l infrastructure Active Directory et réseau

1/15. Jean Bernard CRAMPES Daniel VIELLE

FusionInventory. I-Détails et explication de l installation de l agent FusionInventory

Configuration d'un annuaire LDAP

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Projet de Java Enterprise Edition

Installation de SharePoint Foundation 2013 sur Windows 2012

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Projet de développement

Module d anonymisation

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

CONFIGURATION DE LA LIBRAIRIE WEBUTIL (10g) Oracle Forms 10g

Placez vous au préalable à l endroit voulu dans l arborescence avant de cliquer sur l icône Nouveau Répertoire

Chapitre 4. Gestion de l environnement. Pré-requis. énoncé

Cours de Systèmes d Exploitation

L annuaire et le Service DNS

Conseils + Centraux téléphoniques + Téléphones + Helpdesk + Maintenance + Garantie

Update Procedure. GenIP 20i. Référence : EG_GenIP20i_1010_UP_001_FR.doc

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Diffuser un contenu sur Internet : notions de base... 13

Résolution de noms. Résolution de noms

TP1 - Prise en main de l environnement Unix.

Groupe Eyrolles, 2003, ISBN : X

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

CORBA. (Common Request Broker Architecture)

2 Formation utilisateur

Transcription:

Les systèmes de gestion de version Matthieu Herrb Envol 2010 http://homepages.laas.fr/matthieu/talks/envol10-sgv.pdf

Systèmes de gestion de version - kesako? Logiciel permettant de gérer l historique des modifications d un ensemble de documents. Typiquement : les codes source d un logiciel. Mais aussi : documentation site web fichiers de configuration etc.

Fonctions de base conserver un historique des modifications permettre travailler à plusieurs (verrous, gestion des conflits) permettre les modifications en parallèle (branches) garantir la sécurité (intégrité, disponibilité, confidentialité)

Comment faire? gestion manuelle de plusieurs copies des fichiers logiciels dédiés

Agenda 1 Concepts d un système de gestion de version Modèle client-serveur Modèle distribué 2 Utilisation locale d un système distribué 3 Utilisation distribuée 4 Conclusion

Diff et patch V2 V1 V1 patch + patch V2

diff texte Représentation des différences entre 2 versions d un fichier. diff(1) produit un diff de 2 fichiers texte : a/ s r c / s e r v e r. c +++ b/ s r c / s e r v e r. c @@ 222,7 +222,9 @@ r e s e t l o g ( v o i d ) #i f d e f HAVE SS LEN #d e f i n e s o c k a d d r l e n ( s ) s. s s l e n #e l s e #d e f i n e s o c k a d d r l e n ( s ) s i z e o f ( s ) +#d e f i n e s o c k a d d r l e n ( s ) ( s. s s f a m i l y == AF INET6? \ + s i z e o f ( s t r u c t s o c k a d d r i n 6 ) \ + : s i z e o f ( s t r u c t s o c k a d d r i n ) ) #e n d i f v o i d

commande patch patch : Pièce qui permet de passer d une version à la suivante. patch(1) commande Unix qui utilise un diff comme entrée. Exemple : # patch -p1 -E < diff patch peut gérer des petites incohérences grâce au contexte

Concepts de base (1) Dépot (repository) Répertoire ou espace de stockage quelquonque: conserve l historique des modifications Révision Chaque état des données a un identificateur unique révision. Également appelée commit par abus de langage. A B C Séquence ordonnée. avec CVS: révision par fichier version du projet révision d un fichier!

Concepts de base (2) Branches G E F A B C D H

Gestion des branches Pour : corriger un problème sur une ancienne version développer plusieurs idées en parallèle gérer sa propre version d un logiciel fusionner après une divergence....

Concepts de base (3) Tags Marques symboliques sur une révision. Permettent de définir les versions du projet. Permettent de nommer des branches.

Travailler à plusieurs Pas de verrou sur les sources. Chacun a sa propre copie. Gestion des conflits: d abord intégrer les modifications des autres fusion automatique détection des conflits résolution à la main pas de nouveau commit avant résolution du conflit

Autres fonctions d un SGV Visualisation de l historique sous diverses formes Exécution automatique de scripts avant/après commit Tests de validation, Envoi d e-mail après commit. Annotation du code avec les contributions Recherche dichotomique de regressions Import/export vers d autres SGV...

Trois modèles de fonctionnement Local Fonctionne dans un système de fichiers local. Pas de réseau. SCCS, RCS,... Client/Serveur (ou centralisé) Un serveur centralise le dépot, accessible à distance. CVS Subversion Distribué Multiples copies du dépots, branches locales. bitkeeper, monotone, arch, darcs mercurial, git, bazaar

Client-serveur - principe Dépot Commit Update Update Update Commit Update Anne Denis Bernard Carole

Client-serveur - principe Dépot stocké dans un endroit partagé par le système de fichiers par un mécanisme réseau (rsh/ssh ou protocole dédié) Plusieurs copies de travail en parallèle : opérations de fusion. Nécessaire d avoir la connexion au dépot pour committer. Le tronc a une importance particulière : modèle très centralisé.

Systèmes distribués - principe Fabienne Commit pull push Commit pull Hélène pull push pull pull Commit Gérard Eric

Systèmes distribués - principe Plus de dépot centralisé Chaque développeur a sa copie avec ses branches privées Opérations push/pull : synchronisation avec les autres dépots. Simplification de la fusion de branches en gardant l historique des fusions. Influence sur la philosophie de développement : plus de liberté, mais risque de dispersion...

Politiques de management dans les systèmes distribués Un système distribué peut devenir anarchique : pas de notion de branche principale ou de référence chacun résoud les conflits à sa manière... nécéssite une politique : définir une branche de référence et nommer un responsable définir une nomenclature pour les branches partagées inciter les développeurs à merger leurs travaux

Agenda 1 Concepts d un système de gestion de version Modèle client-serveur Modèle distribué 2 Utilisation locale d un système distribué 3 Utilisation distribuée 4 Conclusion

Les éléments de base le dépot est dans un sous-répertoire du projet (exemple:.git/). les commits sont identifiés par un hash (généralement SHA-1) plutôt que par un numéro ordre pas clair... master désigne la branche principale. HEAD désigne le commit le plus récent de la branche courante

Utilisation locale Opérations élémentaires: init initialisation du dépot (une seule fois) add ajouter des fichiers commit enregistrer des modifications branch créer ou changer de branche active merge fusionner une branche cherry-pick applique un commit d une autre branche rebase ré-ordonner des commits d une autre branche

Commandes de visualisation de l état status affichage d un résumé de l état diff affichage des diffs des fichiers non commités log affichage de l historique des modifications show affichage d un commit particulier

L index de git Représente les modififications en attente de commit. 2 étapes : 1 ajouter les fichiers modifiés à l index (add,rm) 2 vider l index dans le dépot Il existe des raccourcis pour enchaîner les 2 pour aller vite. Pas d équivalent direct dans mercurial ou baazar.

Commits Ajoute un noeud en bout de la branche courante. A B C Contient: le diff avec la révision précédente pour les fichiers texte la nouvelle version complète pour les fichiers binaires des infos sur les attributs des fichiers commités (droits d accès) le nom et l adresse e-mail du committeur un message de journal en option, une signature numérique

Commits Ajoute un noeud en bout de la branche courante. A B C D Contient: le diff avec la révision précédente pour les fichiers texte la nouvelle version complète pour les fichiers binaires des infos sur les attributs des fichiers commités (droits d accès) le nom et l adresse e-mail du committeur un message de journal en option, une signature numérique

Branches A B C historique existant

Branches D A B C historique existant création d une branche

Branches D E A B C historique existant création d une branche commits dans la branche

Branches D E A B C F historique existant création d une branche commits dans la branche commit dans master

Branches D E A B C F G historique existant création d une branche commits dans la branche commit dans master fusion de la branche dans master

Branches D E H A B C F G historique existant création d une branche commits dans la branche commit dans master fusion de la branche dans master suite commit dans la branche

Branches D E H I A B C F G J historique existant création d une branche commits dans la branche commit dans master fusion de la branche dans master suite commit dans la branche etc...

Branches D E H I A B C F G J K historique existant création d une branche commits dans la branche commit dans master fusion de la branche dans master suite commit dans la branche etc...

Branches D E H I L A B C F G J K historique existant création d une branche commits dans la branche commit dans master fusion de la branche dans master suite commit dans la branche etc...

Fusion de branches Deux types de fusion: Fast-Forward si aucun recouvrement entre les 2 branches. True Merge si recouvrement, avec conflits potentiels. Si vraie fusion, plusieurs stratégies: par défaut recursive : 1 recherche récursive d un ancêtre commun, 2 fusion à partir de cet ancêtre.

Rebase Permet d éviter trop de merges pour une branche simple non partagée A B Commits existants

Rebase Permet d éviter trop de merges pour une branche simple non partagée C D E A B Commits existants Branche de développement

Rebase Permet d éviter trop de merges pour une branche simple non partagée C D E A B F G Commits existants Branche de développement Commits dans master

Rebase Permet d éviter trop de merges pour une branche simple non partagée A B F G Commits existants Branche de développement Commits dans master Début rebase : enlève les commits de la branche

Rebase Permet d éviter trop de merges pour une branche simple non partagée C D E A B F G Commits existants Branche de développement Commits dans master Début rebase : enlève les commits de la branche Fin rebase : recrée les commits à partir du HEAD de master

Agenda 1 Concepts d un système de gestion de version Modèle client-serveur Modèle distribué 2 Utilisation locale d un système distribué 3 Utilisation distribuée 4 Conclusion

Opérations Dépot distant Principe: suivi des dépots distants dans des branches spécifiques. clone copie initiale d un dépot distant fetch récupération des commits du dépot distant pull fetch + merge de la branche courante push transferts de commits vers un dépot distant

Dépot distant Dépot distant A B C D master

Dépot distant Dépot distant A B C D master clone Dépot local A B C D origin/master master

Dépot distant - suivi des branches les branches du dépot distant apparaissent avec le préfixe origin/ par défaut (configurable) après un clone la branche master suit automatiquement origin/master la création d une branche avec le même nom qu une branche distante configure automatiquement le suivi lors d une opération de push ou pull toutes les branches suivies sont fusionnées et synchronisées.

Dépot distant - pull Enchaîne 2 opérations: 1 fetch récupère les commits du dépot distant et les applique aux branches origin/ (Fast Forward). 2 merge origin/branch fusionne la branche distante suivie dans la branche locale. Alternative: pull rebase : après le fetch, rebase les commits de la branche locale

Dépot distant - push seuls les push qui se fusionnent en Fast Forward sont autorisés par défaut (sinon: perte de l historique). si Fast Forward pas possible : faire d abord un pull ( rebase) : rend le Fast Forward possible. spécifier le nom d une branche nouvellement créee localement pour la créer aussi dans le dépot distant.

Dépots distants - stratégies Dépot central dépot nu (pas de copie de travail des fichiers) similaire à SVN ou CVS chacun pousse ses commits Modèle distribué pas de push chacum pioche chez les autres les commits qui l intéressent un intégrateur qui centralise dans son dépot La version officielle.

Agenda 1 Concepts d un système de gestion de version Modèle client-serveur Modèle distribué 2 Utilisation locale d un système distribué 3 Utilisation distribuée 4 Conclusion

Conclusion Ne pas utiliser un SGV est une faute professionnelle... Choix d un système moderne : système distribué: git, mercurial. Commencer par une utilisation simple Committer souvent Importance des messages de commit Ne remplace pas le chef de projet

Questions?