git
DESCRIPTION
Présentation de Git par David Gageot au Normandy JugTRANSCRIPT
La gestion de configuration qui vous veut du bien
David Gageot
CTO algodeal.com The Crowd SourcedQuant Hedge Fund
@dgageotjavabien.net
http://infinitest.github.com
Faisons connaissance
Gainde temps
Gestionde sources
Nous allons parler de...
Travailen équipe
Intégrationcontinue
Refactoring
Menin Black
Bottesde Foin
Yoda
...mais aussi de...
Sandwichau fromage
Photo: http://www.flickr.com/photos/91082225@N00/3271601712
Ca vous va ?
Genre : Gestion de versionDate de naissance : 2005Créateur : Linus TorvaldLicence : GPL
Signes distinctifs :Pas besoin de serveurChaque utilisateur a une copie de l’historiqueFonctionne en déconnecté
Git
Photo:http://getch.files.wordpress.com/2009/02/mask-linus_torvalds.jpg
La concurrence
http://www.filmbuffonline.com/FBOLNewsreel/wordpress/wp-content/uploads/2009/10/MenInBlack1.jpg
Avant d’aller plus loin...Oubliez tout ce que vous savez
Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
Pas de temps à perdre ?Git en action
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 ?
Photo: http://www.flickr.com/photos/tarchamps/2835943555/sizes/l/
Tester toutes les versions précédentes ?
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
Photo: http://www.wallfizz.com/nature/plaine-et-prairie/2714-botte-de-foin-dans-un-champ-WallFizz.jpg
A la main, ça reste long
Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg
Surtout avec des branches
Git bisect
(démo)
Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
git bisect
Partageons quelquestours 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 configurationSans serveur, sans administrateur
Quand ?Avant d’éditer des fichiers de configuration
Pour préparer une démoAvant 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
Git & Gitx
(démo)
Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Commits locaux
Première version
Correctif
Amélioration
Branches locales
Première version
Correctif
Amélioration
Ajout 1
Ajout 2
master branche
Fusion de branches
Première version
Correctif
Amélioration
Ajout 1
Ajout 2
master
branche
merge branche
One more thing...
Début fonctionnalité B
Suite fonctionnalité A
master
Début fonctionnalité A
Suite fonctionnalité B
Git rebase -i
Suite fonctionnalité A
Début fonctionnalité B
master
Début fonctionnalité A
Suite fonctionnalité B
Git rebase -i (suite)
Fonctionnalité B
master
Fonctionnalité A
Faire une copie locale de tout l’historique
Partagé
Pousser/récupérer les modifications
Vous savez presque
tout !
Partage de sources dans une équipePas de notion de maître / esclave
Chacun peut faire des modificationset récupérer celles des autres
Pas d’administrateur
Partagé
Cercles de confiance
pullRéférence
Committer
Mode Open Source : noyaux linux
Pas de droits d’accès
Pas d’administrateur
Modèle pour une grosse équipe
Cercles de confiance
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...)
Centralisé
Git Hub
Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif
Comme à la maisonGit permet de suivre son propre workflow
Un vrai projet
(démo)
Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Collaborer, ça veut dire quoi ?
Développeurs
Fichiers
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
Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg
Faire un merge c’est difficileFrein au refactoring
Modifier un fichier pendant qu’un autre développeur le renomme
Casse tête assuré
Cas d’école
Renommer tous les packages
com.tech4quanten com.algodeal
Découper un projet maven
en sous projets
Photo: http://www.flickr.com/photos/joshwellington/3929748847/sizes/o/
Exemples
Keep it Simple StupidPas besoin de plugin. Juste find, mv, sed
Keep it Simple Stupid
Photo: http://flickr.com/photos/8459432@N03/3446187475
Sans code freezeUn Build Manager dans la salle ?
Un vrai projet Javavu 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 continueHudson, Cruise Control, Team City ?
Et si le build n’était jamais cassé ?
Un petit script suffit
Un petit dessin...
Perso Build privé
Partagé
clone
puis publie
Teste
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
tig
cherry-pick
filter-branch stash
git blame
revert
instaweb
diff
logtag
whatchanged clean
add -p checkout
resethooks
Photo: http://networksecurityip.files.wordpress.com/2007/11/yoda.jpg
«Git demain adopter tu dois, jeune Padawan»
Je commence demain
GitX
Passerelle bi-directionnelle vers Subversion
Permet de travailler sous git tout en publiant dans SVN
Git-svn
Pas accès à toute la puissance de git.
Pas compatible avec toutes les mises en oeuvre de SVN
Limites de Git-svn
MerciQuestions / Réponses
David Gageot
CTO algodeal.com The Crowd SourcedQuant Hedge Fund
@dgageotjavabien.net
Faisons connaissance