Your SlideShare is downloading. ×
0
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Entwicklertag Karlsruhe 2011
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Entwicklertag Karlsruhe 2011

952

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
952
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit<br />http://code.google.com/p/gerrit<br />http://eclipse.org/egit<br />EdwinKempin,<br />Dr. Stefan Lay (SAP)<br />edwin.kempin@sap.com, stefan.lay@sap.com<br />Twitter: @stefanlay<br />+<br />=<br />
  • 2. Agenda<br />Git – einverteiltesVersionierungssystem<br />Code Review mitGerrit<br />Demo: LebenszykluseinerÄnderung<br />Q & A<br />  <br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  • 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. 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 …
  • 5. Github
  • 6. Integration in Eclipse, Netbeans, XCode</li></ul>Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG<br />
  • 7. 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 />2010/11 Releases 0.8 – 0.12            <br />3/2011 Eclipse Community Award: Most Innovative new feature<br />5/2011 JGit proposed for JAX innovation award<br />6/2011 Release 1.0 (Eclipse Indigo)<br />Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG<br />
  • 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. Git – einverteiltesVersionierungssystem<br />  <br />Gitversioniert Repositories, nicht Files:<br /><ul><li> Commit erzeugtneue Version des Repositories
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Git – einverteiltesVersionierungssystem<br />  <br />Wiekommtmein Commit in den zentralen master-branch?<br /><ul><li>JederEntwickletpushtdirekt
  • 20. Integrationsmanager merged
  • 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. Gerrit ?<br />Code Review | © 2010 by M. Sohn<br />
  • 23. Gerrit<br />Server, der die zentralenGit Repositories verwaltet<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 24. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 25. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 26. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 27. Gerrit<br />Access Control<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 28. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 29. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 30. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 31. Gerrit<br />Code Review<br />Gerrit<br />Code Review | © 2010 by M. Sohn<br />
  • 32. 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 />
  • 33. 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 />
  • 34. 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 />
  • 35. 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 />
  • 36. 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 />
  • 37. 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 />
  • 38. Wiefunktioniert<br />Code Review<br />in Gerrit?<br />Code Review | © 2010 by M. Sohn<br />
  • 39. Gerrit – Extreme Branching<br />Code Review | © 2010 by M. Sohn<br />
  • 40. Ein Branch per Feature<br />Code Review | © 2010 by M. Sohn<br />
  • 41. Ein Branch per Feature<br />Master Branch enthältnur Changes, die ge-reviewed und approved wurden<br />Code Review | © 2010 by M. Sohn<br />
  • 42. Ein Branch per Feature<br />Master Branch enthältnur Changes, die ge-reviewed und approved wurden<br />Jeder Feature Branch basiert auf dem Master Branch<br />Code Review | © 2010 by M. Sohn<br />
  • 43. Ein Branch per Feature<br />Master Branch enthältnur Changes, die ge-reviewed und approved wurden<br />Jeder Feature Branch basiert auf dem Master Branch<br />Ein Change kann abandoned (aufgegeben) werden<br />Code Review | © 2010 by M. Sohn<br />
  • 44. Gerrit - Workflow<br />Code Review | © 2010 by M. Sohn<br />
  • 45. Gerrit<br />http://egit.eclipse.org/r/ - change,825<br />Code Review | © 2010 by M. Sohn<br />
  • 46. Gerrit<br />Was istsonstnochwissenswert?<br />Code Review | © 2010 by M. Sohn<br />
  • 47. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Code Review | © 2010 by M. Sohn<br />
  • 48. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Code Review | © 2010 by M. Sohn<br />
  • 49. 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 />
  • 50. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Verwender:<br /><ul><li>Android
  • 51. JGit, EGit
  • 52. Google, SAP, …
  • 53. Eclipse istinteressiert</li></ul>Code Review | © 2010 by M. Sohn<br />
  • 54. Gerrit<br />Gerrit = 4. Generation Code Review @ Google<br />Open Source mit Apache 2 Lizenz<br />Gerritbasiert auf JGit und GWT<br />Verwender:<br /><ul><li>Android
  • 55. JGit, EGit
  • 56. Google, SAP, …
  • 57. Eclipse istinteressiert</li></ul>Shawn Pearce<br />Code Review | © 2010 by M. Sohn<br />
  • 58. No Free Lunch ? -- DEMO<br />Code Review | © 2010 by M. Sohn<br />
  • 59. 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 />
  • 60. 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 />
  • 61. 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 />
  • 62. 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 />
  • 63. 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 />
  • 64. 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 />
  • 65. Gerrit Code Review - Outlook<br />Upcoming proposal for MylynGerrit Connector<br />Port from SQL DB to Cassandra<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 />
  • 66. 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 />* Mylyn integration<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 0.9<br />* planned for next release, supported, partial, missing, irrelevant for EGit<br />
  • 67. Gerrit – Rebase<br />Code Review | © 2010 by M. Sohn<br />

×