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
         http://infinitest.github.com
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
Git


Genre : Gestion de version
Date de naissance : 2005
Créateur : Linus Torvald
Licence : GPL

Signes distinctifs :
Pas besoin de serveur
Chaque utilisateur a une
copie de l’historique
Fonctionne en déconnecté
               Photo:http://getch.files.wordpress.com/2009/02/mask-linus_torvalds.jpg
La concurrence
Avant d’aller plus loin...
Oubliez tout ce que vous savez




                    http://www.filmbuffonline.com/FBOLNewsreel/wordpress/wp-content/uploads/2009/10/MenInBlack1.jpg
Pas de temps à perdre ?
     Git en action




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




                          Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
Tester toutes les versions précédentes ?




                                 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, ça reste 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/
« La gestion de configuration
        sans serveur »




           Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405
Mettre un répertoire en gestion de configuration
        Sans serveur, sans administrateur
Mettre un répertoire en gestion de configuration


                    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
Git & Gitx
 (démo)




      Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Commits locaux




   Amélioration


   Correctif


   Première version
Branches locales


master                  branche

         Amélioration         Ajout 2


         Correctif            Ajout 1


         Première version
Fusion de branches


master      merge branche

                               branche

            Amélioration         Ajout 2


            Correctif            Ajout 1


            Première version
One more thing...


master     Suite fonctionnalité B



           Suite fonctionnalité A


           Début fonctionnalité B


           Début fonctionnalité A
Git rebase -i


master   Suite fonctionnalité B



         Début fonctionnalité B


         Suite fonctionnalité A


         Début fonctionnalité A
Git rebase -i (suite)




master

         Fonctionnalité B



         Fonctionnalité A
Partagé                         Vous
                                              savez presque
                                                  tout !




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


              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
   (démo)




        Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Collaborer, ça veut dire quoi ?



                                Fichiers




Développeurs
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/
Keep it Simple Stupid
Pas besoin de plugin. Juste find, mv, sed
Keep it Simple Stupid
Sans code freeze
Un Build Manager dans la salle ?




                               Photo: http://flickr.com/photos/8459432@N03/3446187475
Un vrai projet Java
vu avec l’outil Gource
       (démo)




           Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
«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 script suffit
Un petit dessin...
Partagé


                      puis publie

                         Teste

         clone
Perso              Build privé


                 Mon Poste de travail
Plus de pause café pendant le build




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


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

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




                                 Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
Je commence demain
GitX
Git-svn




 Passerelle bi-directionnelle vers
            Subversion

Permet de travailler sous git tout en
       publiant dans SVN
Limites de Git-svn




 Pas accès à toute la puissance de git.

Pas compatible avec toutes les mises en
           oeuvre de SVN
Merci
Questions / Réponses
Faisons connaissance



               David Gageot

            CTO algodeal.com
            The Crowd Sourced
            Quant Hedge Fund

                 @dgageot
               javabien.net

Git

  • 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 http://infinitest.github.com
  • 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.
    Git Genre : Gestionde version Date de naissance : 2005 Créateur : Linus Torvald Licence : GPL Signes distinctifs : Pas besoin de serveur Chaque utilisateur a une copie de l’historique Fonctionne en déconnecté Photo:http://getch.files.wordpress.com/2009/02/mask-linus_torvalds.jpg
  • 7.
  • 8.
    Avant d’aller plusloin... Oubliez tout ce que vous savez http://www.filmbuffonline.com/FBOLNewsreel/wordpress/wp-content/uploads/2009/10/MenInBlack1.jpg
  • 9.
    Pas de tempsà perdre ? Git en action Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
  • 10.
    mvn eclipse:eclipse nefonctionne plus ! Depuis quand ? Quelle version ? Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg
  • 11.
    Tester toutes lesversions précédentes ? Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/
  • 12.
    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
  • 13.
    A la main,ça reste long Photo: http://www.wallfizz.com/nature/plaine-et-prairie/2714-botte-de-foin-dans-un-champ-WallFizz.jpg
  • 14.
    Surtout avec desbranches Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg
  • 15.
    Git bisect (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 16.
  • 17.
    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/
  • 18.
    « La gestionde configuration sans serveur » Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405
  • 19.
    Mettre un répertoireen gestion de configuration Sans serveur, sans administrateur
  • 20.
    Mettre un répertoireen gestion de configuration 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
  • 21.
    Git & Gitx (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 22.
    Commits locaux Amélioration Correctif Première version
  • 23.
    Branches locales master branche Amélioration Ajout 2 Correctif Ajout 1 Première version
  • 24.
    Fusion de branches master merge branche branche Amélioration Ajout 2 Correctif Ajout 1 Première version
  • 25.
    One more thing... master Suite fonctionnalité B Suite fonctionnalité A Début fonctionnalité B Début fonctionnalité A
  • 26.
    Git rebase -i master Suite fonctionnalité B Début fonctionnalité B Suite fonctionnalité A Début fonctionnalité A
  • 27.
    Git rebase -i(suite) master Fonctionnalité B Fonctionnalité A
  • 28.
    Partagé Vous savez presque tout ! Faire une copie locale de tout l’historique Pousser/récupérer les modifications
  • 29.
    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
  • 30.
    Cercles de confiance Référence pull Committer
  • 31.
    Cercles de confiance ModeOpen Source : noyaux linux Pas de droits d’accès Pas d’administrateur Modèle pour une grosse équipe
  • 32.
    Centralisé Créer un repository central Faire une copie locale
  • 33.
    Centralisé A la Subversion Chaque clone connait tout l’historique Travail en mode déconnecté Backup gratuite (Encore un administrateur de moins...)
  • 34.
  • 35.
    Comme à lamaison Git permet de suivre son propre workflow Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
  • 36.
    Un vrai projet (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 37.
    Collaborer, ça veutdire quoi ? Fichiers Développeurs
  • 38.
  • 39.
    «Le merge omniscient» Photo:http://www.computerweekly.com/PhotoGalleries/235697/944_20_Cerebro-X-Men-Origins-Wolverine-Gadgets-and-Weapons.JPG
  • 40.
    Faire un mergec’est difficile Frein au refactoring Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg
  • 41.
    Cas d’école Modifier unfichier pendant qu’un autre développeur le renomme Casse tête assuré
  • 42.
    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/
  • 43.
    Keep it SimpleStupid Pas besoin de plugin. Juste find, mv, sed
  • 44.
  • 45.
    Sans code freeze UnBuild Manager dans la salle ? Photo: http://flickr.com/photos/8459432@N03/3446187475
  • 46.
    Un vrai projetJava vu avec l’outil Gource (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
  • 47.
    «Le build incassable» Photo:http://4.bp.blogspot.com/_OhGGUzXs2IY/SlcDgkq4riI/AAAAAAAAB3Y/5uoio0yUue8/s1600-h/Affiche+1.jpg
  • 48.
  • 49.
    Et si lebuild n’était jamais cassé ?
  • 50.
  • 51.
  • 52.
    Partagé puis publie Teste clone Perso Build privé Mon Poste de travail
  • 53.
    Plus de pausecafé pendant le build Photo: http://farm3.static.flickr.com/2698/4041033176_80072af942.jpg
  • 54.
    Cette présentation estloin d’être exhaustive add -p checkout revert cherry-pick diff reset filter-branch stash hooks log tag tig git blame instaweb whatchanged clean
  • 55.
    «Git demain adoptertu dois, jeune Padawan» Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
  • 56.
  • 57.
  • 58.
    Git-svn Passerelle bi-directionnellevers Subversion Permet de travailler sous git tout en publiant dans SVN
  • 59.
    Limites de Git-svn Pas accès à toute la puissance de git. Pas compatible avec toutes les mises en oeuvre de SVN
  • 60.
  • 61.
    Faisons connaissance David Gageot CTO algodeal.com The Crowd Sourced Quant Hedge Fund @dgageot javabien.net