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

Guillaume Collic & François Bouteruche

Code/Developpement
Casting

François
Bouteruche
#mstechdays

Guillaume
Collic
Code/developpement
François Bouteruche
• Architecte .NET et évangéliste ALM
• Administrateur Cloud TFS OBS
• http://francoisbouteruche.wordpress.com

• francois.bouteruche@orange.com
• @fbouteruche

#mstechdays

Code/developpement
Guillaume Collic
•
•
•
•
•
•

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

#mstechdays

Code/developpement
Objectifs
• 45 minutes, c’est court !
• Vision globale
• Pointeurs

#mstechdays

Code/developpement
Plan
• 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
#mstechdays

Code/developpement
#mstechdays

Code/developpement
Tests
├
Test1
├
Test2
├
Test3

#mstechdays

Success
Success
Success

Code/developpement
├
├
├
├

#mstechdays

Tests
Test1
Test2
Test3
Test4

1 test failed
Success
Success
Success
Failed

Code/developpement
├
├
├
├

#mstechdays

Tests
Test1
Test2
Test3
Test4

4 tests failed
Failed
Failed
Failed
Failed

Code/developpement
#mstechdays

Code/developpement
#mstechdays

Code/developpement
#mstechdays

Code/developpement
CPOLD
Le gestionnaire de source le plus utilisé au monde

#mstechdays

Code/developpement
CP OLD
Tests
├
Test1
├
Test2
├
Test3

Success
Success
Success

src
#mstechdays

Code/developpement
CP OLD
Tests
├
Test1
├
Test2
├
Test3

src
#mstechdays

Success
Success
Success

old
Code/developpement
CP OLD
├
├
├
├

Tests
Test1
Test2
Test3
Test4
src

#mstechdays

1 test failed
Success
Success
Success
Failed

old
Code/developpement
CP OLD
├
├
├
├

Tests
Test1
Test2
Test3
Test4
src

#mstechdays

4 tests failed
Failed
Failed
Failed
Failed

old
Code/developpement
CP OLD

old
#mstechdays

Code/developpement
CP OLD
Tests
├
Test1
├
Test2
├
Test3

Success
Success
Success

src
#mstechdays

Code/developpement
#mstechdays

Code/developpement
Un VCS est

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

#mstechdays

Code/developpement
#mstechdays

Code/developpement
src

#mstechdays

Code/developpement
src

#mstechdays

Code/developpement
src

#mstechdays

livraison1

livraison2

Code/developpement
#mstechdays

Code/developpement
Un VCS est
• Un filet de sécurité pour revenir en arrière
• Un référentiel commun

#mstechdays

Code/developpement
Et là …
#mstechdays

Code/developpement
#mstechdays

Code/developpement
Mon travail !
Écrasé !

#mstechdays

Code/developpement
Outils dédiés
(

CVS

1990
#mstechdays

1994

2000

TFVC

2005
Code/developpement

)

2014
VCS client – serveur (centralisé)
Serveur

Bob

#mstechdays

Tom

Léa

Code/developpement
Commandes de bases
Get
Serveur

Bob

V 0.50

V 0.51

V 0.52

#mstechdays

Code/developpement
Commandes de bases
Get
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

V 0.52

#mstechdays

Code/developpement
Commandes de bases
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

V 0.52

#mstechdays

Code/developpement
Commandes de bases
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

(Checkout)
V 0.52

#mstechdays

Code/developpement
Commandes de bases
Checkin
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

V 0.52

#mstechdays

Code/developpement
Commandes de bases
Checkin
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

V 0.52

V 0.53

#mstechdays

Code/developpement
Commandes de bases
Serveur

Bob

V 0.50
V 0.51
V 0.51
V 0.51

V 0.51

V 0.52

V 0.53

#mstechdays

Code/developpement
Gestion des conflits
Get

V 0.53

V 0.54 !!

Dével.

Checkin?
Conflit !

Fusion

Checkin?
Succès !
V 0.55
#mstechdays

Code/developpement
Un VCS est
• Un filet de sécurité pour revenir en arrière
• Un référentiel commun
• Une aide à la gestion des conflits

#mstechdays

Code/developpement
#mstechdays

Code/developpement
Un VCS est
• Un filet de sécurité pour revenir en
arrière
• Un référentiel commun
• Une aide à la gestion des conflits

#mstechdays

Code/developpement
Problème 1
Filet de sécurité
⇒ commit
⇒ mise en commun

#mstechdays

Code/developpement
Problème 2
Get

V 0.53

V 0.54 !!

Dével.

Checkin?
Conflit !

Fusion

Checkin?
Succès !
V 0.55
#mstechdays

Code/developpement

On a toujours pas
commité ! Mise en
commun sans filet de
sécurité
Secret de codeurs

#mstechdays

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
Code/developpement
Secret de codeurs

#mstechdays

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
Code/developpement
Secret de codeurs

#mstechdays

http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
Code/developpement
DVCS
Gestionnaire de source distribué

#mstechdays

Code/developpement
Les VCS client - serveur
Serveur

Bob

#mstechdays

Tom

Léa

Code/developpement
Les DVCS (VCS distribués /
décentralisés)
Serveur

Bob

Léa

Bob

#mstechdays

Tom
Tom

Léa

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

• En théorie toutes les configurations sont possibles
Dépôt officiel

Développeur

Responsable
module A

Azure

Responsable
module B

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

Code/developpement
Les DVCS (VCS distribués /
décentralisés)
• la plupart du temps !

Serveur

Bob

Léa

Bob

#mstechdays

Tom
Tom

Léa

Code/developpement
Commandes de bases
Clone
Dépôt distant
V 0.50

V 0.51

V 0.52

#mstechdays

Code/developpement
Commandes de bases
Clone
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement
Commandes de bases
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement
Commandes de bases
Checkout
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement
Commandes de bases
Checkout
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Commit
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

#mstechdays

Dépôt local

V 0.52

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Commit
Dépôt distant

Dépôt local

V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

V 0.52
V 0.54

#mstechdays

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Push
Dépôt distant

Dépôt local

V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

V 0.52
V 0.54

#mstechdays

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Push
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

V 0.52

V 0.54
#mstechdays

Dépôt local

V 0.54

Code/developpement

V 0.51
V 0.51
V 0.51
Commandes de bases
Dépôt distant
V 0.50

V 0.50

V 0.51

V 0.51

V 0.52

V 0.52

V 0.54
#mstechdays

Dépôt local

V 0.54

Code/developpement

V 0.51
V 0.51
V 0.51
Gestion des conflits
Fetch

Checkout

Dépôt distant
V 0.54

#mstechdays

Dépôt local
V 0.54

Code/developpement

V 0.51
V 0.51
V 0.51
Gestion des conflits
Dépôt distant
V 0.54

#mstechdays

Dépôt local
V 0.54

Code/developpement

V 0.51
V 0.51
V 0.51
Gestion des conflits
Dépôt distant

Dépôt local

V 0.54

V 0.54

V 0.51
V 0.51
V 0.51

Modif A

Dével.
Commit
intermédiaire

#mstechdays

Code/developpement
Gestion des conflits
Dépôt distant

Dépôt local

V 0.54

V 0.54

Modif B

Modif A

Dépôt
de Léa

#mstechdays

Code/developpement

V 0.51
V 0.51
V 0.51
Gestion des conflits
Dépôt distant

Dépôt local

V 0.54

V 0.54

Modif B

Modif A
Modif C

V 0.51
V 0.51
V 0.51

Dével.
Commit
intermédiaire

#mstechdays

Code/developpement
Gestion des conflits
Dépôt distant

Dépôt local

V 0.54

V 0.54

Modif B

Modif A
Modif C

#mstechdays

Code/developpement

V 0.51
V 0.51
V 0.51
Gestion des conflits
Fetch
Dépôt distant
V 0.54

Modif B

Dépôt local
V 0.54

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C

#mstechdays

Code/developpement
Gestion des conflits
Dépôt distant
V 0.54

Modif B

Dépôt local
V 0.54

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C

#mstechdays

Code/developpement
Gestion des conflits
Dépôt distant
V 0.54

Modif B

Dépôt local
V 0.54

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C
Fusion

#mstechdays

Code/developpement

Merge

=> avec filets de sécurité
Gestion des conflits
Push
Dépôt distant
V 0.54

Modif B

Dépôt local
V 0.54

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C
Fusion

#mstechdays

Code/developpement
Gestion des conflits
Push
Dépôt distant
V 0.54

Modif B

V 0.54

Modif A
Modif C
Fusion

#mstechdays

Dépôt local

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C
Fusion

Code/developpement
Gestion des conflits
Dépôt distant
V 0.54

Modif B

V 0.54

Modif A
Modif C
Fusion

#mstechdays

Dépôt local

Modif B

V 0.51
V 0.51
V 0.51
Modif A
Modif C
Fusion

Code/developpement
DVCS : workflow organisationnel
• 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
#mstechdays

Dépôt
commun

Dépôt
de Bob

Dépôt
de Tom

Dépôt
de Léa

Bob

Tom

Léa

Code/developpement
DVCS : workflow personnel
• 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 quasiinstantanées car locales
• Commit, log, diff…
#mstechdays

Dépôt
commun

Dépôt
de Bob

Dépôt
de Tom

Dépôt
de Léa

Bob

Tom

Léa

Code/developpement
#mstechdays

Code/developpement
TFS 2013
Gestion de version
Éléments
de travail

Build
VCS :
TFVC

#mstechdays

DVCS :
Git

Code/developpement

…
TRAVAILLER AVEC GIT ET
TFS
Une évolution oui, une révolution non !
AU QUOTIDIEN
#mstechdays

Code/developpement
Au début, il y avait du code source
• 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 !?

#mstechdays

Code/developpement
Au début, il y avait du code source
• 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
#mstechdays

Code/developpement
N’oublions pas de créer le projet d’équipe
• Dans TFS, tout se passe dans les projets
d’équipe

#mstechdays

Code/developpement
Récupérons le dépôt de Mon client
préféré®
• On clone le dépôt distant en local

#mstechdays

Code/developpement
Initialisons notre dépôt TFS
• On reconfigure l’url d’origine du dépôt local
avec celle du dépôt TFS

#mstechdays

Code/developpement
Initialisons notre dépôt TFS
• On synchronise notre dépôt local avec le
dépôt TFS

#mstechdays

Code/developpement
Mais où est stocké mon dépôt TFS
• 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é !)
#mstechdays

Code/developpement
Je commit, je push, tu pull
• 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
#mstechdays

Code/developpement
Et maintenant, collaborons !
• Les membres de l’équipe peuvent cloner le
dépôt TFS

#mstechdays

Code/developpement
Git et TFS, ça me branche !
• 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
#mstechdays

Code/developpement
LE JEU DES 7 DIFFÉRENCES

#mstechdays

Code/developpement
Le vocabulaire
• TFVC
– Get, checkout, …

• Git pur
– Pull, checkout, commit, …

• Git dans Visual Studio
– Sync, commit, …

=> Notions différentes
#mstechdays

Code/developpement
Git dans VS ne permet pas encore tout
•
•
•
•
•
•

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

#mstechdays

Code/developpement
FAIRE LE SAUT
Être outillé

#mstechdays

Code/developpement
Structuration de vos (gros) projets
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

#mstechdays

Git
• Séparer en plusieurs petits
dépôts
•

Pas de clone partiel : tout ou
rien

•

Pas de gros binaires

Code/developpement
Attention aux faux-amis
Visual Studio

#mstechdays

Git Extensions

Code/developpement
Git Extensions (ou d’autres, SourceTree, CLI, etc)
• Rebase
• etc

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

Code/developpement
Construisons un pont entre Git et TFVC

#mstechdays

Code/developpement
Ponts entre Git et TFVC
• http://git-tfs.com
• http://gittf.codeplex.com/
TFVC
central

Git
local

Checkin
Checkin

Commit

Checkin

#mstechdays

Commit

Commit

Code/developpement

V 0.51
V 0.51
V 0.51
LA FIN EST PROCHE
En conclusion

#mstechdays

Code/developpement
Git & Visual Studio
•

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

•

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

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

#mstechdays

Code/developpement
45 minutes, c’est court
• Nous n’avons pas parlé de
–
–
–
–
–
–

#mstechdays

Rebase
Staging
Sous-modules
Bisect
Stash
Et plein d’autres choses

Code/developpement
Pour aller plus loin
• 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
#mstechdays

Code/developpement
Donnez votre avis !
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 !

#mstechdays

Code/developpement
Questions ?
• 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
#mstechdays

Code/developpement
Digital is
business

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

Notes de l'éditeur

  • #14 Scénario + Images : F => mais Guillaume t’as pas backupé ton travail ?