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)
7. 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
42. Gestion des conflits
Get
V 0.53
V 0.54 !!
Dével.
Checkin?
Conflit !
Fusion
Checkin?
Succès !
V 0.55
#mstechdays
Code/developpement
43. 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
45. 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
46. Problème 1
Filet de sécurité
⇒ commit
⇒ mise en commun
#mstechdays
Code/developpement
47. 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é
52. Les VCS client - serveur
Serveur
Bob
#mstechdays
Tom
Léa
Code/developpement
53. Les DVCS (VCS distribués /
décentralisés)
Serveur
Bob
Léa
Bob
#mstechdays
Tom
Tom
Léa
Code/developpement
54. 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
55. Les DVCS (VCS distribués /
décentralisés)
• la plupart du temps !
Serveur
Bob
Léa
Bob
#mstechdays
Tom
Tom
Léa
Code/developpement
60. 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
61. 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
62. 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
63. 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
64. 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
65. 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
66. 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
67. 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
69. 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
70. 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
71. 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
72. 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
73. 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
74. 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
75. 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
76. 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é
77. 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
78. 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
79. 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
80. 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
81. 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
83. TFS 2013
Gestion de version
Éléments
de travail
Build
VCS :
TFVC
#mstechdays
DVCS :
Git
Code/developpement
…
84. TRAVAILLER AVEC GIT ET
TFS
Une évolution oui, une révolution non !
AU QUOTIDIEN
#mstechdays
Code/developpement
85. 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
86. 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
87. N’oublions pas de créer le projet d’équipe
• Dans TFS, tout se passe dans les projets
d’équipe
#mstechdays
Code/developpement
88. 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
89. 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
90. Initialisons notre dépôt TFS
• On synchronise notre dépôt local avec le
dépôt TFS
#mstechdays
Code/developpement
91. 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
92. 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
93. Et maintenant, collaborons !
• Les membres de l’équipe peuvent cloner le
dépôt TFS
#mstechdays
Code/developpement
94. 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
95. LE JEU DES 7 DIFFÉRENCES
#mstechdays
Code/developpement
97. 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
99. 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
101. 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
103. 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
104. LA FIN EST PROCHE
En conclusion
#mstechdays
Code/developpement
105. 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
106. 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
107. 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
108. 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
109. 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