Slide 1

Slide 1 text

La gestion de configuration qui vous veut du bien

Slide 2

Slide 2 text

David Gageot CTO algodeal.com The Crowd Sourced Quant Hedge Fund @dgageot javabien.net Faisons connaissance

Slide 3

Slide 3 text

Gain de temps Gestion de sources Nous allons parler de... Travail en équipe Intégration continue Refactoring

Slide 4

Slide 4 text

Men in Black Bottes de Foin Yoda ...mais aussi de... Sandwich au fromage

Slide 5

Slide 5 text

Photo: http://www.flickr.com/photos/91082225@N00/3271601712 Ca vous va ?

Slide 6

Slide 6 text

Genre : Gestion de version Date de naissance : 2005 Créateur : Linus Torvalds Licence : GPL Signes distinctifs : Pas besoin de serveur Chaque utilisateur a une copie de l’historique Fonctionne en déconnecté Git Photo:http://getch.files.wordpress.com/2009/02/mask-linus_torvalds.jpg

Slide 7

Slide 7 text

La concurrence

Slide 8

Slide 8 text

http://www.filmbuffonline.com/FBOLNewsreel/wordpress/wp-content/uploads/2009/10/MenInBlack1.jpg Avant d’aller plus loin... Oubliez tout ce que vous savez

Slide 9

Slide 9 text

Photo: http://www.flickr.com/photos/zoutedrop/2317065892/ Pas de temps à perdre ? Git en action

Slide 10

Slide 10 text

Photo: http://malcontenta.blog.lemonde.fr/files/2008/06/chaplin-les-temps-modernes.1212659628.jpg mvn eclipse:eclipse ne fonctionne plus ! Depuis quand ? Quelle version ?

Slide 11

Slide 11 text

Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/ Tester toutes les versions précédentes ?

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Un petit dessin...

Slide 14

Slide 14 text

Tester toutes les versions depuis la fin 1 3 2 4 5 6 KO OK t

Slide 15

Slide 15 text

Tester toutes les versions depuis la fin 1 3 2 4 5 6 1 Dichotomie 2 3 OK KO KO OK O(n) O(log n)

Slide 16

Slide 16 text

Photo: http://www.wallfizz.com/nature/plaine-et-prairie/2714-botte-de-foin-dans-un-champ-WallFizz.jpg A la main, ça reste long

Slide 17

Slide 17 text

Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg Surtout avec des branches

Slide 18

Slide 18 text

Git bisect (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/

Slide 19

Slide 19 text

git bisect

Slide 20

Slide 20 text

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/

Slide 21

Slide 21 text

« La gestion de configuration sans serveur » Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405

Slide 22

Slide 22 text

Mettre un répertoire en gestion de configuration Sans serveur, sans administrateur

Slide 23

Slide 23 text

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 Mettre un répertoire en gestion de configuration

Slide 24

Slide 24 text

Git & Gitx (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/

Slide 25

Slide 25 text

Commits locaux Première version Correctif Amélioration

Slide 26

Slide 26 text

Branches locales Première version Correctif Amélioration Ajout 1 Ajout 2 master branche

Slide 27

Slide 27 text

Fusion de branches Première version Correctif Amélioration Ajout 1 Ajout 2 master branche merge branche

Slide 28

Slide 28 text

One more thing... Début fonctionnalité B Suite fonctionnalité A master Début fonctionnalité A Suite fonctionnalité B

Slide 29

Slide 29 text

Git rebase -i Suite fonctionnalité A Début fonctionnalité B master Début fonctionnalité A Suite fonctionnalité B

Slide 30

Slide 30 text

Git rebase -i (suite) Fonctionnalité B master Fonctionnalité A

Slide 31

Slide 31 text

Faire une copie locale de tout l’historique Partagé Pousser/récupérer les modifications Vous savez presque tout !

Slide 32

Slide 32 text

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 Partagé

Slide 33

Slide 33 text

Cercles de confiance pull Référence Committer

Slide 34

Slide 34 text

Mode Open Source : noyaux linux Pas de droits d’accès Pas d’administrateur Modèle pour une grosse équipe Cercles de confiance

Slide 35

Slide 35 text

Créer un repository central Faire une copie locale Centralisé

Slide 36

Slide 36 text

A la Subversion Chaque clone connait tout l’historique Travail en mode déconnecté Backup gratuite (Encore un administrateur de moins...) Centralisé

Slide 37

Slide 37 text

Git Hub

Slide 38

Slide 38 text

Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif Comme à la maison Git permet de suivre son propre workflow

Slide 39

Slide 39 text

Un vrai projet (démo) Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/

Slide 40

Slide 40 text

Collaborer, ça veut dire quoi ? Développeurs Fichiers

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

«Le merge omniscient» Photo: http://www.computerweekly.com/PhotoGalleries/235697/944_20_Cerebro-X-Men-Origins-Wolverine-Gadgets-and-Weapons.JPG

Slide 43

Slide 43 text

Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg Faire un merge c’est difficile Frein au refactoring

Slide 44

Slide 44 text

Modifier un fichier pendant qu’un autre développeur le renomme Casse tête assuré Cas d’école

Slide 45

Slide 45 text

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/ Exemples

Slide 46

Slide 46 text

Keep it Simple Stupid Pas besoin de plugin. Juste find, mv, sed

Slide 47

Slide 47 text

Keep it Simple Stupid

Slide 48

Slide 48 text

Photo: http://flickr.com/photos/8459432@N03/3446187475 Sans code freeze Un Build Manager dans la salle ?

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

«Le build incassable» Photo: http://4.bp.blogspot.com/_OhGGUzXs2IY/SlcDgkq4riI/AAAAAAAAB3Y/5uoio0yUue8/s1600-h/Affiche+1.jpg

Slide 51

Slide 51 text

Intégration continue Hudson, Cruise Control, Team City ?

Slide 52

Slide 52 text

Et si le build n’était jamais cassé ?

Slide 53

Slide 53 text

Un petit script suffit

Slide 54

Slide 54 text

Un petit dessin...

Slide 55

Slide 55 text

Perso Build privé Partagé Sync puis publie Teste Mon Poste de travail

Slide 56

Slide 56 text

Plus de pause café pendant le build Photo: http://farm3.static.flickr.com/2698/4041033176_80072af942.jpg

Slide 57

Slide 57 text

Cette présentation est loin d’être exhaustive tig cherry-pick filter-branch stash git blame revert instaweb diff log tag whatchanged clean add -p checkout reset hooks

Slide 58

Slide 58 text

Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg «Git demain adopter tu dois, jeune Padawan»

Slide 59

Slide 59 text

Je commence demain

Slide 60

Slide 60 text

GitX

Slide 61

Slide 61 text

Passerelle bi-directionnelle vers Subversion Permet de travailler sous git tout en publiant dans SVN Git-svn

Slide 62

Slide 62 text

Pas accès à toute la puissance de git. Pas compatible avec toutes les mises en oeuvre de SVN Limites de Git-svn

Slide 63

Slide 63 text

Merci Questions / Réponses

Slide 64

Slide 64 text

David Gageot CTO algodeal.com The Crowd Sourced Quant Hedge Fund @dgageot javabien.net Faisons connaissance