entwicklertag karlsruhe 2011
TRANSCRIPT
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit
http://code.google.com/p/gerrithttp://eclipse.org/egit
EdwinKempin,Dr. Stefan Lay (SAP)[email protected], [email protected]
Twitter: @stefanlay
+ =
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Agenda
Git – ein verteiltes Versionierungssystem
Code Review mit Gerrit
Demo: Lebenszyklus einer Änderung
Q & A
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, SAP AG
Die Hauptdarsteller
Git ist ein verteiltes Versionierungssystem
EGit ist ein Eclipse Team Provider für Githttp://www.eclipse.org/egit/
JGit ist eine leichtgewichtige Java-Bibliothek für Git http://www.eclipse.org/jgit/
Gerrit ist ein Code-Review-System, basierend auf JGit http://code.google.com/p/gerrit/
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Jeder Entwickler besitzt ein komplettes Repository
Verteilte Versionierungssysteme (DVCS):Git, Mercurial, Bazaar, …
Git: 2005 für die Linux-Kernel-Entwicklung
Git ist im Kommen: • Linux, Android, Eclipse, Ruby on Rails …• Github• Integration in Eclipse, Netbeans, XCode
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Geschichte von Git, JGit und EGit
2005 Linus Torvalds initiiert Git
2006 Shawn Pearce initiiert JGit
2009 Eclipse entscheidet sich für Git JGit/EGit ziehen um nach eclipse.org
SAP beteiligt sich JGit/Egit-Projekte benutzen Gerrit
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 feature5/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, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Git versioniert Repositories, nicht Files
Added File 1
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Git versioniert Repositories, nicht Files:• Commit erzeugt neue Version des Repositories• Version ist global eindeutig über Hash-Wert (SHA-1)
Added File 11Commit
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Git versioniert Repositories, nicht Files
Added File 11
Edited File 1Added File 2
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Git versioniert Repositories, nicht Files
Added File 1
2
1
Edited File 1Added File 2Commit
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Branches: Zeiger auf Commits
Added File 1
2
1
Edited File 1Added File 2master
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Clonen: Duplizieren des Repositories
Added File 1
2
1
Edited File 1Added File 2master
Added File 1
2
1
Edited File 1Added File 2origin/
master
clone
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Arbeiten mit lokalen branches
Added File 1
2
1
Edited File 1Added File 2origin/
master
feature1
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Arbeiten mit lokalen branches
Added File 1
2
1
Edited File 1Added File 2origin/
master
feature13
Edited File 2
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Arbeiten mit lokalen branches
Added File 1
2
1
Edited File 1Added File 2origin/
master
stefan3 Edited File 2
Added File 1
2
1
Edited File 1Added File 2master
feature13 Edited File 2
push
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Wie kommt mein Commit in den zentralen master-branch?
Added File 1
2
1
Edited File 1Added File 2origin/
master
stefan3 Edited File 2
Added File 1
2
1
Edited File 1Added File 2master
feature13 Edited File 2
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2011 by Stefan Lay, Edwin Kempin, SAP AG
Git – ein verteiltes Versionierungssystem
Wie kommt mein Commit in den zentralen master-branch?• Jeder Entwicklet pusht direkt • Integrationsmanager merged• Gerrit peer code review
Added File 1
2
1
Edited File 1Added File 2origin/
master
stefan3 Edited File 2
Added File 1
2
1
Edited File 1Added File 2master
feature13 Edited File 2
Gerrit ?
Code Review | © 2010 by M. Sohn
Gerrit
Server, der die zentralen Git Repositories verwaltet
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Access Control
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Access Control
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Access Control
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Access Control
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Code Review
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Code Review
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Code Review
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Code Review
Code Review | © 2010 by M. Sohn
Gerrit
Code Review – Vorteile
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code Review – Vorteile
Vier Augen finden mehr Bugs
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code Review – Vorteile
Vier Augen finden mehr Bugs
Einhaltung von Coding Standards
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code Review – Vorteile
Vier Augen finden mehr Bugs
Einhaltung von Coding Standards
Mentoring von neuen Entwicklern
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code Review – Vorteile
Vier Augen finden mehr Bugs
Einhaltung von Coding Standards
Mentoring von neuen Entwicklern
Etablierung von Vertrauensverhältnissen
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Code Review – Vorteile
Vier Augen finden mehr Bugs
Einhaltung von Coding Standards
Mentoring von neuen Entwicklern
Etablierung von Vertrauensverhältnissen
Gute Alternative zu Pair Programming
Code Review | © 2010 by M. Sohn
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Wie funktioniert
Code Review | © 2010 by M. Sohn
Code Review
in Gerrit?
Code Review | © 2010 by M. Sohn
Gerrit – Extreme Branching
Ein Branch per Feature
Code Review | © 2010 by M. Sohn
Ein Branch per Feature
Master Branch enthält nur Changes, die ge-reviewed und approved wurden
Code Review | © 2010 by M. Sohn
Ein Branch per Feature
Master Branch enthält nur 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ält nur 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
Code Review | © 2010 by M. Sohn http://egit.eclipse.org/r/ - change,825
Was ist sonst noch wissenswert?
Code Review | © 2010 by M. Sohn
Gerrit
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 Lizenz
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 Lizenz
Gerrit basiert auf JGit und GWT
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 Lizenz
Gerrit basiert auf JGit und GWT
Verwender:• Android• JGit, EGit• Google, SAP, …• Eclipse ist interessiert
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 Lizenz
Gerrit basiert auf JGit und GWT
Verwender:• Android• JGit, EGit• Google, SAP, …• Eclipse ist interessiert
Shawn Pearce
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
Git is 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 reposVirgo, Mylyn Review, ScalaModules, SWTBot …
http://dev.eclipse.org/git/index.html git mirrors for CVSRead-only copies kept up-to-dateCan 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 Googlehttp://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 Mylyn Gerrit 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
Features EGit 0.9
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
* planned for next release, supported, partial, missing, irrelevant for EGit
Code Review | © 2010 by M. Sohn
Gerrit – Rebase