Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology Day Stuttgart 2011/06/08

2,648 views

Published on

Presentation (in german) on efficient development processes with EGit and Gerrit held on Intland Technology Day in Stuttgart on 2011/06/08

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology Day Stuttgart 2011/06/08

  1. 1. Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit<br />http://code.google.com/p/gerrit<br />http://eclipse.org/egit<br />+<br />=<br />Matthias Sohn (SAP)<br />matthias.sohn@sap.com<br />Twitter: @masohn<br />
  2. 2. Agenda<br />Git – einverteiltesVersionierungssystem<br />Code Review mitGerrit<br />Demo: Entwicklung mit Gerrit Code Review <br />neue Features in EGit<br />Q & A<br />  <br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  3. 3. Die Hauptdarsteller<br />GitisteinverteiltesVersionierungssystem<br />EGitisteinEclipse Team Provider fürGit<br />http://www.eclipse.org/egit/<br />JGitisteineleichtgewichtige Java-BibliothekfürGit<br />http://www.eclipse.org/jgit/<br />Gerritistein Code-Review-System, basierend auf JGit <br />http://code.google.com/p/gerrit/<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, SAP AG<br />
  4. 4. Geschichte von Git, JGit und EGit<br />2005    LinusTorvaldsinitiiertGit<br />2006    Shawn Pearce initiiert JGit<br />2009    Eclipse entscheidetsichfürGit JGit/EGit ziehen um nach eclipse.org SAP beteiligtsich<br />JGit/EGit-ProjektebenutzenGerrit <br />3/2010 JGit/EGit Release 0.7 (erstes Release bei Eclipse)  <br />6/2010 Release 0.8 (Helios) 9/2010 Release 0.9 (Helios SR1)<br />2010/11 Releases 0.10 – 0.12            <br />3/2011 Eclipse Community Award: Most Innovative new feature<br />6/2011 Release 1.0 (Eclipse Indigo)<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  5. 5. Git – einverteiltesVersionierungssystem<br />  <br />JederEntwicklerbesitzteinkomplettes Repository<br />VerteilteVersionierungssysteme (DVCS):<br />Git, Mercurial, Bazaar, …<br />Git: 2005 für die Linux-Kernel-Entwicklung<br />GitistimKommen: <br /><ul><li> Linux, Android, Eclipse, Ruby on Rails …
  6. 6. Github
  7. 7. Integration in Eclipse, Netbeans, XCode</li></ul>Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  8. 8. Git – einverteiltesVersionierungssystem<br />  <br />Gitversioniert Repositories, nicht Files<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG<br />
  9. 9. Git – einverteiltesVersionierungssystem<br />  <br />Gitversioniert Repositories, nicht Files:<br /><ul><li> Commit erzeugtneue Version des Repositories
  10. 10. Version ist global eindeutigüber Hash-Wert (SHA-1)</li></ul>1<br />Added File 1<br />Commit<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  11. 11. Git – einverteiltesVersionierungssystem<br />  <br />Gitversioniert Repositories, nicht Files<br />Edited File 1<br />Added File 2<br />1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG<br />
  12. 12. Git – einverteiltesVersionierungssystem<br />  <br />Gitversioniert Repositories, nicht Files<br />Edited File 1<br />Added File 2<br />2<br />Commit<br />1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG<br />
  13. 13. Git – einverteiltesVersionierungssystem<br />  <br />Branches: Zeiger auf Commits<br />Edited File 1<br />Added File 2<br />2<br />master<br />1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  14. 14. Git – einverteiltesVersionierungssystem<br />  <br />Clonen: Duplizieren des Repositories<br />clone<br />Edited File 1<br />Added File 2<br />Edited File 1<br />Added File 2<br />2<br />2<br />master<br />origin/<br />master<br />1<br />1<br />Added File 1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG<br />
  15. 15. Git – einverteiltesVersionierungssystem<br />  <br />Arbeitenmitlokalen branches<br />feature1<br />Edited File 1<br />Added File 2<br />2<br />origin/<br />master<br />1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG<br />
  16. 16. Git – einverteiltesVersionierungssystem<br />  <br />Arbeitenmitlokalen branches<br />feature1<br />Edited File 2<br />3<br />Edited File 1<br />Added File 2<br />2<br />origin/<br />master<br />1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  17. 17. Git – einverteiltesVersionierungssystem<br />  <br />Arbeitenmitlokalen branches<br />push<br />stefan<br />feature1<br />3<br />3<br />Edited File 2<br />Edited File 2<br />Edited File 1<br />Added File 2<br />Edited File 1<br />Added File 2<br />2<br />2<br />origin/<br />master<br />master<br />1<br />1<br />Added File 1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  18. 18. Git – einverteiltesVersionierungssystem<br />  <br />Wiekommtmein Commit in den zentralen master-branch?<br />stefan<br />feature1<br />3<br />3<br />Edited File 2<br />Edited File 2<br />Edited File 1<br />Added File 2<br />Edited File 1<br />Added File 2<br />2<br />2<br />origin/<br />master<br />master<br />1<br />1<br />Added File 1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  19. 19. Git – einverteiltesVersionierungssystem<br />  <br />Wiekommtmein Commit in den zentralen master-branch?<br /><ul><li>JederEntwicklerpusheddirekt
  20. 20. Integrationsmanager merged
  21. 21. Gerrit peer code review</li></ul>stefan<br />feature1<br />3<br />3<br />Edited File 2<br />Edited File 2<br />Edited File 1<br />Added File 2<br />Edited File 1<br />Added File 2<br />2<br />2<br />origin/<br />master<br />master<br />1<br />1<br />Added File 1<br />Added File 1<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  22. 22. Neue* Features in Egit 1.0<br />Release 0.10<br /><ul><li> Pull
  23. 23. Rebase
  24. 24. Cherry-Pick
  25. 25. Merge tool
  26. 26. http Authentifizierung</li></ul>* seit 0.9<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  27. 27. Neue* Features in Egit 1.0<br />Release 0.10<br /><ul><li> Pull
  28. 28. Rebase
  29. 29. Cherry-Pick
  30. 30. Merge tool
  31. 31. http Authentifizierung</li></ul>Release 0.11<br /><ul><li> Fetch from Gerrit
  32. 32. Push to / Fetch from Upstream
  33. 33. Tree Compare
  34. 34. Mylyn Integration</li></ul>* seit 0.9<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  35. 35. Neue* Features in Egit 1.0<br />Release 0.10<br /><ul><li> Pull
  36. 36. Rebase
  37. 37. Cherry-Pick
  38. 38. Merge tool
  39. 39. http Authentifizierung</li></ul>Release 0.11<br /><ul><li> Fetch from Gerrit
  40. 40. Push to / Fetch from Upstream
  41. 41. Tree Compare
  42. 42. Mylyn Integration</li></ul>Release 0.12<br /><ul><li> Gerrit Configuration
  43. 43. Git config in preferences
  44. 44. Gerrit Mylyn connector</li></ul>* seit 0.9<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  45. 45. Neue* Features in Egit 1.0<br />Release 0.10<br /><ul><li> Pull
  46. 46. Rebase
  47. 47. Cherry-Pick
  48. 48. Merge tool
  49. 49. http Authentifizierung</li></ul>Release 0.11<br /><ul><li> Fetch from Gerrit
  50. 50. Push to / Fetch from Upstream
  51. 51. Tree Compare
  52. 52. Mylyn Integration</li></ul>Release 0.12<br /><ul><li> Gerrit Configuration
  53. 53. Git config in preferences
  54. 54. Gerrit Mylyn connector</li></ul>Release 1.0<br /><ul><li> Commit Search und Commit Viewer
  55. 55. Staging View
  56. 56. Blame
  57. 57. GitHub Mylyn connector</li></ul>* seit 0.9<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  58. 58. EtwasStatistik<br />Zwischen 0.9 und 1.0<br /><ul><li> 1013 commits in EGit
  59. 59. 796 commits in JGit</li></ul>Committer (Contributor):<br /><ul><li> EGit: 15 (47), JGit: 9 (32)</li></ul>Fixed Bugs<br /><ul><li> 455 egit + jgit</li></ul>Indigo packages:<br /><ul><li> RCP/RAP, Modeling and LinuxTools</li></ul>* seit 0.9<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  60. 60. Gerrit ?<br />Code Review | © 2010 by M. Sohn<br />
  61. 61. Gerrit<br />Server, der die zentralenGit Repositories verwaltet<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  62. 62. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  63. 63. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  64. 64. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  65. 65. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  66. 66. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  67. 67. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  68. 68. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  69. 69. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  70. 70. Code Review – Vorteile<br />Guido van Rossum [1]<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  71. 71. Code Review – Vorteile<br />Guido van Rossum [1]<br />VierAugenfindenmehr Bugs<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  72. 72. Code Review – Vorteile<br />Guido van Rossum [1]<br />VierAugenfindenmehr Bugs<br />Einhaltung von Coding Standards<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  73. 73. Code Review – Vorteile<br />Guido van Rossum [1]<br />VierAugenfindenmehr Bugs<br />Einhaltung von Coding Standards<br />Mentoring von neuenEntwicklern<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  74. 74. Code Review – Vorteile<br />Guido van Rossum [1]<br />VierAugenfindenmehr Bugs<br />Einhaltung von Coding Standards<br />Mentoring von neuenEntwicklern<br />Etablierung von Vertrauensverhältnissen<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  75. 75. Code Review – Vorteile<br />Guido van Rossum [1]<br />VierAugenfindenmehr Bugs<br />Einhaltung von Coding Standards<br />Mentoring von neuenEntwicklern<br />Etablierung von Vertrauensverhältnissen<br />Gute Alternative zuPair Programming<br />[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf<br />Code Review | © 2010 by M. Sohn<br />
  76. 76. Gerrit<br />git<br />git<br />git<br />git<br />- verify proposed changes<br />- continuous integration builds<br />- clone repository <br />- fetch / push changes<br />Developer PC<br />Developer PC<br />Hudson<br />git<br />git<br />Copyright © M. Sohn, S. Lay, S. Zivkov, C. Halstrick, C. Aniszczyk, S. Pearce<br />
  77. 77. Gerrit<br />git<br />git<br />git<br />git<br />master<br />change 12<br />submit accepted <br />change 12<br />change 10<br />change 23<br />fetch change 23 <br />to try it<br />push improved <br />change 10<br />fetch master to get updates<br />Developer PC<br />Developer PC<br />git<br />git<br />git<br />git<br />Copyright © M. Sohn, S. Lay, S. Zivkov, C. Halstrick, C. Aniszczyk, S. Pearce<br />
  78. 78. Gerrit - Workflow<br />Code Review | © 2010 by M. Sohn<br />
  79. 79. Gerrit<br />http://egit.eclipse.org/r/ - change,825<br />Code Review | © 2010 by M. Sohn<br />
  80. 80. Gerrit<br />Was istsonstnochwissenswert?<br />Code Review | © 2010 by M. Sohn<br />
  81. 81. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Code Review | © 2010 by M. Sohn<br />
  82. 82. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Code Review | © 2010 by M. Sohn<br />
  83. 83. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Code Review | © 2010 by M. Sohn<br />
  84. 84. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Storage: JGit & DB<br />Code Review | © 2010 by M. Sohn<br />
  85. 85. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Storage: JGit & DB<br /> wird ersetzt durch <br />JGit only (erster Teil mit Gerrit 2.2) <br /> optional: JGit on distributed hashtable (HBase)<br /> -> scalable Gerrit on the Cloud<br />Code Review | © 2010 by M. Sohn<br />
  86. 86. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Storage: JGit & DB<br /> wird ersetzt durch <br />JGit only (erster Teil mit Gerrit 2.2) <br /> optional: JGit on distributed hashtable (HBase)<br /> -> scalable Gerrit on the Cloud<br />demnächst:<br /> Prolog rule engine für konfigurierbare Workflows<br /> Web app -> OSGi app for pluggable functionality<br />Code Review | © 2010 by M. Sohn<br />
  87. 87. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Storage: JGit & DB<br /> wird ersetzt durch <br />JGit only (erster Teil mit Gerrit 2.2) <br /> optional: JGit on distributed hashtable (HBase)<br /> -> scalable Gerrit on the Cloud<br />Verwender:<br /><ul><li>Android
  88. 88. JGit, EGit
  89. 89. Google, SAP, …
  90. 90. demnächst Eclipse …</li></ul>Code Review | © 2010 by M. Sohn<br />
  91. 91. No Free Lunch ? -- DEMO<br />Code Review | © 2010 by M. Sohn<br />
  92. 92. Code Review – Our Experience<br />Review all changes!<br />Review takes time (1 day … weeks) <br />Implies parallel workflow <br />Every team member should do reviews regularly<br />Authors have to wait for the review to happen<br />Git & Gerrit help a lot here<br />Code Review | © 2010 by M. Sohn<br />
  93. 93. Code Review – Tips<br />Small changes are much easier to review<br />A change should logically do one thing (not many)<br />No change shall break build or tests<br />Split big changes into series of digestible changes <br />(patch series)<br />- These changes depend on each other<br />- Last change should switch the new feature on<br />Commit message should explain Why<br />- The What should be obvious from the code change<br />Code Review | © 2010 by M. Sohn<br />
  94. 94. Conclusion<br />Code Review rocks !<br />Gerrit enables a nice code review workflow <br />DVCS like Git are powerful<br />Git supports convenient branching and merging <br />Gitis very fast and scales well<br />Code Review | © 2010 by M. Sohn<br />
  95. 95. Gerrit Code Review<br />Gerrit developed at http://code.google.com/p/gerrit<br />https://review.source.android.com/Gerrit for Android projects (also Gerrit)<br />Code Review | © 2010 by M. Sohn<br />
  96. 96. Git at Eclipse<br />EGit/JGit developed at http://egit.eclipse.org<br />http://git.eclipse.org/hosts live Eclipse Git repos<br />Virgo, Mylyn Review, ScalaModules, SWTBot …<br />http://dev.eclipse.org/git/index.html git mirrors for CVS<br />Read-only copies kept up-to-date<br />Can clone with git:// or http://<br />Code Review | © 2010 by M. Sohn<br />
  97. 97. git-add<br />git-format-patch<br />git-shortlog<br />git-relink<br />git-rev-parse<br />git-am<br />git-gc<br />git-show<br />git-remote<br />git-show-branch<br />git-archive<br />git-grep<br />git-stash<br />git-repack<br />git-verify-tag<br />git-bisect<br />git-init<br />git-status<br />git-replace<br />git-whatchanged<br />git-branch<br />git-log<br />git-submodule<br />git-annotate<br />git-bundle<br />git-merge<br />* git-tag<br />git-blame<br />git-checkout<br />git-mv<br />git-config<br />git-cherry<br />.gitignore<br />git-cherry-pick<br />git-notes<br />git-fast-export<br />git-count-objects<br />git daemon<br />git-clean<br />git-pull<br />git-fast-import<br />git-difftool<br />HTTP support<br />git-clone<br />git-push<br />git-filter-branch<br />git-fsck<br />Mylynintegration<br />git-commit<br />git-rebase<br />git-mergetool<br />git-get-tar-commit-id<br />Staging View<br />git-describe<br />git-reset<br />git-pack-refs<br />git-help<br />* Synchronize View<br />git-diff<br />git-revert<br />git-prune<br />git-merge-tree<br />History View<br />git-fetch<br />git-rm<br />git-reflog<br />git-rerere<br />Repositories View<br />Features EGit 1.0<br />* planned for next release, supported, partial, missing, irrelevant for EGit<br />
  98. 98. Git Resources<br />Ask questions on the EGit forum or egit-dev/jgit-dev lists<br />http://git-scm.com/documentation is your friend<br />If you want comedy, watch Linus' talk at Google<br />http://www.youtube.com/watch?v=4XpnKHJAok8<br />Read the Pro Git book - http://progit.org/book/<br />Code Review | © 2010 by M. Sohn<br />
  99. 99. Gerrit Code Review - Outlook<br />MylynGerrit Connector in incubation<br />Port from SQL DB to HBase<br />Git Store:<br />Store review comments as git notes for offline review<br />Support for change dependencies across repositories<br />…<br />Code Review | © 2010 by M. Sohn<br />
  100. 100. Gerrit – Rebase<br />Code Review | © 2010 by M. Sohn<br />

×