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

Entwicklertag Karlsruhe 2011

on

  • 1,122 views

 

Statistics

Views

Total Views
1,122
Slideshare-icon Views on SlideShare
1,122
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 Entwicklertag Karlsruhe 2011 Presentation Transcript

    • 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
      +
      =
    • 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
    • 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
    • Git – einverteiltesVersionierungssystem
        
      JederEntwicklerbesitzteinkomplettes Repository
      VerteilteVersionierungssysteme (DVCS):
      Git, Mercurial, Bazaar, …
      Git: 2005 für die Linux-Kernel-Entwicklung
      GitistimKommen:
      • Linux, Android, Eclipse, Ruby on Rails …
      • Github
      • Integration in Eclipse, Netbeans, XCode
      Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
    • 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
    • Git – einverteiltesVersionierungssystem
        
      Gitversioniert Repositories, nicht Files
      Added File 1
      Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
    • Git – einverteiltesVersionierungssystem
        
      Gitversioniert Repositories, nicht Files:
      • Commit erzeugtneue Version des Repositories
      • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Git – einverteiltesVersionierungssystem
        
      Wiekommtmein Commit in den zentralen master-branch?
      • JederEntwickletpushtdirekt
      • Integrationsmanager merged
      • 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
    • Gerrit ?
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Server, der die zentralenGit Repositories verwaltet
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Access Control
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Access Control
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Access Control
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Access Control
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Code Review
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Code Review
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Code Review
      Gerrit
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Code Review
      Gerrit
      Code Review | © 2010 by M. Sohn
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Wiefunktioniert
      Code Review
      in Gerrit?
      Code Review | © 2010 by M. Sohn
    • Gerrit – Extreme Branching
      Code Review | © 2010 by M. Sohn
    • Ein Branch per Feature
      Code Review | © 2010 by M. Sohn
    • Ein Branch per Feature
      Master Branch enthältnur Changes, die ge-reviewed und approved wurden
      Code Review | © 2010 by M. Sohn
    • 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
    • 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
    • Gerrit - Workflow
      Code Review | © 2010 by M. Sohn
    • Gerrit
      http://egit.eclipse.org/r/ - change,825
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Was istsonstnochwissenswert?
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Gerrit = 4. Generation Code Review @ Google
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Gerrit = 4. Generation Code Review @ Google
      Open Source mit Apache 2 Lizenz
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Gerrit = 4. Generation Code Review @ Google
      Open Source mit Apache 2 Lizenz
      Gerritbasiert auf JGit und GWT
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Gerrit = 4. Generation Code Review @ Google
      Open Source mit Apache 2 Lizenz
      Gerritbasiert auf JGit und GWT
      Verwender:
      • Android
      • JGit, EGit
      • Google, SAP, …
      • Eclipse istinteressiert
      Code Review | © 2010 by M. Sohn
    • Gerrit
      Gerrit = 4. Generation Code Review @ Google
      Open Source mit Apache 2 Lizenz
      Gerritbasiert auf JGit und GWT
      Verwender:
      • Android
      • JGit, EGit
      • Google, SAP, …
      • Eclipse istinteressiert
      Shawn Pearce
      Code Review | © 2010 by M. Sohn
    • No Free Lunch ? -- DEMO
      Code Review | © 2010 by M. Sohn
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Gerrit – Rebase
      Code Review | © 2010 by M. Sohn