La gestion de configuration qui vous
            veut du bien
Faisons connaissance




               David Gageot
             CTO algodeal.com
            «The Crowd Sourced
            Quant Hedge Fund»

                 @dgageot
               javabien.net
Nous allons parler de...

                                Gestion
            Refactoring        de sources


  Gain
de temps


                                   Intégration
                                    continue
            Travail
           en équipe
...mais aussi de...




    Bottes                                  Yoda
   de Foin




                                    Sandwich
                                   au fromage
  Men
in Black
Ca vous va ?




               Photo: http://www.flickr.com/photos/91082225@N00/3271601712
Avant d’aller plus loin...
J’ai un aveux à faire. Je suis accro aux outils.




                                       Photo: http://www.flickr.com/photos/gregrk/1426969126/sizes/o/
Manifesto
for Agile Software Development
Git me fait gagner du temps
 Moins de portes fermées
   Moins de frictions
 Un peu de Magie parfois




             Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Attention à la Magie !




                         Photo: http://www.cartoonstock.com/lowres/iba0399l.jpg
Pas de temps à perdre ?
     Git en action




                          Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
mvn eclipse:eclipse ne fonctionne plus !
   Depuis quand ? Quel commit ?




                          Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
On pourrait tester tous les commits depuis le dernier




                                       Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/
Dichotomie :

La dichotomie (« couper en deux » en grec)
est, en algorithmique, un processus itératif ou
récursif de recherche où, à chaque étape, on
coupe en deux parties (pas forcément égales)
un espace de recherche qui devient restreint à
l'une de ces deux parties.

                                     Wikipedia
A la main, c’est quand même long




                     Photo: http://www.wallfizz.com/nature/plaine-et-prairie/2714-botte-de-foin-dans-un-champ-WallFizz.jpg
Surtout avec des branches




                            Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg
Git bisect
 (démo)




      Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
git bisect
Partageons quelques
      tours de magie
      « La gestion de
configuration sans serveur »
 « Le merge omniscient »
  « Le build incassable »




             Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Mais avant...
Oubliez tout ce que vous savez




              Photo: http://www.collider.com/uploads/imageGallery/Men_in_Black/men_in_black_movie_image_tommy_lee_jones_and_will_smith.jpg
Pas de retour arrière




                        Photo: http://www.reconnections.net/redblue_pill.jpg
« La gestion de configuration
        sans serveur »




           Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405
Utilisation personnelle              Vous
                                 savez presque
                                     tout !




        Mettre un répertoire local en
         gestion de configuration

                 Pas de serveur
                 Pas de service
              Pas d’administrateur
Utilisation personnelle


                 Quand ?
Avant d’éditer des fichiers de configuration
         Pour préparer une démo
      Avant de mettre à jour Eclipse
                     ...

                  Où ?
        Clef USB, Disque externe

    Permet de se faire la main sur Git
Partagé                 Ca y est,
                       vous savez
                         tout !




Partager un répertoire sur une
 machine ou un réseau local


   Faire une copie locale de
        tout l’historique

    Pousser/récupérer les
       modifications
Partagé




Partage de sources dans une équipe
 Pas de notion de maître / esclave

Chacun peut faire des modifications
   et récupérer celles des autres

       Pas d’administrateur
Cercles de confiance


       Référence
pull




                       Committer
Cercles de confiance




Mode Open Source : noyaux linux

      Pas de droits d’accès

      Pas d’administrateur

 Modèle pour une grosse équipe
Centralisé


             Créer un repository
                   central


                Publier des
               modifications


              Faire une copie
                   locale
Centralisé



           A la Subversion

Chaque clone connait tout l’historique

     Travail en mode déconnecté

           Backup gratuite
(Encore un administrateur de moins...)
Git Hub
Comme à la maison
Git permet de suivre son propre workflow




                              Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
Un vrai projet
vu avec l’outil Gource
       (démo)




           Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
«Le merge omniscient»




Photo: http://www.computerweekly.com/PhotoGalleries/235697/944_20_Cerebro-X-Men-Origins-Wolverine-Gadgets-and-Weapons.JPG
Faire un merge c’est difficile
     Frein au refactoring




                         Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg
Cas d’école

Modifier un fichier pendant qu’un
 autre développeur le renomme




       Casse tête assuré
Exemples



       Renommer tous les
            packages
        com.tech4quant
        en com.algodeal

    Découper un projet maven
        en sous projets




              Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Un vrai projet
vu avec l’outil Gource
       (démo)




           Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Sans code freeze
Un Build Manager dans la salle ?




                               Photo: http://flickr.com/photos/8459432@N03/3446187475
Keep it Simple Stupid
Pas besoin de plugin. Juste mv, vi, rm
«Le build incassable»




Photo: http://4.bp.blogspot.com/_OhGGUzXs2IY/SlcDgkq4riI/AAAAAAAAB3Y/5uoio0yUue8/s1600-h/Affiche+1.jpg
Intégration continue
Hudson, Cruise Control, Team City ?
Et si le build n’était jamais cassé ?
Juste un script
Un petit dessin...




        Partagé

                         Build puis Push

         Sync
Perso             Private Build
Plus de pause café imposée




                         Photo: http://farm3.static.flickr.com/2698/4041033176_80072af942.jpg
Cette présentation est loin d’être exhaustive


       add -p              checkout
                                             revert
         rebase -i         cherry-pick
diff
                 reset       filter-branch     stash
       hooks

Branches locales                      log
                             tig
                     tag                 git blame
 instaweb             whatchanged                 clean
«Git demain adopter tu dois, jeune Padawan»




                                 Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
Un peu de lecture
GitX
Git-svn




Passerelle bi-directionnelle
      vers Subversion

Permet de travailler sous git
tout en publiant dans SVN
Merci
Questions / Réponses

Git Agile France 2010

  • 1.
    La gestion deconfiguration qui vous veut du bien
  • 2.
    Faisons connaissance David Gageot CTO algodeal.com «The Crowd Sourced Quant Hedge Fund» @dgageot javabien.net
  • 3.
    Nous allons parlerde... Gestion Refactoring de sources Gain de temps Intégration continue Travail en équipe
  • 4.
    ...mais aussi de... Bottes Yoda de Foin Sandwich au fromage Men in Black
  • 5.
    Ca vous va? Photo: http://www.flickr.com/photos/91082225@N00/3271601712
  • 6.
    Avant d’aller plusloin... J’ai un aveux à faire. Je suis accro aux outils. Photo: http://www.flickr.com/photos/gregrk/1426969126/sizes/o/
  • 7.
  • 8.
    Git me faitgagner du temps Moins de portes fermées Moins de frictions Un peu de Magie parfois Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 9.
    Attention à laMagie ! Photo: http://www.cartoonstock.com/lowres/iba0399l.jpg
  • 10.
    Pas de tempsà perdre ? Git en action Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
  • 11.
    mvn eclipse:eclipse nefonctionne plus ! Depuis quand ? Quel commit ? Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
  • 12.
    On pourrait testertous les commits depuis le dernier Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/
  • 13.
    Dichotomie : La dichotomie(« couper en deux » en grec) est, en algorithmique, un processus itératif ou récursif de recherche où, à chaque étape, on coupe en deux parties (pas forcément égales) un espace de recherche qui devient restreint à l'une de ces deux parties. Wikipedia
  • 14.
    A la main,c’est quand même long Photo: http://www.wallfizz.com/nature/plaine-et-prairie/2714-botte-de-foin-dans-un-champ-WallFizz.jpg
  • 15.
    Surtout avec desbranches Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg
  • 16.
    Git bisect (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 17.
  • 18.
    Partageons quelques tours de magie « La gestion de configuration sans serveur » « Le merge omniscient » « Le build incassable » Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 19.
    Mais avant... Oubliez toutce que vous savez Photo: http://www.collider.com/uploads/imageGallery/Men_in_Black/men_in_black_movie_image_tommy_lee_jones_and_will_smith.jpg
  • 20.
    Pas de retourarrière Photo: http://www.reconnections.net/redblue_pill.jpg
  • 21.
    « La gestionde configuration sans serveur » Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405
  • 22.
    Utilisation personnelle Vous savez presque tout ! Mettre un répertoire local en gestion de configuration Pas de serveur Pas de service Pas d’administrateur
  • 23.
    Utilisation personnelle Quand ? Avant d’éditer des fichiers de configuration Pour préparer une démo Avant de mettre à jour Eclipse ... Où ? Clef USB, Disque externe Permet de se faire la main sur Git
  • 24.
    Partagé Ca y est, vous savez tout ! Partager un répertoire sur une machine ou un réseau local Faire une copie locale de tout l’historique Pousser/récupérer les modifications
  • 25.
    Partagé Partage de sourcesdans une équipe Pas de notion de maître / esclave Chacun peut faire des modifications et récupérer celles des autres Pas d’administrateur
  • 26.
    Cercles de confiance Référence pull Committer
  • 27.
    Cercles de confiance ModeOpen Source : noyaux linux Pas de droits d’accès Pas d’administrateur Modèle pour une grosse équipe
  • 28.
    Centralisé Créer un repository central Publier des modifications Faire une copie locale
  • 29.
    Centralisé A la Subversion Chaque clone connait tout l’historique Travail en mode déconnecté Backup gratuite (Encore un administrateur de moins...)
  • 30.
  • 31.
    Comme à lamaison Git permet de suivre son propre workflow Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
  • 32.
    Un vrai projet vuavec l’outil Gource (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 33.
    «Le merge omniscient» Photo:http://www.computerweekly.com/PhotoGalleries/235697/944_20_Cerebro-X-Men-Origins-Wolverine-Gadgets-and-Weapons.JPG
  • 34.
    Faire un mergec’est difficile Frein au refactoring Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg
  • 35.
    Cas d’école Modifier unfichier pendant qu’un autre développeur le renomme Casse tête assuré
  • 36.
    Exemples Renommer tous les packages com.tech4quant en com.algodeal Découper un projet maven en sous projets Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 37.
    Un vrai projet vuavec l’outil Gource (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 38.
    Sans code freeze UnBuild Manager dans la salle ? Photo: http://flickr.com/photos/8459432@N03/3446187475
  • 39.
    Keep it SimpleStupid Pas besoin de plugin. Juste mv, vi, rm
  • 40.
    «Le build incassable» Photo:http://4.bp.blogspot.com/_OhGGUzXs2IY/SlcDgkq4riI/AAAAAAAAB3Y/5uoio0yUue8/s1600-h/Affiche+1.jpg
  • 41.
  • 42.
    Et si lebuild n’était jamais cassé ?
  • 43.
  • 44.
    Un petit dessin... Partagé Build puis Push Sync Perso Private Build
  • 45.
    Plus de pausecafé imposée Photo: http://farm3.static.flickr.com/2698/4041033176_80072af942.jpg
  • 46.
    Cette présentation estloin d’être exhaustive add -p checkout revert rebase -i cherry-pick diff reset filter-branch stash hooks Branches locales log tig tag git blame instaweb whatchanged clean
  • 47.
    «Git demain adoptertu dois, jeune Padawan» Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
  • 48.
    Un peu delecture
  • 49.
  • 50.
    Git-svn Passerelle bi-directionnelle vers Subversion Permet de travailler sous git tout en publiant dans SVN
  • 51.