La gestion de configuration qui vous
            veut du bien.
David Gageot

   CTO Algodeal.com
«The Crowd Sourced Quant
      Hedge Fund»

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

                    Gestion de
                   configuration
Gain de temps
                                  Travail en équipe


  Réactivité
                                  Robustesse

                Souplesse
...Mais aussi de

               Bottes de Foin

  Cinéma
                                Addiction


 Sandwich
au fromage                      Magie

                   Yoda
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
Git en un slide.




  Rapide                         Simple
 Distribué                      Complexe
Déconnecté                      Déroutant
 Complet                        En vogue
 Robuste                         Addictif
La concurrence en un slide.
Pas de temps à perdre ?
Commençons par une
démo de git en action.




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




 Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
Première approche :
 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
Git bisect en action.
      (démo)




            Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
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 ce que vous
                savez sur les outils de
               gestion de configuration.




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’administration.
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, DropBox.

    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.

(au sens noble du terme)




        Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
Dans la vraie vie
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
Renommer 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/
Modifier un fichier pendant qu’un
 autre développeur le renomme.




       Casse tête assuré.
Sans code freeze.

Un Build Manager dans
       la salle ?




             Photo: http://flickr.com/photos/8459432@N03/3446187475
Keep it Stupid Simple.
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é ?
Un petit dessin...




        Partagé

                         Build puis Push

         Sync
Perso             Private Build
Robustesse et gain de temps.



                   On peut travailler
                   pendant le build.

                     Pas de panne.

                 Build toujours vert ->
                 moins de complexité.
Cette présentation est loin d’être exhaustive


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

Branches locales                      log
                             tig
                     tag                 git blame
 instaweb             whatchanged                 clean
J’avais promis de parler
        de Yoda !
«Git demain adopter tu
 dois, tiot Padawan»




            Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
Pro Git.




http://progit.org/
GitX.
Git-svn.




Passerelle bi-directionnelle
     vers Subversion.

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

   CTO Algodeal.com
«The Crowd Sourced Quant
      Hedge Fund»

        @dgageot
      javabien.net

Git Chti JUG

  • 1.
    La gestion deconfiguration qui vous veut du bien.
  • 2.
    David Gageot CTO Algodeal.com «The Crowd Sourced Quant Hedge Fund» @dgageot javabien.net
  • 3.
    Nous allons parlerde... Gestion de configuration Gain de temps Travail en équipe Réactivité Robustesse Souplesse
  • 4.
    ...Mais aussi de Bottes de Foin Cinéma Addiction Sandwich au fromage Magie Yoda
  • 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.
    Manifesto for AgileSoftware Development
  • 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.
    Git en unslide. Rapide Simple Distribué Complexe Déconnecté Déroutant Complet En vogue Robuste Addictif
  • 11.
  • 12.
    Pas de tempsà perdre ? Commençons par une démo de git en action. Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
  • 13.
    mvn eclipse:eclipse ne fonctionneplus ! Depuis quand ? Quel commit a cassé le build ? Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
  • 14.
    Première approche : On pourrait tester tous les commits depuis le dernier. Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/
  • 15.
    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
  • 16.
    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
  • 17.
    Git bisect enaction. (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 19.
    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/
  • 20.
    Mais avant... Oubliez ce que vous savez sur les outils de gestion de configuration. Photo: http://www.collider.com/uploads/imageGallery/Men_in_Black/men_in_black_movie_image_tommy_lee_jones_and_will_smith.jpg
  • 21.
    Pas de retourarrière. Photo: http://www.reconnections.net/redblue_pill.jpg
  • 22.
    « La gestionde configuration sans serveur » Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405
  • 23.
    Utilisation personnelle. Vous savez presque tout ! Mettre un répertoire local en gestion de configuration. Pas de serveur, Pas de service, Pas d’administration.
  • 24.
    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, DropBox. Permet de se faire la main sur Git.
  • 25.
    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.
  • 26.
    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.
  • 27.
    Cercles de confiance. Référence pull Committer
  • 28.
    Cercles de confiance. ModeOpen Source : noyaux linux. Pas de droits d’accès. Pas d’administrateur. Modèle pour une grosse équipe.
  • 29.
    Centralisé. Créer un repository central. Publier des modifications. Faire une copie locale.
  • 30.
    Centralisé. A la Subversion. Chaque clone connait tout l’historique. Travail en mode déconnecté. Backup gratuite. (Encore un administrateur de moins...)
  • 31.
  • 32.
    Comme à lamaison. Git permet de suivre son propre workflow. (au sens noble du terme) Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
  • 33.
    Dans la vraievie vu avec l’outil Gource. (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 34.
    «Le merge omniscient» Photo:http://www.computerweekly.com/PhotoGalleries/235697/944_20_Cerebro-X-Men-Origins-Wolverine-Gadgets-and-Weapons.JPG
  • 35.
    Faire un mergec’est difficile Frein au refactoring Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg
  • 36.
    Renommer 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.
    Modifier un fichierpendant qu’un autre développeur le renomme. Casse tête assuré.
  • 38.
    Sans code freeze. UnBuild Manager dans la salle ? Photo: http://flickr.com/photos/8459432@N03/3446187475
  • 39.
    Keep it StupidSimple. 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.
  • 43.
    Et si lebuild n’était jamais cassé ?
  • 45.
    Un petit dessin... Partagé Build puis Push Sync Perso Private Build
  • 46.
    Robustesse et gainde temps. On peut travailler pendant le build. Pas de panne. Build toujours vert -> moins de complexité.
  • 47.
    Cette présentation estloin d’être exhaustive add -p checkout revert rebase -i cherry-pick commit hooks diff reset filter-branch stash hooks Branches locales log tig tag git blame instaweb whatchanged clean
  • 48.
    J’avais promis deparler de Yoda ! «Git demain adopter tu dois, tiot Padawan» Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
  • 49.
  • 50.
  • 51.
    Git-svn. Passerelle bi-directionnelle vers Subversion. Permet de travailler sous git tout en publiant dans SVN.
  • 52.
  • 53.
    David Gageot CTO Algodeal.com «The Crowd Sourced Quant Hedge Fund» @dgageot javabien.net