Quand GIT rencontre TFS, que peut-on en attendre ?

Post on 04-Dec-2014

846 views 4 download

description

On parle de plus en plus de gestionnaire de version « distribué » (DVCS). Git en particulier devient le DVCS de référence, y compris dans les outils Microsoft (Visual Studio, TFS, CodePlex, et même Azure pour le déploiement). Nous reverrons l'évolution qu'ont suivi les gestionnaire de version, des prémices des VCS jusqu'aux DVCS, pour répondre à cette question : Pourquoi cet engouement envers les DVCS, en quoi sont-ils si différents de TFVC en usage professionnel ? Ensuite, nous verrons comment GIT s’intègre avec les autres fonctionnalités de Visual Studio 2013 et Team Foundation Server 2013 et ce que cela peut changer concrètement dans la manière de travailler avec Team Foundation Server. Speakers : François Bouteruche (Orange Business Services), Guillaume Collic (Sodewiva)

Transcript of Quand GIT rencontre TFS, que peut-on en attendre ?

Code/Developpement

Quand Git rencontre TFS,

que peut-on en attendre ?

Guillaume Collic & François Bouteruche

Code/developpement#mstechdays

FrançoisBouteruche

GuillaumeCollic

Casting

Code/developpement#mstechdays

• Architecte .NET et évangéliste ALM

• Administrateur Cloud TFS OBS• http://francoisbouteruche.wordpress.

com

• francois.bouteruche@orange.com

• @fbouteruche

François Bouteruche

Code/developpement#mstechdays

• Développeur et Coach Agile• Microsoft ALM MVP• http://www.guillaumecollic.com• gcollic@gmail.com• @gcollic• Indépendant

Guillaume Collic

Code/developpement#mstechdays

• 45 minutes, c’est court !• Vision globale• Pointeurs

Objectifs

Code/developpement#mstechdays

• Ce que l'on attend d'un gestionnaire de source (VCS)

• Réponses différentes des VCS distribués (DVCS) à ces attentes

• Travailler avec Git et TFS au quotidien• Pour aller plus loin

Plan

Code/developpement#mstechdays

Code/developpement#mstechdays

✔ Tests├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success

Code/developpement#mstechdays

✘ Tests 1 test failed├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success├✘ Test4 Failed

Code/developpement#mstechdays

✘ Tests 4 tests failed├✘ Test1 Failed├✘ Test2 Failed├✘ Test3 Failed├✘ Test4 Failed

Code/developpement#mstechdays

Code/developpement#mstechdays

Code/developpement#mstechdays

Code/developpement#mstechdays

CPOLD

Le gestionnaire de source le plus utilisé au monde

Code/developpement#mstechdays

CP OLD

src

✔ Tests├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success

Code/developpement#mstechdays

CP OLD

src old

✔ Tests├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success

Code/developpement#mstechdays

CP OLD

src old

✘ Tests 1 test failed├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success├✘ Test4 Failed

Code/developpement#mstechdays

CP OLD

src old

✘ Tests 4 tests failed├✘ Test1 Failed├✘ Test2 Failed├✘ Test3 Failed├✘ Test4 Failed

Code/developpement#mstechdays

CP OLD

old

Code/developpement#mstechdays

CP OLD

src

✔ Tests├✔ Test1 Success├✔ Test2 Success├✔ Test3 Success

Code/developpement#mstechdays

Code/developpement#mstechdays

• Un filet de sécurité pour revenir en arrière

Un VCS est

Code/developpement#mstechdays

Code/developpement#mstechdays

src

Code/developpement#mstechdays

src

Code/developpement#mstechdays

src livraison1 livraison2

Code/developpement#mstechdays

Code/developpement#mstechdays

• Un filet de sécurité pour revenir en arrière

• Un référentiel commun

Un VCS est

Code/developpement#mstechdays

Et là …

Code/developpement#mstechdays

Code/developpement#mstechdays

Mon travail !Écrasé !

Code/developpement#mstechdays

Outils dédiés

1990 1994 2000 2005 2014

CVS

TFVC( )

Code/developpement#mstechdays

VCS client – serveur (centralisé)

Serveur

Bob Tom Léa

Code/developpement#mstechdays

Serveur

Commandes de bases

V 0.50

V 0.51

V 0.52

Bob

Get

Code/developpement#mstechdays

Commandes de bases

Bob

Get

V 0.51V 0.51

V 0.51

Serveur

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

Bob

V 0.51V 0.51

V 0.51

Serveur

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

Bob

V 0.51V 0.51

V 0.51

(Checkout)

Serveur

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

Bob

Checkin

V 0.51V 0.51

V 0.51

Serveur

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Serveur

Commandes de bases

V 0.50

V 0.51

V 0.52

Bob

Checkin

V 0.51V 0.51

V 0.51

V 0.53

Code/developpement#mstechdays

Commandes de bases

Bob

V 0.51V 0.51

V 0.51

Serveur

V 0.50

V 0.51

V 0.52

V 0.53

Code/developpement#mstechdays

Gestion des conflitsDével.Get V 0.53

Checkin? Conflit !

Fusion

V 0.55

Checkin? Succès !

V 0.54 !!

Code/developpement#mstechdays

• Un filet de sécurité pour revenir en arrière

• Un référentiel commun• Une aide à la gestion des conflits

Un VCS est

Code/developpement#mstechdays

Code/developpement#mstechdays

• Un filet de sécurité pour revenir en arrière

• Un référentiel commun• Une aide à la gestion des conflits

Un VCS est

Code/developpement#mstechdays

Filet de sécurité⇒ commit

⇒ mise en commun

Problème 1

Code/developpement#mstechdays

Problème 2Dével.Get V 0.53

Checkin? Conflit !

Fusion

V 0.55

Checkin? Succès !

V 0.54 !!

On a toujours pas commité ! Mise en commun sans filet

de sécurité

Code/developpement#mstechdays

Secret de codeurs

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html

Code/developpement#mstechdays

Secret de codeurs

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html

Code/developpement#mstechdays

Secret de codeurs

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html

Code/developpement#mstechdays

DVCS

Gestionnaire de source distribué

Code/developpement#mstechdays

Les VCS client - serveur

Serveur

Bob Tom Léa

Code/developpement#mstechdays

Bob Tom Léa

Les DVCS (VCS distribués / décentralisés)

Serveur

Bob Tom Léa

Code/developpement#mstechdays

• En théorie toutes les configurations sont possibles

• Mais ce n’est pas le plus important en entreprise !

Les DVCS (VCS distribués / décentralisés)

Dépôt officiel

DéveloppeurResponsable

module AResponsable module B

Azure

Code/developpement#mstechdays

Bob Tom Léa

• la plupart du temps !

Les DVCS (VCS distribués / décentralisés)

Serveur

Bob Tom Léa

Code/developpement#mstechdays

Dépôt distant

Commandes de bases

V 0.50

V 0.51

V 0.52

Clone

Code/developpement#mstechdays

Commandes de basesClone

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

Checkout

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Checkout

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Commit

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Commit

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

V 0.54

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Push

Dépôt distantV 0.50

V 0.51

V 0.52

Dépôt local

V 0.50

V 0.51

V 0.52

V 0.54

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Push

Dépôt local

V 0.50

V 0.51

V 0.52

V 0.54

Dépôt distantV 0.50

V 0.51

V 0.52

V 0.54

Code/developpement#mstechdays

Commandes de bases

V 0.51V 0.51

V 0.51

Dépôt local

V 0.50

V 0.51

V 0.52

V 0.54

Dépôt distantV 0.50

V 0.51

V 0.52

V 0.54

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

FetchCheckou

t

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Dével.Commit

intermédiaire

Modif A

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Dépôt de Léa

Modif B Modif A

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Dével.Commit

intermédiaire

Modif B Modif A

Modif C

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Modif B Modif A

Modif C

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Modif B Modif A

Modif C

Fetch

Modif B

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Modif B Modif A

Modif C

Modif B

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Modif B Modif A

Modif C

Modif B

MergeFusion

=> avec filets de sécurité

Code/developpement#mstechdays

Dépôt distant

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54 V 0.54

Modif B Modif A

Modif C

Modif B

Push

Fusion

Code/developpement#mstechdays

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54

Modif A

Modif C

Modif B

Push

Fusion

Dépôt distant

V 0.54

Modif A

Modif C

Modif B

Fusion

Code/developpement#mstechdays

Gestion des conflits

Dépôt local

V 0.51V 0.51

V 0.51V 0.54

Modif A

Modif C

Modif B

Fusion

Dépôt distant

V 0.54

Modif A

Modif C

Modif B

Fusion

Code/developpement#mstechdays

• Comme avant– Je pousse sur le

référentiel commun– Dès que possible– En respectant les

critères de mon organisation• Compilation• Tests unitaires• Qualité du code

Bob Tom Léa

DVCS : workflow organisationnel

Dépôt commun

Dépôt de Bob

Dépôt de

Tom

Dépôt de Léa

Code/developpement#mstechdays

• En plus, j’ai gagné le commit local– Autant de filet de sécurité

que voulu– Pas forcément à la cible

finale– Des commandes qui

deviennent quasi-instantanées car locales• Commit, log, diff…

Bob Tom Léa

DVCS : workflow personnel

Dépôt commun

Dépôt de Bob

Dépôt de

Tom

Dépôt de Léa

Code/developpement#mstechdays

Code/developpement#mstechdays

TFS 2013

Éléments de

travail

Gestion de version

VCS :TFVC

DVCS :Git

Build …

démo

Code/developpement#mstechdays

TRAVAILLER AVEC GIT ET TFSAU QUOTIDIENUne évolution oui, une révolution non !

Code/developpement#mstechdays

• Mon client préféré® veut faire des évolutions sur son application– il souhaite que je parte du code de l’application

existante– il souhaite que je travaille sur mes infrastructures de

développement– il souhaite pouvoir récupérer à tout moment le code

source et l’historique de son évolution

• Tiens, ça m’évoque les problèmes de réversibilité et de reprise de TMA !?

Au début, il y avait du code source

Code/developpement#mstechdays

• Dans le meilleur des cas, Mon client préféré® est déjà sous Git– Super, je vais juste à avoir à cloner son dépôt et

à l’intégrer dans mon dépôt TFS

• Dans le pire des cas, mon client utilise la méthode CP old et je vais créer moi-même un dépôt Git

Au début, il y avait du code source

Code/developpement#mstechdays

• Dans TFS, tout se passe dans les projets d’équipe

N’oublions pas de créer le projet d’équipe

Code/developpement#mstechdays

• On clone le dépôt distant en local

Récupérons le dépôt de Mon client préféré®

Code/developpement#mstechdays

• On reconfigure l’url d’origine du dépôt local avec celle du dépôt TFS

Initialisons notre dépôt TFS

Code/developpement#mstechdays

• On synchronise notre dépôt local avec le dépôt TFS

Initialisons notre dépôt TFS

Code/developpement#mstechdays

• Dans la base de données SQL Server !• L’intégration de Git avec TFS est

transparente du point de vue du plan de sauvegarde

• L’intégralité du dépôt est sauvegardé– Dans SQL Server– Sur chaque poste ayant un clone du dépôt (!

Sécurité !)

Mais où est stocké mon dépôt TFS

Code/developpement#mstechdays

• Vous pouvez (devez ?) associez un work item– À votre commit

• Quand vous avez fini de développez une feature dans une branche c’est le moment de merger avec la branche master

• Vos collègues n’ont plus qu’à puller

Je commit, je push, tu pull

Code/developpement#mstechdays

• Les membres de l’équipe peuvent cloner le dépôt TFS

Et maintenant, collaborons !

Code/developpement#mstechdays

• N’ayez plus peur de faire des branches– Elles sont légères– Le merge est vraiment performant– Elles peuvent être locales (personne ne verra

que vous êtes branchés)– Elles peuvent être publiées pour partager

• N’hésitez plus à brancher chaque feature

Git et TFS, ça me branche !

Code/developpement#mstechdays

LE JEU DES 7 DIFFÉRENCES

Code/developpement#mstechdays

• TFVC– Get, checkout, …

• Git pur– Pull, checkout, commit, …

• Git dans Visual Studio– Sync, commit, …

=> Notions différentes

Le vocabulaire

Code/developpement#mstechdays

• Gated Check-In• Code Review• File History Annotation• My work• Source Control Explorer• Pas de multi-remote

Git dans VS ne permet pas encore tout

Code/developpement#mstechdays

FAIRE LE SAUT

Être outillé

Code/developpement#mstechdays

TFVC• Un seul gros dépôt de

source

• Des dossiers pour les différentes parties

• Mapping partiel de sous dossiers

• Pas de problème technique pour mettre de gros binaires

Git• Séparer en plusieurs petits

dépôts

• Pas de clone partiel : tout ou rien

• Pas de gros binaires

Structuration de vos (gros) projets

Code/developpement#mstechdays

Visual Studio Git Extensions

Attention aux faux-amis

Code/developpement#mstechdays

Git Extensions (ou d’autres, SourceTree, CLI, etc)

Très bien, mature et pédagogique pour les équipes habitués aux interfaces graphiques

• Rebase• etc

Code/developpement#mstechdays

Construisons un pont entre Git et TFVC

Code/developpement#mstechdays

• http://git-tfs.com• http://gittf.codeplex.com/

TFVCcentral

Ponts entre Git et TFVC

Checkin

Checkin

Checkin

Gitlocal

Commit

Commit

Commit

V 0.51V 0.51

V 0.51

Code/developpement#mstechdays

LA FIN EST PROCHE

En conclusion

Code/developpement#mstechdays

• François, habitué à TFVC et adepte des outils graphiques

• Guillaume, habitué à Git avant son intégration à VS, graphique ou CLI

Git & Visual Studio

Travaillent ensemble sur le même projet ,sans accroc, chacun avec ses pratiques

Code/developpement#mstechdays

• Nous n’avons pas parlé de– Rebase– Staging– Sous-modules– Bisect– Stash– Et plein d’autres choses

45 minutes, c’est court

Code/developpement#mstechdays

• Comprendre Git plus en profondeur– http://presentation-git.heroku.com par gitfr /

Sébastien Douche

• Site officiel et livre français gratuit– http://git-scm.com / http://git-scm.com/book/fr

• Dépôt Git en ligne gratuit– Visual Studio Online http://www.visualstudio.com

Pour aller plus loin

Code/developpement#mstechdays

Depuis votre smartphone sur :http://notes.mstechdays.fr

De nombreux lots à gagner toute les heures !!!Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les Techdays !

Donnez votre avis !

Code/developpement#mstechdays

• Comprendre Git plus en profondeur– http://presentation-git.heroku.com par gitfr /

Sébastien Douche

• Site officiel et livre français gratuit– http://git-scm.com / http://git-scm.com/book/fr

• Dépôt Git en ligne gratuit– Visual Studio Online http://www.visualstudio.com

Questions ?

© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Digital is business