development with git and gerrit - eclipse democamp stuttgart - 2010-11-23

22
Development Process with EGit and Gerrit Code Review http://eclipse.org/egit http://code.google.com/p/gerrit/ Matthias Sohn (SAP) [email protected] + = Stefan Lay (SAP) [email protected]

Upload: msohn

Post on 11-Nov-2014

2.263 views

Category:

Technology


1 download

DESCRIPTION

Development with Git and Gerrit - DemoCamp Stuttgart Nov 23, 2010

TRANSCRIPT

Page 1: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Development Process with EGit and Gerrit

Code Reviewhttp://eclipse.org/egit

http://code.google.com/p/gerrit/Matthias Sohn (SAP)[email protected]

+ =Stefan Lay (SAP)[email protected]

Page 2: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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!

Page 3: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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

Page 4: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Git… a distributed revision control system built by the Linux project to automate patch workflow

Distributed means no central repository

Really good at merging

Structured around commits (i.e. patches)

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 5: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Git at Eclipse

Eclipse defined a roadmap to move to Git in 2009CVS 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

Page 6: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

History of JGit and EGit2005 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

Page 7: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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

Page 8: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Demo: A tour of EGit

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 9: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Git, EGit and JGit

Code Review and Eclipse

Gerrit

Conclusion

Outline

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 10: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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

Page 11: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Code Review – Benefits

Four eyes catch more bugs

Enforce coding standards

Mentoring of new developers

Establish trust relationships

Good alternative to pair programming

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

Page 12: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Code Review at

Eclipse ?

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 13: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Eclipse – Review Process

Contributors • create patch using CVS, SVN, Git• attach patch to bug in Bugzilla

Committers • do code and IP review in Bugzilla• initiate IP review for changes > 250 loc• commit accepted changes

IP Team• does IP reviews

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 14: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Code Review via Bugzilla

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 15: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Git, EGit and JGit

Code Review and Eclipse

Gerrit

Conclusion

Outline

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 16: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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

Page 17: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Gerrit Workflow

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 18: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Gerrit

http://egit.eclipse.org/r/ - change,825Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 19: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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

Page 20: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Demo: Code Review with Gerrit

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 21: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

Git, EGit and JGit

Code Review and Eclipse

Gerrit

Conclusion

Outline

Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn

Page 22: Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23

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