Entwicklertag Karlsruhe 2011

  • 891 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
891
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
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
    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:
    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:
    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