ese 2010: using git in eclipse
TRANSCRIPT
PowerPoint Presentation
Using Git in Eclipsehttp://eclipse.org/egit
Matthias Sohn (SAP)[email protected]
+
=
Chris Aniszczyk (Red Hat)[email protected]
Learning Git There's no free lunch!
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
the purpose of this presentation isn't to teach you Git, you have to do that yourself!
Git Resourceshttp://git-scm.com/documentation is your friend
Watch Linus' talk at Googlehttp://www.youtube.com/watch?v=4XpnKHJAok8
Read the Pro Git book - http://progit.org/book/
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGit - Demo and Tour of EGit
Code Review at Eclipse
Gerrit
- Demo of Gerrit
Conclusion
Outline
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git
a distributed revision control system built by the Linux project
to automate patch workflow
Distributed means no central repository
No central authority!
Easy offline usage
Easy to fork a project
Protected against manipulation by cryptographic hashes
Really good at merging
Coordination only needed "after the fact
Easier to rejoin (or refresh) forked projects
Structured around commits (i.e. patches)
Integrates with email channel
Tools for identifying problem commits (git bisect)
Tools for restructuring branches w/ specific commits
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Projects using Git
Git is widely used and is the most popular distributed version control system
Git
Linux
Perl
Gnome
Qt
Ruby on Rails
Android
PostgreSQL
Wine
Fedora
Debian
X.org and so on...
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git at Eclipse
Eclipse defined a roadmap to move to Git in 2009
CVS is deprecated; SVN will be deprecated in the future
EGit is an Eclipse Team provider for Git
http://www.eclipse.org/egit/
JGit is a lightweight Java library implementing Git
http://www.eclipse.org/jgit/
The goal is to build an Eclipse community around Git EGit and JGit are still beta and we want to establish a feedback loop to improve the tooling
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git at Eclipse
EGit and JGit developed at http://egit.eclipse.org
http://git.eclipse.org/
hosts live Eclipse Git repos
Virgo, Mylyn Review, ECF, SWTBot
http://dev.eclipse.org/git/index.html
git mirrors for CVS
Read-only copies kept up-to-dateCan clone with git:// or http://
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
History of JGit and EGit
2005 Linus Torvalds starts Git
2006 Shawn Pearce starts JGit
2009 Eclipse decides for Git Roadmap
JGit/EGit move to eclipse.org
SAP joins JGit/EGit
3/2010 Released 0.7 (first release at Eclipse) Diff/Merge Algorithms, Automatic IP Logs
6/2010 Released 0.8 (Helios) Usability Improvements, Git Repositories View, Tagging
9/2010 Released 0.9 (Helios SR1) Merge, Synchronize View, .gitignore
Planned: 12/2010 0.10 (Helios SR2)3/2011 0.116/2011 1.0 (Indigo)
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Features EGit 0.10
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
.gitignore
git-checkout
git-mv
git-config
git-cherry
git daemon
git-cherry-pick
git-notes
git-fast-export
git-count-objects
Visual merge tool
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 0.10, * planned for 0.11
supported,partial,missing, irrelevant for EGit
Demo: A tour of EGit
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGitCode Review and EclipseGerritConclusion
Outline
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
What is Peer Code Review?
When one developer writes code, another developer is asked to review that code
A careful line-by-line critique
Happens in a non-threatening context
Goal is cooperation, not fault-finding
Often an integral part of coding process
Debugging someone else's broken code Involuntary code review: Not so good; emotions may flare
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Code Review Benefits
Four eyes catch more bugs
Catch bugs early to save hours of debugging
Enforce coding standards
Keep overall readability & code quality high
Mentoring of new developers
Learn from mistakes without breaking stuff
Establish trust relationships
Prepare for more delegation
Good alternative to pair programming
asynchronous and across locations
Guido van Rossum [1]
[1] http://code.google.com/p/rietveld/downloads/detail?name=Mondrian2006.pdf
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Code Review at
Eclipse ?
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Eclipse - Roles
CommitterFormally electedCan commit own changes without review
ContributorSmall changesreviewed by committersBigger changesalso
formal IP review by legal team
in separate protected Bugzilla (IPZilla)
Review Toolpatches attached to bug in Bugzillacomments in Bugzilla
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Code Review via Bugzilla
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Eclipse Review Process
Contributors
create patch using CVS, SVN, Git (since 2009)
attach patch to bug in Bugzilla
Committers
do code and IP review
comment, vote in Bugzilla
create CQ for changes needing IP review
commit accepted changes
IP Team
does IP review bigger changes from contributors
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Eclipse Review Process
Review not done for all changes
Each Eclipse.org project does it differently
Review tedious for contributors
(and also for committers mentoring contributors)
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGitCode Review and EclipseGerritConclusion
Outline
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit Code Review
Gerrit is a Code Review system based on JGit
http://code.google.com/p/gerrit/
Also serves as a git server
adding access control and workflow
Used by
Androidhttps://review.source.android.com/
JGit, EGithttp://egit.eclipse.org/r/
Google, SAP,
Eclipse wants to use it
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
History Gerrit Code Review
Gerrit: 4th Generation code review at Google
Google started code review with a Linux like review process
patch based
tooling based on Perforce CLI
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Google - Web based code review tools
Mondrian (Guido van Rossum)
based on Perforce, Google infrastructure
Google proprietary
Rietvield (Guido van Rossum)
based on Subversion
Open Source hosted on GoogleApp Engine
Gerrit (Shawn Pearce)
started as a fork of Rietvield
based on JGit and GWT
Open Source (Android)
Apache 2 license
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
One Branch per Feature
Master branch contains only reviewed and approved changes
master moves from good to better state after each (approved) change
Each feature branch is based on the Master branch
stable starting point
A change can really be abandoned because
no other approved change can depend on a not yet approved change
Gerrit will automatically reject a successor change of an abandoned change
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit Lifecycle of a Change
amastertopic
1
create local topic
branch
commit change
push it for review
do review
automated
verification
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit Lifecycle of a Change
cba12mastertopic
3
amastertopic
1
create local topic
branch
commit change
push it for review
do review
automated
verification
refine based on
review
push new patchsets
until review votes ok
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit Lifecycle of a Change
cba12mastertopic
3
amastertopic
1
create local topic
branch
commit change
push it for review
do review
automated
verification
refine based on
review
push new patchsets
until review votes ok
cba12mastertopic
3
d
Submit may lead to
server-side merge
or merge / rebase before
push
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit Workflow
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Gerrit
http://egit.eclipse.org/r/ - change,825
Using Git in Eclipse | 2010 by C. Aniszczyk and 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
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
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Demo: Code Review with Gerrit
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGitCode Review and EclipseGerritConclusion
Outline
Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
ConclusionEGit and JGit are evolving quickly
Gerrit enables a nice code review workflow
Git supports convenient branching and merging
Git is very fast and scales well
Eclipse and major other OS projects are moving to Git
Git and Gerrit kick ass!Using Git in Eclipse | 2010 by C. Aniszczyk and M. Sohn
11/02/10