Slide 1

Slide 1 text

Introduction au versioning avec GIT et organisation d’une équipe MarsJUG - 26 Octobre 2011

Slide 2

Slide 2 text

ATTENTION Cette présentation n’est pas : un court complet sur Git spécifique à Java, ni Eclipse payante un flim sur le cyclimse

Slide 3

Slide 3 text

T’es qui ? 0

Slide 4

Slide 4 text

Jérémy Lecour

Slide 5

Slide 5 text

developpeur web autodidacte, cuvée 1998

Slide 6

Slide 6 text

membre actif et Président du Provence Linux User Group http://plugfr.org Venez, on est sympa aussi !

Slide 7

Slide 7 text

Développeur et Directeur technique chez Autrement http://hotelhotel.com http://chambresapart.fr

Slide 8

Slide 8 text

converti tardivement au versioning CP•OLD SVN GIT Ø

Slide 9

Slide 9 text

[email protected] @jlecour jeremy.wordpress.com github.com/jlecour

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

C’est quoi ? 1

Slide 12

Slide 12 text

Système de contrôle de versions, open-source, décentralisé, conçus pour être efficace et rapide.

Slide 13

Slide 13 text

Système de contrôle de versions, open-source, décentralisé, conçus pour être efficace et rapide.

Slide 14

Slide 14 text

Définition(s) ? C'est un dispositif, en général un logiciel, qui permet de conserver son travail dans le temps dans toutes les versions qu'on souhaite, de naviguer dans cet historique, de gérer des divergences et convergences de variantes et de travailler en équipe sans se marcher sur les pieds.

Slide 15

Slide 15 text

Outils connus ? CP•OLD RCS, CVS, SVN, GIT, Mercurial, Bazar, Darcs, GNU Arch, Fossil, Perforce, IBM Rational, Visual SourceSafe, ClearCase, … # cp main.c main.c.old

Slide 16

Slide 16 text

Système de contrôle de versions, open-source, décentralisé, conçus pour être efficace et rapide.

Slide 17

Slide 17 text

license GPL v2

Slide 18

Slide 18 text

développé par Linus Torvalds

Slide 19

Slide 19 text

développement du noyau Linux

Slide 20

Slide 20 text

multi-plateformes

Slide 21

Slide 21 text

Système de contrôle de versions, open-source, décentralisé, conçus pour être efficace et rapide.

Slide 22

Slide 22 text

tout est local ou presque

Slide 23

Slide 23 text

échanges entre dépôts par le filesystem et/ou le réseau http • ssh • git • file

Slide 24

Slide 24 text

tout l’historique est disponible, même hors connexion

Slide 25

Slide 25 text

Péreine et fiable chaque copie est autonome et contient tout le projet = =

Slide 26

Slide 26 text

Organisation libre quelques modèles possibles

Slide 27

Slide 27 text

en étoile façon client/serveur developer developer developer shared repository

Slide 28

Slide 28 text

developer public developer public dictator developer public blessed repository lieutenant lieutenant dictature façon hiérarchie militaire

Slide 29

Slide 29 text

developer developer developer developer developer anarchique façon peer-to-peer

Slide 30

Slide 30 text

intégration façon communauté developer public developer public integration manager developer public blessed repository developer private developer private developer private

Slide 31

Slide 31 text

Système de contrôle de versions, open-source, décentralisé, conçus pour être efficace et rapide.

Slide 32

Slide 32 text

GIT est bêtement une base de données clés/valeurs écrite en C, donc portable et rapide qui traque des contenus

Slide 33

Slide 33 text

adapté à toutes les tailles d’équipes et de projets

Slide 34

Slide 34 text

Concepts clés et points forts 2

Slide 35

Slide 35 text

delta vs. snapshot File A Δ1 File B File C Version 1 Version 2 Version 3 Version 4 Version 5 Δ2 Δ1 Δ2 Δ1 Δ2 Δ3 A B C Version 1 Version 2 Version 3 Version 4 Version 5 A1 B C1 A1 B C2 A2 B1 C2 A2 B2 C3 File A Δ1 File B File C Version 1 Version 2 Version 3 Version 4 Version 5 Δ2 Δ1 Δ2 Δ1 Δ2 Δ3 A B C Version 1 Version 2 Version 3 Version 4 Version 5 A1 B C1 A1 B C2 A2 B1 C2 A2 B2 C3

Slide 36

Slide 36 text

historique commit size commit size 98ca9.. tree author committer initial commit of my project 0de24 Scott Scott commit size 34ac2.. tree parent author committer fixed bug #1328 - stack overflow under certain 184ca 98ca9 Scott Scott f30ab.. tree parent author committer add feature #32 - ability to add new formats to the central 34ac2 Scott Scott Snapshot A Snapshot B Snapshot C 92ec2

Slide 37

Slide 37 text

commit • tree • blob blob size e8455.. commit size 98ca9.. == LICENSE: (The MIT License) Copyright (c) 2007 Tom Preston- Permission is hereby granted, f ree of charge, to any person ob tree parent author committer my commit message goes here and it is really, really cool 0de24 nil Scott Scott tree size 10af9.. blob tree bc52a b70f8 mylib.rb inc tree size b70f8.. blob 0ad1a tricks.rb tree size 0de24.. blob tree e8455 10af9 README lib blob size bc52a.. require 'grit/index' require 'grit/status' module Grit class << self attr_accessor :debug blob size 0ad1a.. require 'grit/git-ruby/reposi require 'grit/git-ruby/file_i module Grit module Tricks SHA1

Slide 38

Slide 38 text

killer feature branches über faciles personnelles partageables éphémères durables légères C2 C1 master C3 C8 C7 C9 C5 C4 C6 topic-branch C10

Slide 39

Slide 39 text

branches & tags = pointeurs Snapshot A Snapshot B Snapshot C 98ca9 34ac2 f30ab master HEAD v1.0

Slide 40

Slide 40 text

3 zones Git Directory (Repository) Staging Area Working Directory stage files Checkout the project Commit Stage files

Slide 41

Slide 41 text

commandes courantes init add rm mv status commit log diff show branch checkout merge tag clone fetch pull push remote reset rebase blame au moins 1x/semaine

Slide 42

Slide 42 text

commandes bizarres géniales bisect rerere add -p cherrypick stash format-patch • apply-patch

Slide 43

Slide 43 text

usages atypiques config système (ex. : /etc) articles et publications moteur de wiki documents partagés dans l’équipe distribution de ressources

Slide 44

Slide 44 text

Les outils 3

Slide 45

Slide 45 text

Ligne de Commande l’interface canonique, identique partout

Slide 46

Slide 46 text

GUI autonomes des clients graphiques spécialisés GITK GITX Tortoise Git

Slide 47

Slide 47 text

intégration IDE pour les amateurs du “tout en un” EGit pour Eclipse IntelliJ IDEA Netbeans

Slide 48

Slide 48 text

Questions sur Git 4

Slide 49

Slide 49 text

Workflows et gestion des projets en équipe 5 C’est pas trop tôt

Slide 50

Slide 50 text

problématique construire un modèle de dev structurer les branches fiabiliser les processus de livraison

Slide 51

Slide 51 text

git-flow un workflow complet adapté au développement logiciel pour des équipes structurées

Slide 52

Slide 52 text

Time release branches master develop hot xes feature branches Feature for future release Tag 1.0 Major feature for next release From this point on, “next release” means the release after 1.0 Severe bug xed for production: hot x 0.2 Bug xes from rel. branch may be continuously merged back into develop Tag 0.1 Tag 0.2 Incorporate bug x in develop Only bug xes! Start of release branch for 1.0 Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons

Slide 53

Slide 53 text

GitHub-flow beaucoup plus simple plus de responsablités adapté aux cycles courts

Slide 54

Slide 54 text

Time master feature branches Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons

Slide 55

Slide 55 text

et pour vous ça se passe comment ?

Slide 56

Slide 56 text

Ressources 6

Slide 57

Slide 57 text

http://git-scm.com

Slide 58

Slide 58 text

http://whygitisbetterthanx.com/

Slide 59

Slide 59 text

http://progit.org/

Slide 60

Slide 60 text

http://gitimmersion.com/

Slide 61

Slide 61 text

http://gitref.org/

Slide 62

Slide 62 text

Screencasts Peepcode : http://peepcode.com/products/git Destroy All Software : https://www.destroyallsoftware.com/screencasts/catalog/git-workflow

Slide 63

Slide 63 text

Articles L’article complet sur git-flow : http://nvie.com/posts/a-successful-git-branching-model/ Pourquoi vous n’utilisez vous toujours pas git-flow : http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/ Le workflow en vigueur chez GitHub : http://scottchacon.com/2011/08/31/github-flow.html

Slide 64

Slide 64 text

Formation Git-Attitude avec Christophe Porteneuve : http://www.git-attitude.fr/ GitHub Training : https://github.com/training

Slide 65

Slide 65 text

Crédits 7

Slide 66

Slide 66 text

Scott Chacon et le livre Progit pour des définitions et graphiques : http://progit.org/ • https://github.com/progit/progit Zach Holman pour les conseils sur la conception des slides : http://zachholman.com/posts/slide-design-for-developers/ Yanone Kafeesatz pour cette magnifique police de caractères (CC BY 2.0) : http://www.yanone.de/typedesign/kaffeesatz/ Vincent Driessen pour le graphique de git-flow : http://nvie.com/archives/323 Les différents logos, marques et noms déposés que j’ai cité

Slide 67

Slide 67 text

Merci