effiziente entwicklungsprozesse mit git, egit und gerrit - intland technology day stuttgart...
Post on 16-May-2015
2.100 Views
Preview:
DESCRIPTION
TRANSCRIPT
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit
http://code.google.com/p/gerrithttp://eclipse.org/egit
+ =Matthias Sohn (SAP)matthias.sohn@sap.comTwitter: @masohn
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: Entwicklung mit Gerrit Code Review neue Features in EGit
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 | © 2010 by Stefan Lay, SAP AG
Geschichte von Git, JGit und EGit2005 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) 6/2010 Release 0.8 (Helios) 9/2010 Release 0.9 (Helios SR1)
2010/11 Releases 0.10 – 0.12 3/2011 Eclipse Community Award: Most Innovative new feature
6/2011 Release 1.0 (Eclipse Indigo)
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, 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 Entwickler pushed 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
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Neue* Features in Egit 1.0
* seit 0.9
Release 0.10• Pull• Rebase • Cherry-Pick• Merge tool• http
Authentifizierung
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Neue* Features in Egit 1.0
* seit 0.9
Release 0.10• Pull• Rebase • Cherry-Pick• Merge tool• http
Authentifizierung
Release 0.11• Fetch from Gerrit• Push to / Fetch from Upstream• Tree Compare• Mylyn Integration
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Neue* Features in Egit 1.0
* seit 0.9
Release 0.10• Pull• Rebase • Cherry-Pick• Merge tool• http
Authentifizierung
Release 0.11• Fetch from Gerrit• Push to / Fetch from Upstream• Tree Compare• Mylyn Integration
Release 0.12• Gerrit Configuration• Git config in preferences• Gerrit Mylyn connector
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Neue* Features in Egit 1.0
* seit 0.9
Release 0.10• Pull• Rebase • Cherry-Pick• Merge tool• http
Authentifizierung
Release 0.11• Fetch from Gerrit• Push to / Fetch from Upstream• Tree Compare• Mylyn Integration
Release 0.12• Gerrit Configuration• Git config in preferences• Gerrit Mylyn connector
Release 1.0• Commit Search und Commit Viewer• Staging View• Blame• GitHub Mylyn connector
Effiziente Entwicklungsprozesse mit Eclipse, Git und Gerrit | © 2010 by Stefan Lay, SAP AG
Etwas Statistik
* seit 0.9
Zwischen 0.9 und 1.0 1013 commits in EGit 796 commits in JGit
Committer (Contributor): EGit: 15 (47), JGit: 9 (32)
Fixed Bugs 455 egit + jgit
Indigo packages: RCP/RAP, Modeling and LinuxTools
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
Developer PC
Gerrit
git gitgitgit
Developer PC
gitgit
Hudson
- clone repository - fetch / push changes
- verify proposed changes- continuous integration builds
Copyright © M. Sohn, S. Lay, S. Zivkov, C. Halstrick, C. Aniszczyk, S. Pearce
Copyright © M. Sohn, S. Lay, S. Zivkov, C. Halstrick, C. Aniszczyk, S. Pearce
Developer PC
gitgit
Gerrit
git gitgitgit
push improved change 10
Developer PC
gitgit
fetch change 23 to try it
master
change 12
change 10
change 23
submit accepted change 12
fetch master to get updates
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 LizenzGerrit basiert auf JGit und GWT
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 LizenzGerrit basiert auf JGit und GWTStorage: JGit & DB
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 LizenzGerrit basiert auf JGit und GWTStorage: JGit & DB
wird ersetzt durchJGit only (erster Teil mit Gerrit 2.2)optional: JGit on distributed hashtable (HBase)
-> scalable Gerrit on the Cloud
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 LizenzGerrit basiert auf JGit und GWTStorage: JGit & DB
wird ersetzt durchJGit only (erster Teil mit Gerrit 2.2)optional: JGit on distributed hashtable (HBase)
-> scalable Gerrit on the Clouddemnächst:
Prolog rule engine für konfigurierbare WorkflowsWeb app -> OSGi app for pluggable functionality
Gerrit
Code Review | © 2010 by M. Sohn
Gerrit = 4. Generation Code Review @ Google
Open Source mit Apache 2 LizenzGerrit basiert auf JGit und GWTStorage: JGit & DB
wird ersetzt durchJGit only (erster Teil mit Gerrit 2.2)optional: JGit on distributed hashtable (HBase)
-> scalable Gerrit on the Cloud
Verwender:• Android• JGit, EGit• Google, SAP, …• demnächst Eclipse …
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
Features EGit 1.0
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
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
Mylyn Gerrit Connector in incubation
Port from SQL DB to HBase
Git Store:Store review comments as git notes for offline review
Support for change dependencies across repositories
…
Code Review | © 2010 by M. Sohn
Code Review | © 2010 by M. Sohn
Gerrit – Rebase
top related