Introduction à Git et workflows - MarsJUG 2011

Introduction à Git et workflows - MarsJUG 2011

7d1caf9df777b3b2cf474ff743494335?s=128

Jérémy Lecour

October 26, 2011
Tweet

Transcript

  1. Introduction au versioning avec GIT et organisation d’une équipe MarsJUG

    - 26 Octobre 2011
  2. ATTENTION Cette présentation n’est pas : un court complet sur

    Git spécifique à Java, ni Eclipse payante un flim sur le cyclimse
  3. T’es qui ? 0

  4. Jérémy Lecour

  5. developpeur web autodidacte, cuvée 1998

  6. membre actif et Président du Provence Linux User Group http://plugfr.org

    Venez, on est sympa aussi !
  7. Développeur et Directeur technique chez Autrement http://hotelhotel.com http://chambresapart.fr

  8. converti tardivement au versioning CP•OLD SVN GIT Ø

  9. jeremy.lecour@gmail.com @jlecour jeremy.wordpress.com github.com/jlecour

  10. None
  11. C’est quoi ? 1

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

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

    efficace et rapide.
  14. 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.
  15. 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
  16. Système de contrôle de versions, open-source, décentralisé, conçus pour être

    efficace et rapide.
  17. license GPL v2

  18. développé par Linus Torvalds

  19. développement du noyau Linux

  20. multi-plateformes

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

    efficace et rapide.
  22. tout est local ou presque

  23. échanges entre dépôts par le filesystem et/ou le réseau http

    • ssh • git • file
  24. tout l’historique est disponible, même hors connexion

  25. Péreine et fiable chaque copie est autonome et contient tout

    le projet = =
  26. Organisation libre quelques modèles possibles

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

  28. developer public developer public dictator developer public blessed repository lieutenant

    lieutenant dictature façon hiérarchie militaire
  29. developer developer developer developer developer anarchique façon peer-to-peer

  30. intégration façon communauté developer public developer public integration manager developer

    public blessed repository developer private developer private developer private
  31. Système de contrôle de versions, open-source, décentralisé, conçus pour être

    efficace et rapide.
  32. GIT est bêtement une base de données clés/valeurs écrite en

    C, donc portable et rapide qui traque des contenus
  33. adapté à toutes les tailles d’équipes et de projets

  34. Concepts clés et points forts 2

  35. 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
  36. 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
  37. 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
  38. 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
  39. branches & tags = pointeurs Snapshot A Snapshot B Snapshot

    C 98ca9 34ac2 f30ab master HEAD v1.0
  40. 3 zones Git Directory (Repository) Staging Area Working Directory stage

    files Checkout the project Commit Stage files
  41. 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
  42. commandes bizarres géniales bisect rerere add -p cherrypick stash format-patch

    • apply-patch
  43. usages atypiques config système (ex. : /etc) articles et publications

    moteur de wiki documents partagés dans l’équipe distribution de ressources
  44. Les outils 3

  45. Ligne de Commande l’interface canonique, identique partout

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

  47. intégration IDE pour les amateurs du “tout en un” EGit

    pour Eclipse IntelliJ IDEA Netbeans
  48. Questions sur Git 4

  49. Workflows et gestion des projets en équipe 5 C’est pas

    trop tôt
  50. problématique construire un modèle de dev structurer les branches fiabiliser

    les processus de livraison
  51. git-flow un workflow complet adapté au développement logiciel pour des

    équipes structurées
  52. 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
  53. GitHub-flow beaucoup plus simple plus de responsablités adapté aux cycles

    courts
  54. Time master feature branches Author: Vincent Driessen Original blog post:

    http://nvie.com/archives/323 License: Creative Commons
  55. et pour vous ça se passe comment ?

  56. Ressources 6

  57. http://git-scm.com

  58. http://whygitisbetterthanx.com/

  59. http://progit.org/

  60. http://gitimmersion.com/

  61. http://gitref.org/

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

  63. 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
  64. Formation Git-Attitude avec Christophe Porteneuve : http://www.git-attitude.fr/ GitHub Training :

    https://github.com/training
  65. Crédits 7

  66. 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é
  67. Merci