• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

ESE 2010: Using Git in Eclipse

on

  • 3,493 views

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

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

Statistics

Views

Total Views
3,493
Views on SlideShare
3,493
Embed Views
0

Actions

Likes
0
Downloads
70
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

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

    ESE 2010: Using Git in Eclipse ESE 2010: Using Git in Eclipse Presentation Transcript

      • Using Git in Eclipse
      • http://eclipse.org/egit
        Matthias Sohn (SAP)
      • [email_address]
        +
        =
        Chris Aniszczyk (Red Hat)
      • [email_address]
    • … the purpose of this presentation isn't to teach you Git, you have to do that yourself! Learning Git – There's no free lunch!
        Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    • 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
      • 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-date Can 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.11 6/2011 1.0 (Indigo)
        Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
      • Features EGit 0.10
        ** planned for 0.10, * planned for 0.11
        supported,   partial,   missing, irrelevant for EGit
        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
    • 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. 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
        • 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
      • 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 JGit Code Review and Eclipse
      • Gerrit
      • Conclusion
        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
          • 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
      • 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 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
    • Gerrit – Lifecycle of a Change c b a 1 2 master topic 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
    • Gerrit – Lifecycle of a Change c b a 1 2 master topic 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 a 1 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
      • 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 JGit Code Review and Eclipse
      • Gerrit
      • Conclusion
        Outline
        Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
    • 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