61
La gestion de configuration qui vous veut du bien

Git

Embed Size (px)

DESCRIPTION

Présentation de Git par David Gageot au Normandy Jug

Citation preview

Page 1: Git

La gestion de configuration qui vous veut du bien

Page 2: Git

David Gageot

CTO algodeal.com The Crowd SourcedQuant Hedge Fund

@dgageotjavabien.net

http://infinitest.github.com

Faisons connaissance

Page 3: Git

Gainde temps

Gestionde sources

Nous allons parler de...

Travailen équipe

Intégrationcontinue

Refactoring

Page 4: Git

Menin Black

Bottesde Foin

Yoda

...mais aussi de...

Sandwichau fromage

Page 6: Git

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

Page 7: Git

La concurrence

Page 8: Git

http://www.filmbuffonline.com/FBOLNewsreel/wordpress/wp-content/uploads/2009/10/MenInBlack1.jpg

Avant d’aller plus loin...Oubliez tout ce que vous savez

Page 9: Git

Photo: http://www.flickr.com/photos/zoutedrop/2317065892/

Pas de temps à perdre ?Git en action

Page 11: Git

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

Tester toutes les versions précédentes ?

Page 12: Git

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

Page 13: Git

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

A la main, ça reste long

Page 14: Git

Photo: http://farm1.static.flickr.com/154/356715278_0e0cfe107c.jpg

Surtout avec des branches

Page 15: Git

Git bisect

(démo)

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

Page 16: Git

git bisect

Page 17: Git

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/

Page 18: Git

« La gestion de configuration sans serveur »

Photo: http://www.allocine.fr/film/fichefilm-20588/affiches/detail/?cmediafile=18930405

Page 19: Git

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

Page 20: Git

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

Page 21: Git

Git & Gitx

(démo)

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

Page 22: Git

Commits locaux

Première version

Correctif

Amélioration

Page 23: Git

Branches locales

Première version

Correctif

Amélioration

Ajout 1

Ajout 2

master branche

Page 24: Git

Fusion de branches

Première version

Correctif

Amélioration

Ajout 1

Ajout 2

master

branche

merge branche

Page 25: Git

One more thing...

Début fonctionnalité B

Suite fonctionnalité A

master

Début fonctionnalité A

Suite fonctionnalité B

Page 26: Git

Git rebase -i

Suite fonctionnalité A

Début fonctionnalité B

master

Début fonctionnalité A

Suite fonctionnalité B

Page 27: Git

Git rebase -i (suite)

Fonctionnalité B

master

Fonctionnalité A

Page 28: Git

Faire une copie locale de tout l’historique

Partagé

Pousser/récupérer les modifications

Vous savez presque

tout !

Page 29: Git

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é

Page 30: Git

Cercles de confiance

pullRéférence

Committer

Page 31: Git

Mode Open Source : noyaux linux

Pas de droits d’accès

Pas d’administrateur

Modèle pour une grosse équipe

Cercles de confiance

Page 32: Git

Créer un repository central

Faire une copie locale

Centralisé

Page 33: Git

A la Subversion

Chaque clone connait tout l’historique

Travail en mode déconnecté

Backup gratuite(Encore un administrateur de moins...)

Centralisé

Page 34: Git

Git Hub

Page 35: Git

Photo: http://www.e-cart.biz/stores/vintage-metal-art/images/custom_tailor.gif

Comme à la maisonGit permet de suivre son propre workflow

Page 36: Git

Un vrai projet

(démo)

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

Page 37: Git

Collaborer, ça veut dire quoi ?

Développeurs

Fichiers

Page 38: Git

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

Page 39: Git

«Le merge omniscient»

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

Page 40: Git

Photo: http://img4.southernliving.com/i/2007/01/grilled-cheese/melted-cheese-l.jpg

Faire un merge c’est difficileFrein au refactoring

Page 41: Git

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

Casse tête assuré

Cas d’école

Page 42: Git

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

Page 43: Git

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

Page 44: Git

Keep it Simple Stupid

Page 45: Git

Photo: http://flickr.com/photos/8459432@N03/3446187475

Sans code freezeUn Build Manager dans la salle ?

Page 46: Git

Un vrai projet Javavu avec l’outil Gource

(démo)

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

Page 47: Git

«Le build incassable»

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

Page 48: Git

Intégration continueHudson, Cruise Control, Team City ?

Page 49: Git

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

Page 50: Git

Un petit script suffit

Page 51: Git

Un petit dessin...

Page 52: Git

Perso Build privé

Partagé

clone

puis publie

Teste

Mon Poste de travail

Page 53: Git

Plus de pause café pendant le build

Photo: http://farm3.static.flickr.com/2698/4041033176_80072af942.jpg

Page 54: Git

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

Page 55: Git

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

«Git demain adopter tu dois, jeune Padawan»

Page 56: Git

Je commence demain

Page 57: Git

GitX

Page 58: Git

Passerelle bi-directionnelle vers Subversion

Permet de travailler sous git tout en publiant dans SVN

Git-svn

Page 59: Git

Pas accès à toute la puissance de git.

Pas compatible avec toutes les mises en oeuvre de SVN

Limites de Git-svn

Page 60: Git

MerciQuestions / Réponses

Page 61: Git

David Gageot

CTO algodeal.com The Crowd SourcedQuant Hedge Fund

@dgageotjavabien.net

Faisons connaissance