Successfully reported this slideshow.
Your SlideShare is downloading. ×

En quoi git serait plus agile que svn ?

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Git vs SVN
Git vs SVN
Loading in …3
×

Check these out next

1 of 120 Ad

More Related Content

Viewers also liked (20)

Recently uploaded (20)

Advertisement

En quoi git serait plus agile que svn ?

  1. 1. Gestion de source CPOLD, SVN, GIT Guillaume COLLIC gcollic@gmail.com
  2. 2. Guillaume Collic Acteur de l’agilité Etc. @gcollic
  3. 3. Sondage • Gestion de version ? • SVN / TFS* ? • DVCS / Git / Mercurial / Bazaar ? * lorsque je parle ici de TFS, je ne parle que de la brique gestion de version de TFS, parmi toutes les autres briques de cette plateforme ALM complète
  4. 4. Plan • Rôles d’un VCS – Les bases, mais important pour la suite • Client-Serveur : SVN • Distribué : Git • En contexte agile ? • Retour d’expérience • Questions
  5. 5. Gestion de source RÔLES D’UN VCS
  6. 6. Vocabulaire • VCS –Version Control System –Gestionnaire de source –Gestionnaire de version • Ambigüe, source ou binaire ? –Gestionnaire de révision
  7. 7. http://www.flickr.com/photos/26628378@N03/2988737872
  8. 8. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  9. 9. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  10. 10. Le gestionnaire de version le plus utilisé au monde CPOLD
  11. 11. CP OLD src
  12. 12. CP OLD src old
  13. 13. CP OLD src old
  14. 14. CP OLD src old
  15. 15. CP OLD old
  16. 16. CP OLD src
  17. 17. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  18. 18. Un VCS est • Un filet de sécurité pour revenir en arrière
  19. 19. http://www.flickr.com/photos/26628378@N03/2988737872
  20. 20. http://www.flickr.com/photos/26628378@N03/2988737872
  21. 21. src
  22. 22. src
  23. 23. src livraison1 livraison2
  24. 24. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  25. 25. Un VCS est • Un filet de sécurité pour revenir en arrière • Un référentiel commun
  26. 26. Et là…
  27. 27. Mon travail, écrasé!
  28. 28. Outils dédiés • … • CVS (1990) – /! ne pas confondre avec le sigle VCS • ClearCase (1992) • Visual SourceSafe (1994) • BitKeeper (1998) • SVN (2000) – slogan « CVS Done Right » • TFS (2005) • Git (2005) • …
  29. 29. VCS client - serveur Serveur Bob Tom Léa
  30. 30. Commandes de bases Checkout Serveur Bob V 0.50 V 0.51 V 0.52 V 0.53
  31. 31. Commandes de bases Checkout Serveur Bob V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.53
  32. 32. 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
  33. 33. 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
  34. 34. Commandes de bases Commit Serveur Bob V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.53
  35. 35. Commandes de bases Commit Serveur Bob V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.53 V 0.54
  36. 36. 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 V 0.54
  37. 37. Gestion des conflits Checkout V 0.54 Dével. Commit ? V 0.55 !! Conflit ! Fusion Commit ? Succès ! V 0.56
  38. 38. Fusion de 2 versions
  39. 39. Fusion de 2 versions avec l’ancêtre commun
  40. 40. Exemple d’historique
  41. 41. Un VCS est • Un filet de sécurité pour revenir en arrière • Un référentiel commun • Une aide à la gestion des conflits
  42. 42. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  43. 43. Branches et tags Vincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
  44. 44. Branches et tags Vincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
  45. 45. Branches et tags Vincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
  46. 46. Subversion, « CVS Done Right » SVN
  47. 47. Gestionnaire de source • Un filet de sécurité pour revenir en arrière • Un référentiel commun • Une aide à la gestion des conflits
  48. 48. SVN • Un filet de sécurité pour revenir en arrière • Un référentiel commun • Une aide à la gestion des conflits
  49. 49. Problème 1 • Si je commit, je met en commun • Si je met en commun, je commit Filet de sécurité ⇒ commit ⇒ mise en commun
  50. 50. Problème 2 Checkout V 0.54 Dével. Commit ? V 0.55 !! Conflit ! On a toujours pas commité ! Mise Fusion en commun sans filet de sécurité Commit ? Succès ! V 0.56
  51. 51. Secret de codeurs http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
  52. 52. http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
  53. 53. http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
  54. 54. Distributed Version Control System Gestionnaire de source distribué DVCS
  55. 55. Les VCS client - serveur Serveur Client Client Client de de de Bob Tom Léa
  56. 56. Les DVCS Dépôt commun Dépôt Dépôt Dépôt de de de Bob Tom Léa (la plupart du temps)
  57. 57. Les DVCS En théorie toutes les configurations sont possibles Dépôt commun Dépôt Dépôt Dépôt de Bob de de (stagiaire de Tom) Tom Léa Mais ce n’est pas le plus important !
  58. 58. Commandes de bases Clone Dépôt distant V 0.50 V 0.51 V 0.52 V 0.53
  59. 59. Commandes de bases Clone 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.53 V 0.53
  60. 60. Commandes de bases 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.53 V 0.53
  61. 61. Commandes de bases Checkout 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.53 V 0.53
  62. 62. Commandes de bases Checkout Dépôt distant Dépôt local V 0.50 V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53
  63. 63. Commandes de bases Dépôt distant Dépôt local V 0.50 V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53
  64. 64. Commandes de bases Dépôt distant Dépôt local V 0.50 V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53
  65. 65. 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.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53
  66. 66. 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.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53 V 0.54
  67. 67. 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.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53 V 0.54
  68. 68. 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.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53 V 0.54 V 0.54
  69. 69. Commandes de bases Dépôt distant Dépôt local V 0.50 V 0.50 V 0.51 V 0.51 V 0.51 V 0.51 V 0.51 V 0.52 V 0.52 V 0.53 V 0.53 V 0.54 V 0.54
  70. 70. Gestion des conflits Clone Checkout Dépôt distant Dépôt local V 0.54 V 0.54 V 0.51 V 0.51 V 0.51
  71. 71. 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
  72. 72. 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
  73. 73. 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 B Modif A Dépôt de Léa
  74. 74. 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 B Modif A Modif C Dével. Commit intermédiaire
  75. 75. 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 B Modif A Modif C
  76. 76. Gestion des conflits Fetch Dépôt distant Dépôt local V 0.54 V 0.54 V 0.51 V 0.51 V 0.51 Modif B Modif B Modif A Modif C
  77. 77. 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 B Modif B Modif A Modif C
  78. 78. 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 B Modif B Modif A Modif C Fusion, avec Fusion filets de sécurité
  79. 79. Gestion des conflits Push Dépôt distant Dépôt local V 0.54 V 0.54 V 0.51 V 0.51 V 0.51 Modif B Modif B Modif A Modif C Fusion
  80. 80. Gestion des conflits Push Dépôt distant Dépôt local V 0.54 V 0.54 V 0.51 V 0.51 V 0.51 Modif B Modif A Modif B Modif A Modif C Modif C Fusion Fusion
  81. 81. 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 B Modif A Modif B Modif A Modif C Modif C Fusion Fusion L’historique est clair, on voit les modifications de chacun avant fusion, et quels décisions ont été prise lors de la fusion
  82. 82. Rappel du problème avec un VCS Client-Serveur • Si je commit, je met en commun • Si je met en commun, je commit Ce que je fais impact le reste de l’équipe. Soit je fais ce qui les arrange, soit ce qui m’arrange, mais pas les 2.
  83. 83. Avec un DVCS • Je commit en local à mon rythme – Pas forcément à la cible final des critères de mon organisation • Avec autant de filet de sécurité que nécessaire • Sans géner les autres C’est mon workflow personnel !
  84. 84. Avec un DVCS • Je pousse mes modifications sur le dépôt commun au bon moment • Je vérifie que mes sources respectent les critères éventuels de l’organisation avant de les pousser C’est le workflow organisationnel !
  85. 85. Exemple d’historique
  86. 86. Fusion systématique de 2 versions avec l’ancêtre commun
  87. 87. © 2011 - 2012, All The Memes LLC. All Rights Reserved.
  88. 88. "the stupid content tracker" GIT
  89. 89. Historique des DVCS seuls • … • BitKeeper (1998) • Monotone (2000) • Mercurial (2005) • Bazaar (2005) • Git (2005) • …
  90. 90. Origine de git : gestion de source du noyau libre Linux • BitKeeper jusqu’en 2005 – propriétaire (!) • Révocation de la licence – conflit avec un contributeur • Création par Linus Torvald – Auto hébergement : 5 j pour git, 1 an pour svn – V1.0 : 1 an pour git, 3,5 ans pour svn • Aujourd’hui (7 ans après) – Mature – Massivement adopté par la communauté Open Source – Supporté dans l’industrie – Supporté par Microsoft • TFS, Visual Studio, Azure, CodePlex, …
  91. 91. “Take CVS as an example of what not to do; if in doubt, make the exact opposite decision”
  92. 92. • Une transformation dans le monde open source
  93. 93. Déploiement en continu • Hébergeurs supportant le « push » d’un commit git sur leur serveur git, qui déclenche chez eux – Une compilation – Le lancement des tests – Le déploiement • en environnement de test ou de production
  94. 94. Authentification et gestion des droits ? • Ce n’est pas son rôle – il délègue aux spécialistes • SSH • Gitolite • GitLab • …
  95. 95. DISCLAIMER : Subjectif RETOUR D’EXPÉRIENCE
  96. 96. SVN / TFS • Contexte professionnel
  97. 97. Git : contexte personnel progressif depuis quelques années • Articles • Livres • Conférences • Mise en pratique sur des projets personnels
  98. 98. Git : contexte professionnel depuis un an • Mis en place sur un projet pour un client – Équipe habitué aux interfaces graphiques • Généralisé ensuite à toute la société – 7 développeurs – une dizaine de dépôts git • dont un transverse commun (sous-module git) – une gestion fine des droits par Gitolite
  99. 99. Git Extensions Très bien, mature et pédagogique pour les équipes habitués aux interfaces graphiques
  100. 100. Contexte agile • Hygiène du code – Commits fréquents – Commits propres et unitaires • Livraisons fréquentes • Équipe auto-organisée – Diminution des intermédiaires – Augmentation de l’autonomie • Accepter le changement – Revoir nos choix techniques si nécessaire • Déploiement en continu
  101. 101. Livraison fréquente Si serveur central hors service (panne matérielle, coupure réseau, erreur de manipulation…), en moyenne une fois par an en ce qui me concerne • Centralisé (svn, …) • Décentralisé (git, …) – Gros ralentissement – Contournement sur un dans l’équipe nouveau dépôt dans le • Suivi d’un merge énorme réseau lan, cloné depuis et complexe par personne n’importe quelle – Voir chômage technique machine de développeur (une commande) – Dramatique sur une itération courte ! – Pas d’impact client Et travail dans le train ;-)
  102. 102. Autonomie de l’équipe Si serveur central surchargé, devenant lent • Centralisé (svn, …) • Décentralisé (git, …) – On va ouvrir un ticket – Difficilement auprès des applicable, le serveur sysadmin, puis n’est quasiment pas attendre… sollicité (la majorité des commandes sont locales) – Si besoin, création d’un dépôt proxy interne à l’équipe
  103. 103. Revoir les choix techniques Structuration de la gestion de version sur des portefeuilles de projets • Centralisé (svn, …) • Git – Choix initial structurant – Commandes – Si modifié, perte extrêmement puissante d’historique permettant de fusionner 2 dépôts ou d’en séparer un en 2, en conservant juste l’historique correspondant à chaque moitié – (cas réel !)
  104. 104. Ce que j’entend dans une équipe svn • $#?!! de gestionnaire de version • Oh non ! Bob a encore commité avant moi ! • Boutades – « SVN c’est le mal »
  105. 105. Ce que j’entend dans une équipe git • Git, c’est magique ! • Ça marche quand même vachement bien leur truc… • Nan, tu peux faire ça avec git ??? • C’est trop beau pour être vrai, c’est pas possible – (dit à @nledez hier par un inconditionnel de svn)
  106. 106. Opérations quotidiennes et triviales (moins de 1 minute) • SVN – Checkout – Commit ? (conflits…) – Surtout pas les fusions de branches • Git – Checkout – Commit – Fusion de commits – Fusion de branches • Y compris croisées de l’une à l’autre et de l’autre à l’une – Création d’un nouveau dépôt – Création d’une branche – …
  107. 107. CP OLD, SVN, et GIT • CP OLD est évidemment impossible sur le long terme • SVN ne remplace pas entièrement CP OLD ! – Je veux juste créer un petit programme en 2h, je ne veux pas créer un serveur SVN pour ça – Etc. • Git, si. – Dans le même cas, j’ai le réflexe de créer un dépôt git : « Git init »
  108. 108. Aucun mur ? • Une exception – Les sous modules, le seul « mur » que l’on ce soit pris • Au point d’entacher le reste de la perception de git – La meilleure solution que j’ai trouvé à ce jour pour ce problème complexe – Mais mauvaise ergonomie de la fonctionnalité
  109. 109. Alors, choisissons git ? • Hobby ou Open-Source – Oui, nouvelle référence devant svn, mercurial, bazaar, ou TFS • Pro : Ça dépend de vos contextes – Politique de sécurité de la société • SSH • Disque dur crypté ? – Équipe • Volonté d’y aller – Délais • Si vous maitrisez svn depuis des années, et que vous avez bientôt une livraison, alors non – Etc • Transition douce ? – Git-svn et git-tfs • Ponts entre git et svn/tfs • DVCS alternatifs ? – Mercurial, Plastic-SCM, Kiln …
  110. 110. Pointeurs • Pour approfondir Git plus longuement http://presentation-git.heroku.com
  111. 111. gcollic@gmail.com / @gcollic DES QUESTIONS ?

×