1 © Fujitsu Canada On merge !!! Vincent Grondin Architecte de solution.NET MVP C#.NET Montreal User Group Leader Blog:

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

vendredi – le 1 mars Tu voudrais ton interro aujourd’hui ou Walton
Fonctions & procédures
1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
Les fractions.
Les Prepositions.
Pèses - tu la viande avant de la vendre?
Comment passer de direct à Or et plus ?
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
JXDVDTEK – Une DVDthèque en Java et XML
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Module d’Enseignement à Distance pour l’Architecture Logicielle
Initiation et perfectionnement à lutilisation de la micro-informatique Initiation à Microsoft Word 2008 Deuxième partie ©Yves Roger Cornil
Autorisations Utilisation eCATT
Plan de formation Chapitre 1 : Présentation de SAP
William Francis Amphithéâtre de lISTIL - CAMPUS DE LA DOUA Travailler Ensemble WIKI et BLOG: Outils Collaboratifs.
Intégration réfléchie de la calculatrice Expérimentation
Quel est le pronom? Unité 11 5e2 en / y Complétez! Répondez!
À.
PROGRAMME EDUCATIF POUR ELEVES EN CLASSE PRIMAIRE
Créer un premier questionnaire
Philosophie pour le vieil âge
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Le virus constructeur d‘Amour
LOGICIEL DE L'AMOUR!.
Développement d’applications web
Principes de communication
Une lettre personnelle
Écrit, animé et illustré par Sheila CartwrightTraduit par
Les verbes auxiliaires Avoir ou être ?? Choisissez! Cest un verbe Dr Mrs Vandertrampp? Cest un verbe réfléchi?
Où Dieu veut que je sois…
41 leçons de vie Music: snowdream Nov 2009 He Yan.
KAKI - Gestion budgétaire et comptable de la paye
Practice à de rien.
18/05/ Utiliser le cahier de texte en ligne avec lapplication SPIP Adresse du site du lycée :
Comment écrire une introduction une conclusion
1 Encoder les données. 2 Pour démarrer lencodage des données, cliquer sur « Les données »
Mauvaise configuration sécurité
fonctionnement de la classe
MICROSOFT POWER POINT Fais « Enter » Par Danièle Lippé.
Configuration de Windows Server 2008 Active Directory
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
La Saint-Valentin Par Matt Maxwell.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
1.1 LES VECTEURS GÉOMÉTRIQUES
Notre calendrier français MARS 2014
C'est pour bientôt.....
Veuillez trouver ci-joint
Questions des 4 carrés Prêts ? B A Regardez bien ce diagramme
Tout savoir sur la synchronisation des mails, contacts et calendrier sur Windows Phone Lire cette présentation en mode plein écran.
2 Industrialisation des développements sur SQL Server avec Visual Studio 2010 Mardi 8 Février – 17h30 Karim Zegour – Winwise Michel Perfetti – MVP VS.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Création et présentation d’un tableau avec Word 2007
CALENDRIER-PLAYBOY 2020.
Les sports. Après avoir visionné le clip, créé une liste de questions que tu peux demander à tes camarades de classe. Tu dois savoir la réponse à tes.
Centre d’échange d’informations sur la Convention sur la Diversité Biologique Bienvenue dans le cours sur l’ajout d’une page web sur un site web développé.
9 paires séries de 3 étuis ( n° 1 à 27 )
LE PLAN DE DIEU POUR MA VIE (III)
KIWAPP IS A B2B FULL-STACK APP-MANAGEMENT TOOL KIWAPP EN QUELQUES ETAPES Octobre 2014.
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Où Dieu veut que je sois…
Où Dieu veut que je sois… J’écoutais l’histoire d’un homme d’affaires que je ne connais pas, mais je savais que Dieu voulait que j’écoute son histoire.
La partouze de D.S.K Mettre le son..
Transcription de la présentation:

1 © Fujitsu Canada On merge !!! Vincent Grondin Architecte de solution.NET MVP C#.NET Montreal User Group Leader Blog:

2 © Fujitsu Canada Disclaimer ! Mes opinions Mes idées Mes expériences Mes trucs La réalité dun projet actuel, le bon et le mauvais …. plus Vos opinions Vos idées Vos expériences Vos trucs

3 © Fujitsu Canada Description du contenu Lexique Un merge cest… Les éléments dun merge réussi Ta branche, tes merges… Ma check list Scénario de merge fréquents Vidéos & Commentaires

4 © Fujitsu Canada Avant de commencer… Qui travail sur un projet comportant des merges? Qui a déjà fait des merges inter-branches (pas locaux)? Qui aime / aime pas faire des merges? Quels outils utilisez-vous pour vous aider? Avez-vous une recette ou vous y allez au pif?

5 © Fujitsu Canada Lexique

6 © Fujitsu Canada Lexique Code Base: Lentière totalité de votre code dans le source control Branch: Un point dans le temps à partir duquel vous « copiez » votre Code Base ou un partir de celui-ci Pull: Lors dun merge, amener le code de la source originale de la branche vers la destination. (typiquement vous intégrez les changements des autres à vos changements) Push: Lors dun merge, amener le code de la destination vers la source originale de la branche. (typiquement vous intégrez vos changements à ceux des autres)

7 © Fujitsu Canada Lexique 3 way diff merge: 3 versions pour refaire lhistoire de ce qui cest passé avec votre fichier La version dans la branche source qui a évolué La version dans la branche de destination qui a évolué La version du fichier au moment de créer la branche (ancêtre commun) Branch, Merge, Edit, Merge-Edit, Deleted

8 © Fujitsu Canada Un merge cest… Quest-ce quun merge? Pourquoi on merge?

9 © Fujitsu Canada Quest-ce quun merge? Cest linverse dun « Branch ». Quand une partie de code se sépare et évolue distinctement dans le temps dans votre source control, elle peut ou non être appelée un jour à être fusionnée en un seul tout de nouveau. Cest une des opérations que vous permet de faire votre outil de visualisation de différence à laide de votre source control. Q: Est-ce quon peut faire un merge sans source control? R: Est-ce quon peut se faire arracher des dents sans anesthésie, oui…

10 © Fujitsu Canada Pourquoi on merge? Vous avez fait un « Feature Branch » et le code est prêt à être ramener avec le reste de la solution. Vous voulez amener des correctif vers une livraison future. Résolution de conflits = micro merge

11 © Fujitsu Canada Les éléments dun merge réussi

12 © Fujitsu Canada Les éléments dun merge réussi Prendre son temps et le faire à tête reposée Faites-le par un DEV expérimenté du projet Ne pas hésiter à demander de laide Avoir les bons outils Avoir une bonne checklist éprouvée Ne pas se faire trop déranger Faites-le souvent et à des moments fixes Avertissez vos collègues avant et après un merge Soyez certain de votre coup avant de prendre action 3 way diff merge ou outil « Code Aware » Ne pas croire que 0 conflit = Go ! Allez-voir le résultat… Roulez vos unit tests (espérons que vous en avez?)

13 © Fujitsu Canada Les éléments dun merge réussi Attention aux éléments suivants: App.Config Text Templates (tt) Generateurs comme EDMX, DBML etc… Service References ou autres fichiers générés Scripts SQL (???) Fichiers de projet Fichiers de solution Noubliez pas de faire votre check-in COMPLET… SURTOUT, SURTOUT PAS DE CHERRY PICKING !!!

14 © Fujitsu Canada Ta branche, tes merges…

15 © Fujitsu Canada Ta branche, tes merges… Si je dois te faire une branche… Tu toccupes de tes merge (pull & push) Tu te crée ton build et tu répares tes builds rouges Tu pull souvent et je vais te faire des rappels Tu ne push pas avant davoir fait faire les tests par les testeurs (build) Tu push juste si tu as le GO Tu continue à faire tes pull régulier tant que tu nas pas le GO (testeurs)

16 © Fujitsu Canada Ma check list

17 © Fujitsu Canada Ma check list Créez-vous un clean TARGET Workspace Lock TARGET en Check-in (si gros merge) On ouvre pas la solution AVANT le merge Get Latest du TARGET branch (pas de la solution) Trouver le Changeset et NOTEZ-LE. Right click sur la SOURCE, faites « merge » Choisir le bon TARGET (même que workspace) Choisir la bonne option (attention à Latest vs Changeset) GO ! Trier conflits par nom en ordre croissant (WTF Vince????) Visionner tous les conflits (Auto Resolve Conscient) Ouvrir toutes les solutions

18 © Fujitsu Canada Ma check list Executez vos.TT ou Regénérez vos EDMX / DBML Refaire les Service Reference (update) Compilez votre solution Débuggez les erreurs de compilation Roulez vos unit tests Check-in avec pattern précis de commentaires (# Changeset) Le lock sera auto released lors du check-in Avertir vos collègues Demander des tests de régression

19 © Fujitsu Canada Scénario de merge fréquents Bug Fixing vs Refactoring Bug Fixing vs Fichier Effacé Config File vs Environnements Fichiers de solution

20 © Fujitsu Canada Bug Fixing vs Refactoring Branche : Iteration1 & Bug Fixing Branche : Iteration2 & Refactoring Classe Employe Méthode TrouverAge Fix 1 Fix 2 Fix 3 Refact 1

21 © Fujitsu Canada Bug Fixing vs Refactoring Avant le fix: Après le fix 3: Fix 3

22 © Fujitsu Canada Bug Fixing vs Refactoring Refactor 1 dans Iteration2 : Tout est beau on prend le target et on Check-in puisque le code nexiste plus? Quelles sont vos options? View Target History Annotate & Parler à la personne qui a fait le changement Refact 1

23 © Fujitsu Canada Bug Fixing vs Fichier Effacé Branche : Iteration1 & Bug Fixing Branche : Iteration2 & Refactoring Classe Employe Fix 1 Fix 2 Fix 3 Del. file

24 © Fujitsu Canada Bug Fixing vs Fichier Effacé TFS vous dit que le target est effacé et vous demande si vous voulez le ressusciter et le merger ou si vous le laissez comme effacé… On ressuscite le fichier et on merge dedans? On keep target et on fait rien? Annotate & Parler à la personne qui a fait le changement ou essayer de répliquer les changements vers la destination manuellement. Del. file

25 © Fujitsu Canada Config File vs Environnements Environnements et leur utilité DEV1 = Toujours le développement courant DEV2 = Toujours le support client et développement itération précédente Branche 1: Iteration1 dans environnement DEV1 Connection Strings pointent sur DEV1 Service references pointent sur DEV1 Infra pointe sur DEV1 (msmq, ADLDS, autre) Arrive litération 2… On crée la branche 2 à partir de la branche 1… La branche 2 devient notre développement courant donc tout est OK… On modifie les app.config de toute la branche 1 pour passer à DEV2…

26 © Fujitsu Canada Config File vs Environnements Au fil des jours… Les fichiers de config dans la branche 2 nont pas changé… Quelques bugs importants dans la branche 1 ont été corrigés… On veut avoir ses bug fix dans la branche 2… On fait nos merges fréquemment et aujourdhui on fait IT1 -> IT2… Le merge commence… Vous faites la commande merge… Vous réglez tous vos conflits… Vous rebuildez, vous faites rouler vos unit tests… Vous faites le check-in Quelques heures plus tard… Les devs ont des erreurs bizzares… ça a commencé par un dev, ensuite 2 et 3 puis maintenant cest toute léquipe qui est arrêtée… Tout semblait bien aller avant quils fassent un GET LATEST VERSION… On dirait que le schéma de DB est revenu à celui de IT1 !!! Ben non…

27 © Fujitsu Canada Fichier de solution Essayez mais… pas trop longtemps Typiquement très difficile à merger sans faire derreur Annotez la source et répliquez dans la destination Si les configurations changent (x86 vs AnyCPU ou autre): Ouvrez la solution source dans VS Faites « Keep target » dans votre conflit Ouvrez la solution target dans VS Répliquez dans le target ce qui est dans le config manager de la source

28 © Fujitsu Canada Vidéos et Commentaires

30 © Fujitsu Canada On merge !!! Vincent Grondin.NET Solution Architect C# MVP.NET Montreal User Group Leader Blog: