Gestion de source  CPOLD, SVN, GIT                     Guillaume COLLIC                    gcollic@gmail.com
Guillaume Collic           Acteur de l’agilité                                 Etc.@gcollic
Sondage• Gestion de version ?• SVN / TFS* ?• DVCS / Git / Mercurial / Bazaar ?* lorsque je parle ici de TFS, je ne parle q...
Plan• Rôles d’un VCS    – Les bases, mais important pour la suite•   Client-Serveur : SVN•   Distribué : Git•   En context...
Gestion de sourceRÔLES D’UN VCS
Vocabulaire• VCS  –Version Control System  –Gestionnaire de source  –Gestionnaire de version    • Ambigüe, source ou binai...
http://www.flickr.com/photos/26628378@N03/2988737872
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
Le gestionnaire de version le plus utilisé au mondeCPOLD
CP OLDsrc
CP OLDsrc   old
CP OLDsrc   old
CP OLDsrc   old
CP OLDold
CP OLDsrc
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
Un VCS est• Un filet de sécurité pour revenir en arrière
http://www.flickr.com/photos/26628378@N03/2988737872
http://www.flickr.com/photos/26628378@N03/2988737872
src
src
src   livraison1   livraison2
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
Un VCS est• Un filet de sécurité pour revenir en arrière• Un référentiel commun
Et là…
Mon travail, écrasé!
Outils dédiés• …• CVS (1990)   – /! ne pas confondre avec le sigle VCS• ClearCase (1992)• Visual SourceSafe (1994)• BitKee...
VCS client - serveur        ServeurBob      Tom      Léa
Commandes de bases             CheckoutServeur                   BobV 0.50V 0.51V 0.52V 0.53
Commandes de bases             CheckoutServeur                   BobV 0.50                        V 0.51                  ...
Commandes de basesServeur                   BobV 0.50                      V 0.51                       V 0.51            ...
Commandes de basesServeur                   BobV 0.50                      V 0.51                       V 0.51            ...
Commandes de bases             CommitServeur                   BobV 0.50                      V 0.51                      ...
Commandes de bases             CommitServeur                   BobV 0.50                      V 0.51                      ...
Commandes de basesServeur                   BobV 0.50                      V 0.51                       V 0.51            ...
Gestion des conflitsCheckout   V 0.54            Dével.                            Commit ?                V 0.55 !!      ...
Fusion de 2 versions
Fusion de 2 versionsavec l’ancêtre commun
Exemple d’historique
Un VCS est• Un filet de sécurité pour revenir en arrière• Un référentiel commun• Une aide à la gestion des conflits
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
Branches et tagsVincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
Branches et tagsVincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
Branches et tagsVincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
Subversion, « CVS Done Right »SVN
Gestionnaire de source• Un filet de sécurité pour revenir en arrière• Un référentiel commun• Une aide à la gestion des con...
SVN• Un filet de sécurité pour revenir en arrière• Un référentiel commun• Une aide à la gestion des conflits
Problème 1• Si je commit, je met en commun• Si je met en commun, je commitFilet de sécurité ⇒ commit ⇒ mise en commun
Problème 2Checkout   V 0.54                Dével.                                Commit ?                    V 0.55 !!    ...
Secret de codeurshttp://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
http://geekandpoke.typepad.com/geekandpoke/2010/10/being-a-code-made-easy-chapter-1.html
Distributed Version Control SystemGestionnaire de source distribuéDVCS
Les VCS client - serveur           Serveur  Client    Client   Client    de        de       de   Bob       Tom      Léa
Les DVCS            Dépôt           communDépôt       Dépôt     Dépôt  de          de       de Bob         Tom       Léa  ...
Les DVCSEn théorie toutes les configurations sont possibles                            Dépôt                           com...
Commandes de bases                 CloneDépôt distant   V 0.50   V 0.51   V 0.52   V 0.53
Commandes de bases                 CloneDépôt distant            Dépôt local   V 0.50                  V 0.50   V 0.51    ...
Commandes de basesDépôt distant          Dépôt local   V 0.50                V 0.50   V 0.51                V 0.51   V 0.5...
Commandes de bases                                     CheckoutDépôt distant          Dépôt local   V 0.50                ...
Commandes de bases                                     CheckoutDépôt distant          Dépôt local   V 0.50                ...
Commandes de basesDépôt distant          Dépôt local   V 0.50                V 0.50      V 0.51                           ...
Commandes de basesDépôt distant          Dépôt local   V 0.50                V 0.50      V 0.51                           ...
Commandes de bases                                     CommitDépôt distant          Dépôt local   V 0.50                V ...
Commandes de bases                                     CommitDépôt distant          Dépôt local   V 0.50                V ...
Commandes de bases                    PushDépôt distant              Dépôt local   V 0.50                    V 0.50      V...
Commandes de bases                    PushDépôt distant              Dépôt local   V 0.50                    V 0.50      V...
Commandes de basesDépôt distant          Dépôt local   V 0.50                V 0.50      V 0.51                           ...
Gestion des conflits                 Clone                 CheckoutDépôt distant            Dépôt local   V 0.54          ...
Gestion des conflitsDépôt distant           Dépôt local   V 0.54                 V 0.54       V 0.51                      ...
Gestion des conflitsDépôt distant           Dépôt local   V 0.54                 V 0.54             V 0.51                ...
Gestion des conflits   Dépôt distant           Dépôt local         V 0.54              V 0.54       V 0.51                ...
Gestion des conflitsDépôt distant           Dépôt local   V 0.54                 V 0.54           V 0.51                  ...
Gestion des conflitsDépôt distant           Dépôt local   V 0.54                 V 0.54       V 0.51                      ...
Gestion des conflits                 FetchDépôt distant                 Dépôt local   V 0.54                 V 0.54       ...
Gestion des conflitsDépôt distant                Dépôt local   V 0.54                V 0.54                V 0.51         ...
Gestion des conflitsDépôt distant                Dépôt local   V 0.54                V 0.54                        V 0.51 ...
Gestion des conflits                  PushDépôt distant                 Dépôt local   V 0.54                 V 0.54       ...
Gestion des conflits                         Push    Dépôt distant                    Dépôt local V 0.54                  ...
Gestion des conflits         Dépôt distant                             Dépôt local      V 0.54                            ...
Rappel du problème       avec un VCS Client-Serveur• Si je commit, je met en commun• Si je met en commun, je commitCe que ...
Avec un DVCS• Je commit en local à mon rythme  – Pas forcément à la cible final des critères de mon    organisation• Avec ...
Avec un DVCS• Je pousse mes modifications sur le dépôt  commun au bon moment• Je vérifie que mes sources respectent les  c...
Exemple d’historique
Fusion systématique de 2 versions     avec l’ancêtre commun
© 2011 - 2012, All The Memes LLC. All Rights Reserved.
"the stupid content tracker"GIT
Historique des DVCS seuls•   …•   BitKeeper (1998)•   Monotone (2000)•   Mercurial (2005)•   Bazaar (2005)•   Git (2005)• ...
Origine de git :gestion de source du noyau libre Linux• BitKeeper jusqu’en 2005   – propriétaire (!)• Révocation de la lic...
“Take CVS as an example    of what not to do;  if in doubt, make theexact opposite decision”
• Une transformation dans le monde open  source
Déploiement en continu• Hébergeurs supportant le « push » d’un  commit git sur leur serveur git, qui déclenche  chez eux  ...
Authentification et gestion des droits ?• Ce n’est pas son rôle  – il délègue aux spécialistes     •   SSH     •   Gitolit...
DISCLAIMER : SubjectifRETOUR D’EXPÉRIENCE
SVN / TFS• Contexte professionnel
Git : contexte personnel progressif          depuis quelques années•   Articles•   Livres•   Conférences•   Mise en pratiq...
Git : contexte professionnel               depuis un an• Mis en place sur un projet pour un client  – Équipe habitué aux i...
Git ExtensionsTrès bien, mature et pédagogique pour les équipes habitués aux interfaces graphiques
Contexte agile• Hygiène du code  – Commits fréquents  – Commits propres et unitaires• Livraisons fréquentes• Équipe auto-o...
Livraison fréquenteSi serveur central hors service (panne matérielle, coupure réseau, erreur de manipulation…), en moyenne...
Autonomie de l’équipe          Si serveur central surchargé, devenant lent• Centralisé (svn, …)            • Décentralisé ...
Revoir les choix techniques Structuration de la gestion de version sur des portefeuilles de                             pr...
Ce que j’entend            dans une équipe svn• $#?!! de gestionnaire de version• Oh non ! Bob a encore commité avant moi ...
Ce que j’entend            dans une équipe git• Git, c’est magique !• Ça marche quand même vachement bien leur  truc…• Nan...
Opérations quotidiennes et triviales         (moins de 1 minute)• SVN   – Checkout   – Commit ? (conflits…)   – Surtout pa...
CP OLD, SVN, et GIT• CP OLD est évidemment impossible sur le long  terme• SVN ne remplace pas entièrement CP OLD !   – Je ...
Aucun mur ?• Une exception  – Les sous modules, le seul « mur » que l’on ce soit    pris     • Au point d’entacher le rest...
Alors, choisissons git ?• Hobby ou Open-Source    – Oui, nouvelle référence devant svn, mercurial, bazaar, ou TFS• Pro : Ç...
Pointeurs• Pour approfondir Git plus longuement http://presentation-git.heroku.com
gcollic@gmail.com / @gcollicDES QUESTIONS ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
Prochain SlideShare
Chargement dans…5
×

En quoi git serait plus agile que svn ?

4 042 vues

Publié le

Support de la session "En quoi git serait plus agile que svn ?" à Agile Tour 2012

Publié dans : Technologie
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 042
Sur SlideShare
0
Issues des intégrations
0
Intégrations
556
Actions
Partages
0
Téléchargements
109
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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 sourceRÔ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 mondeCPOLD
  11. 11. CP OLDsrc
  12. 12. CP OLDsrc old
  13. 13. CP OLDsrc old
  14. 14. CP OLDsrc old
  15. 15. CP OLDold
  16. 16. CP OLDsrc
  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 ServeurBob Tom Léa
  30. 30. Commandes de bases CheckoutServeur BobV 0.50V 0.51V 0.52V 0.53
  31. 31. Commandes de bases CheckoutServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53
  32. 32. Commandes de basesServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53
  33. 33. Commandes de basesServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53
  34. 34. Commandes de bases CommitServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53
  35. 35. Commandes de bases CommitServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53V 0.54
  36. 36. Commandes de basesServeur BobV 0.50 V 0.51 V 0.51 V 0.51V 0.51V 0.52V 0.53V 0.54
  37. 37. Gestion des conflitsCheckout 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 versionsavec 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 tagsVincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
  44. 44. Branches et tagsVincent Driessen blog post : http://nvie.com/archives/323 (CC BY-SA)
  45. 45. Branches et tagsVincent 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 commitFilet de sécurité ⇒ commit ⇒ mise en commun
  50. 50. Problème 2Checkout 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 codeurshttp://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 SystemGestionnaire 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 communDépôt Dépôt Dépôt de de de Bob Tom Léa (la plupart du temps)
  57. 57. Les DVCSEn 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 CloneDépôt distant V 0.50 V 0.51 V 0.52 V 0.53
  59. 59. Commandes de bases CloneDé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 basesDé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 CheckoutDé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 CheckoutDé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 basesDé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 basesDé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 CommitDé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 CommitDé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 PushDé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 PushDé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 basesDé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 CheckoutDé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 conflitsDé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 conflitsDé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 ADépôtde Léa
  74. 74. Gestion des conflitsDé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 conflitsDé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 FetchDé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 conflitsDé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 conflitsDé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 PushDé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.51Modif 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 FusionL’historique est clair, on voit les modifications de chacun avantfusion, 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 commitCe 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 theexact 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 : SubjectifRETOUR 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 ExtensionsTrè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équenteSi 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 / @gcollicDES QUESTIONS ?

×