Entwicklertag Karlsruhe 2011
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Entwicklertag Karlsruhe 2011

on

  • 1,185 views

 

Statistics

Views

Total Views
1,185
Views on SlideShare
1,185
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Entwicklertag Karlsruhe 2011 Presentation Transcript

  • 1. Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit
    http://code.google.com/p/gerrit
    http://eclipse.org/egit
    EdwinKempin,
    Dr. Stefan Lay (SAP)
    edwin.kempin@sap.com, stefan.lay@sap.com
    Twitter: @stefanlay
    +
    =
  • 2. Agenda
    Git – einverteiltesVersionierungssystem
    Code Review mitGerrit
    Demo: LebenszykluseinerÄnderung
    Q & A
      
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 3. Die Hauptdarsteller
    GitisteinverteiltesVersionierungssystem
    EGitisteinEclipse Team Provider fürGit
    http://www.eclipse.org/egit/
    JGitisteineleichtgewichtige Java-BibliothekfürGit
    http://www.eclipse.org/jgit/
    Gerritistein Code-Review-System, basierend auf JGit
    http://code.google.com/p/gerrit/
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, SAP AG
  • 4. Git – einverteiltesVersionierungssystem
      
    JederEntwicklerbesitzteinkomplettes Repository
    VerteilteVersionierungssysteme (DVCS):
    Git, Mercurial, Bazaar, …
    Git: 2005 für die Linux-Kernel-Entwicklung
    GitistimKommen:
    • Linux, Android, Eclipse, Ruby on Rails …
    • 5. Github
    • 6. Integration in Eclipse, Netbeans, XCode
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 7. Geschichte von Git, JGit und EGit
    2005    LinusTorvaldsinitiiertGit
    2006    Shawn Pearce initiiert JGit
    2009    Eclipse entscheidetsichfürGit JGit/EGit ziehen um nach eclipse.org SAP beteiligtsich
    JGit/Egit-ProjektebenutzenGerrit 
    3/2010 JGit/EGit Release 0.7 (erstes Release bei Eclipse)  
    2010/11 Releases 0.8 – 0.12           
    3/2011 Eclipse Community Award: Most Innovative new feature
    5/2011 JGit proposed for JAX innovation award
    6/2011 Release 1.0 (Eclipse Indigo)
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
  • 8. Git – einverteiltesVersionierungssystem
      
    Gitversioniert Repositories, nicht Files
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
  • 9. Git – einverteiltesVersionierungssystem
      
    Gitversioniert Repositories, nicht Files:
    • Commit erzeugtneue Version des Repositories
    • 10. Version ist global eindeutigüber Hash-Wert (SHA-1)
    1
    Added File 1
    Commit
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 11. Git – einverteiltesVersionierungssystem
      
    Gitversioniert Repositories, nicht Files
    Edited File 1
    Added File 2
    1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
  • 12. Git – einverteiltesVersionierungssystem
      
    Gitversioniert Repositories, nicht Files
    Edited File 1
    Added File 2
    2
    Commit
    1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
  • 13. Git – einverteiltesVersionierungssystem
      
    Branches: Zeiger auf Commits
    Edited File 1
    Added File 2
    2
    master
    1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 14. Git – einverteiltesVersionierungssystem
      
    Clonen: Duplizieren des Repositories
    clone
    Edited File 1
    Added File 2
    Edited File 1
    Added File 2
    2
    2
    master
    origin/
    master
    1
    1
    Added File 1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
  • 15. Git – einverteiltesVersionierungssystem
      
    Arbeitenmitlokalen branches
    feature1
    Edited File 1
    Added File 2
    2
    origin/
    master
    1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
  • 16. Git – einverteiltesVersionierungssystem
      
    Arbeitenmitlokalen branches
    feature1
    Edited File 2
    3
    Edited File 1
    Added File 2
    2
    origin/
    master
    1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 17. Git – einverteiltesVersionierungssystem
      
    Arbeitenmitlokalen branches
    push
    stefan
    feature1
    3
    3
    Edited File 2
    Edited File 2
    Edited File 1
    Added File 2
    Edited File 1
    Added File 2
    2
    2
    origin/
    master
    master
    1
    1
    Added File 1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 18. Git – einverteiltesVersionierungssystem
      
    Wiekommtmein Commit in den zentralen master-branch?
    stefan
    feature1
    3
    3
    Edited File 2
    Edited File 2
    Edited File 1
    Added File 2
    Edited File 1
    Added File 2
    2
    2
    origin/
    master
    master
    1
    1
    Added File 1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 19. Git – einverteiltesVersionierungssystem
      
    Wiekommtmein Commit in den zentralen master-branch?
    • JederEntwickletpushtdirekt
    • 20. Integrationsmanager merged
    • 21. Gerrit peer code review
    stefan
    feature1
    3
    3
    Edited File 2
    Edited File 2
    Edited File 1
    Added File 2
    Edited File 1
    Added File 2
    2
    2
    origin/
    master
    master
    1
    1
    Added File 1
    Added File 1
    Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
  • 22. Gerrit ?
    Code Review | © 2010 by M. Sohn
  • 23. Gerrit
    Server, der die zentralenGit Repositories verwaltet
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 24. Gerrit
    Access Control
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 25. Gerrit
    Access Control
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 26. Gerrit
    Access Control
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 27. Gerrit
    Access Control
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 28. Gerrit
    Code Review
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 29. Gerrit
    Code Review
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 30. Gerrit
    Code Review
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 31. Gerrit
    Code Review
    Gerrit
    Code Review | © 2010 by M. Sohn
  • 32. Code Review – Vorteile
    Guido van Rossum [1]
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 33. Code Review – Vorteile
    Guido van Rossum [1]
    VierAugenfindenmehr Bugs
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 34. Code Review – Vorteile
    Guido van Rossum [1]
    VierAugenfindenmehr Bugs
    Einhaltung von Coding Standards
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 35. Code Review – Vorteile
    Guido van Rossum [1]
    VierAugenfindenmehr Bugs
    Einhaltung von Coding Standards
    Mentoring von neuenEntwicklern
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 36. Code Review – Vorteile
    Guido van Rossum [1]
    VierAugenfindenmehr Bugs
    Einhaltung von Coding Standards
    Mentoring von neuenEntwicklern
    Etablierung von Vertrauensverhältnissen
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 37. Code Review – Vorteile
    Guido van Rossum [1]
    VierAugenfindenmehr Bugs
    Einhaltung von Coding Standards
    Mentoring von neuenEntwicklern
    Etablierung von Vertrauensverhältnissen
    Gute Alternative zuPair Programming
    [1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
    Code Review | © 2010 by M. Sohn
  • 38. Wiefunktioniert
    Code Review
    in Gerrit?
    Code Review | © 2010 by M. Sohn
  • 39. Gerrit – Extreme Branching
    Code Review | © 2010 by M. Sohn
  • 40. Ein Branch per Feature
    Code Review | © 2010 by M. Sohn
  • 41. Ein Branch per Feature
    Master Branch enthältnur Changes, die ge-reviewed und approved wurden
    Code Review | © 2010 by M. Sohn
  • 42. Ein Branch per Feature
    Master Branch enthältnur Changes, die ge-reviewed und approved wurden
    Jeder Feature Branch basiert auf dem Master Branch
    Code Review | © 2010 by M. Sohn
  • 43. Ein Branch per Feature
    Master Branch enthältnur Changes, die ge-reviewed und approved wurden
    Jeder Feature Branch basiert auf dem Master Branch
    Ein Change kann abandoned (aufgegeben) werden
    Code Review | © 2010 by M. Sohn
  • 44. Gerrit - Workflow
    Code Review | © 2010 by M. Sohn
  • 45. Gerrit
    http://egit.eclipse.org/r/ - change,825
    Code Review | © 2010 by M. Sohn
  • 46. Gerrit
    Was istsonstnochwissenswert?
    Code Review | © 2010 by M. Sohn
  • 47. Gerrit
    Gerrit = 4. Generation Code Review @ Google
    Code Review | © 2010 by M. Sohn
  • 48. Gerrit
    Gerrit = 4. Generation Code Review @ Google
    Open Source mit Apache 2 Lizenz
    Code Review | © 2010 by M. Sohn
  • 49. Gerrit
    Gerrit = 4. Generation Code Review @ Google
    Open Source mit Apache 2 Lizenz
    Gerritbasiert auf JGit und GWT
    Code Review | © 2010 by M. Sohn
  • 50. Gerrit
    Gerrit = 4. Generation Code Review @ Google
    Open Source mit Apache 2 Lizenz
    Gerritbasiert auf JGit und GWT
    Verwender:
    • Android
    • 51. JGit, EGit
    • 52. Google, SAP, …
    • 53. Eclipse istinteressiert
    Code Review | © 2010 by M. Sohn
  • 54. Gerrit
    Gerrit = 4. Generation Code Review @ Google
    Open Source mit Apache 2 Lizenz
    Gerritbasiert auf JGit und GWT
    Verwender:
    • Android
    • 55. JGit, EGit
    • 56. Google, SAP, …
    • 57. Eclipse istinteressiert
    Shawn Pearce
    Code Review | © 2010 by M. Sohn
  • 58. No Free Lunch ? -- DEMO
    Code Review | © 2010 by M. Sohn
  • 59. Code Review – Our Experience
    Review all changes!
    Review takes time (1 day … weeks) 
    Implies parallel workflow 
    Every team member should do reviews regularly
    Authors have to wait for the review to happen
    Git & Gerrit help a lot here
    Code Review | © 2010 by M. Sohn
  • 60. Code Review – Tips
    Small changes are much easier to review
    A change should logically do one thing (not many)
    No change shall break build or tests
    Split big changes into series of digestible changes
    (patch series)
    - These changes depend on each other
    - Last change should switch the new feature on
    Commit message should explain Why
    - The What should be obvious from the code change
    Code Review | © 2010 by M. Sohn
  • 61. Conclusion
    Code Review rocks !
    Gerrit enables a nice code review workflow
    DVCS like Git are powerful
    Git supports convenient branching and merging
    Gitis very fast and scales well
    Code Review | © 2010 by M. Sohn
  • 62. Gerrit Code Review
    Gerrit developed at http://code.google.com/p/gerrit
    https://review.source.android.com/Gerrit for Android projects (also Gerrit)
    Code Review | © 2010 by M. Sohn
  • 63. Git at Eclipse
    EGit/JGit developed at http://egit.eclipse.org
    http://git.eclipse.org/hosts live Eclipse Git repos
    Virgo, Mylyn Review, ScalaModules, SWTBot …
    http://dev.eclipse.org/git/index.html git mirrors for CVS
    Read-only copies kept up-to-date
    Can clone with git:// or http://
    Code Review | © 2010 by M. Sohn
  • 64. Git Resources
    Ask questions on the EGit forum or egit-dev/jgit-dev lists
    http://git-scm.com/documentation is your friend
    If you want comedy, watch Linus' talk at Google
    http://www.youtube.com/watch?v=4XpnKHJAok8
    Read the Pro Git book - http://progit.org/book/
    Code Review | © 2010 by M. Sohn
  • 65. Gerrit Code Review - Outlook
    Upcoming proposal for MylynGerrit Connector
    Port from SQL DB to Cassandra
    Store review comments as git notes for offline review
    Support for change dependencies across repositories

    Code Review | © 2010 by M. Sohn
  • 66. git-add
    git-format-patch
    git-shortlog
    git-relink
    git-rev-parse
    git-am
    git-gc
    git-show
    git-remote
    git-show-branch
    git-archive
    git-grep
    git-stash
    git-repack
    git-verify-tag
    git-bisect
    git-init
    git-status
    git-replace
    git-whatchanged
    git-branch
    git-log
    git-submodule
    git-annotate
    git-bundle
    * git-merge
    * git-tag
    * git-blame
    git-checkout
    git-mv
    git-config
    git-cherry
    .gitignore
    * git-cherry-pick
    git-notes
    git-fast-export
    git-count-objects
    git daemon
    git-clean
    * git-pull
    git-fast-import
    git-difftool
    * HTTP support
    git-clone
    git-push
    git-filter-branch
    git-fsck
    * Mylyn integration
    git-commit
    * git-rebase
    git-mergetool
    git-get-tar-commit-id
    * Staging View
    git-describe
    git-reset
    git-pack-refs
    git-help
    * Synchronize View
    git-diff
    git-revert
    git-prune
    git-merge-tree
    History View
    git-fetch
    git-rm
    git-reflog
    git-rerere
    Repositories View
    Features EGit 0.9
    * planned for next release, supported, partial, missing, irrelevant for EGit
  • 67. Gerrit – Rebase
    Code Review | © 2010 by M. Sohn