Git

  • View
    1.032

  • Download
    0

  • Category

    Design

Preview:

DESCRIPTION

Présentation de Git par David Gageot au Normandy Jug

Citation preview

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

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

Recommended