Using Git in Eclipse
http://eclipse.org/egit
Matthias Sohn (SAP)
matthias.sohn@sap.com
+ =
Chris Aniszczyk (Red Hat)
zx@re...
Learning Git – There's no free lunch!
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
… the purpose of this pres...
Git Resources
http://git-scm.com/documentation is your friend
Watch Linus' talk at Google
http://www.youtube.com/watch?v=4...
Git, EGit and JGit
- Demo and Tour of EGit
Code Review at Eclipse
Gerrit
- Demo of Gerrit
Conclusion
Outline
Using Git in ...
Git
… a distributed revision control system built by the
Linux project to automate patch workflow
Distributed means no cen...
Projects using Git
… Git is widely used and is the most popular
distributed version control system
Git
Linux
Perl
Gnome
Qt...
Git at Eclipse
Eclipse defined a roadmap to move to Git in 2009
CVS is deprecated; SVN will be deprecated in the future
EG...
Git at Eclipse
EGit and JGit developed at http://egit.eclipse.org
http://git.eclipse.org/
hosts live Eclipse Git repos
Vir...
History of JGit and EGit
2005 Linus Torvalds starts Git
2006 Shawn Pearce starts JGit
2009 Eclipse decides for Git Roadmap...
Features EGit 0.10
git-addgit-add git-format-patchgit-format-patch git-shortloggit-shortlog git-relinkgit-relink git-rev-p...
Demo: A tour of EGit
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGit
Code Review and Eclipse
Gerrit
Conclusion
Outline
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. ...
What is Peer Code Review?
When one developer writes code, another developer
is asked to review that code
A careful line-by...
Code Review – Benefits
Four eyes catch more bugs
 Catch bugs early to save hours of debugging
Enforce coding standards
 ...
Code Review at
Eclipse ?
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
Eclipse - Roles
Committer
Formally elected
Can commit own changes without review
Contributor
Small changes
reviewed by com...
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
Co...
Eclipse – Review Process
Review not done for all changes
Each Eclipse.org project does it differently
Review tedious for c...
Git, EGit and JGit
Code Review and Eclipse
Gerrit
Conclusion
Outline
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. ...
Gerrit Code Review
Gerrit is a Code Review system based on JGit
http://code.google.com/p/gerrit/
Also serves as a git serv...
History Gerrit Code Review
Gerrit: 4th Generation code review at Google
Google started code review with a Linux like revie...
Google - Web based code review tools
Mondrian (Guido van Rossum)
• based on Perforce, Google infrastructure
• Google propr...
One Branch per Feature
Master branch contains only reviewed and approved changes
• master moves from good to better state ...
Gerrit – Lifecycle of a Change
a
master
topic
1
•
create local topic
branch
•
commit change
•
push it for review
•
do revi...
Gerrit – Lifecycle of a Change
c
b
a1
2
mastertopic
3
a
master
topic
1
•
create local topic
branch
•
commit change
•
push ...
Gerrit – Lifecycle of a Change
c
b
a1
2
mastertopic
3
a
master
topic
1
•
create local topic
branch
•
commit change
•
push ...
Gerrit Workflow
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
Gerrit
http://egit.eclipse.org/r/ - change,825Using 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 me...
Gerrit Code Review - Outlook
Upcoming proposal for Mylyn Gerrit Connector
Port from SQL DB to Cassandra
Store review comme...
Demo: Code Review with Gerrit
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
Git, EGit and JGit
Code Review and Eclipse
Gerrit
Conclusion
Outline
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. ...
Conclusion
EGit and JGit are evolving quickly
Gerrit enables a nice code review workflow
Git supports convenient branching...
Upcoming SlideShare
Loading in...5
×

ESE 2010: Using Git in Eclipse

3,316

Published on

A talk given at Eclipse Summit Europe 2010 on using Git in Eclipse.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,316
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
74
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • <number>
  • ESE 2010: Using Git in Eclipse

    1. 1. Using Git in Eclipse http://eclipse.org/egit Matthias Sohn (SAP) matthias.sohn@sap.com + = Chris Aniszczyk (Red Hat) zx@redhat.com
    2. 2. 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!
    3. 3. Git Resources http://git-scm.com/documentation is your friend Watch Linus' talk at Google http://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
    4. 4. 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
    5. 5. 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
    6. 6. 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
    7. 7. 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
    8. 8. 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-date Can clone with git:// or http:// Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    9. 9. 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.11 6/2011 1.0 (Indigo) Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    10. 10. Features EGit 0.10 git-addgit-add git-format-patchgit-format-patch git-shortloggit-shortlog git-relinkgit-relink git-rev-parsegit-rev-parse git-amgit-am git-gcgit-gc git-showgit-show git-remotegit-remote git-show-branchgit-show-branch git-archivegit-archive git-grepgit-grep git-stashgit-stash git-repackgit-repack git-verify-taggit-verify-tag git-bisectgit-bisect git-initgit-init git-statusgit-status git-replacegit-replace git-whatchangedgit-whatchanged git-branchgit-branch git-loggit-log git-submodulegit-submodule git-annotategit-annotate git-bundlegit-bundle * git-merge* git-merge * git-tag* git-tag * git-blame* git-blame .gitignore.gitignore git-checkoutgit-checkout git-mvgit-mv git-configgit-config git-cherrygit-cherry git daemongit daemon git-cherry-pickgit-cherry-pick git-notesgit-notes git-fast-exportgit-fast-export git-count-objectsgit-count-objects Visual merge toolVisual merge tool git-cleangit-clean  git-pull git-pull git-fast-importgit-fast-import git-difftoolgit-difftool ** HTTP support** HTTP support git-clonegit-clone git-pushgit-push git-filter-branchgit-filter-branch git-fsckgit-fsck * Mylyn integration* Mylyn integration git-commitgit-commit ** git-rebase** git-rebase git-mergetoolgit-mergetool git-get-tar-commit-idgit-get-tar-commit-id * Staging View* Staging View git-describegit-describe git-resetgit-reset git-pack-refsgit-pack-refs git-helpgit-help * Synchronize View* Synchronize View git-diffgit-diff git-revertgit-revert git-prunegit-prune git-merge-treegit-merge-tree History ViewHistory View git-fetchgit-fetch git-rmgit-rm git-refloggit-reflog git-rereregit-rerere Repositories ViewRepositories View ** planned for 0.10, * planned for 0.11 supported, partial, missing, irrelevant for EGit
    11. 11. Demo: A tour of EGit Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    12. 12. Git, EGit and JGit Code Review and Eclipse Gerrit Conclusion Outline Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    13. 13. 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
    14. 14. 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
    15. 15. Code Review at Eclipse ? Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    16. 16. Eclipse - Roles Committer Formally elected Can commit own changes without review Contributor Small changes reviewed by committers Bigger changes also formal IP review by legal team in separate protected Bugzilla (IPZilla) Review Tool patches attached to bug in Bugzilla comments in Bugzilla Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    17. 17. Code Review via Bugzilla Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    18. 18. 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
    19. 19. 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
    20. 20. Git, EGit and JGit Code Review and Eclipse Gerrit Conclusion Outline Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    21. 21. 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 • Android https://review.source.android.com/ • JGit, EGit http://egit.eclipse.org/r/ • Google, SAP, … Eclipse wants to use it … Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    22. 22. 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
    23. 23. 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
    24. 24. 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
    25. 25. Gerrit – Lifecycle of a Change a master topic 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
    26. 26. Gerrit – Lifecycle of a Change c b a1 2 mastertopic 3 a master topic 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
    27. 27. Gerrit – Lifecycle of a Change c b a1 2 mastertopic 3 a master topic 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 c b a1 2 master topic 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
    28. 28. Gerrit Workflow Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    29. 29. Gerrit http://egit.eclipse.org/r/ - change,825Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    30. 30. 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
    31. 31. 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
    32. 32. Demo: Code Review with Gerrit Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    33. 33. Git, EGit and JGit Code Review and Eclipse Gerrit Conclusion Outline Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    34. 34. Conclusion EGit 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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×