Presentation about Code Review and Gerrit given at Confitura 2013 conference. Shows how to start with Gerrit, how configure Ecipse Mylyn Gerrit Connector plugin and how perform code reviews directly in the IDE
1. All change lists must be
reviewed. Period.
“Review your code like a Googler”
2013 Dariusz Łuksza
Dariusz Łuksza, CollabNet
dariusz@luksza.org
@dluksza
16. 2013 Dariusz Łuksza
review on request
(post- or pre-commit)
90 min
later
OK, so where
I was before...
Hi Jeff, could you
review my changes
before I submit
I need a review...
OK, lets go!
Can I interrupt you
for a moment?You already
interrupted me...
Sure you can,
what is it?
this loop iterates
over… mhm... and then
it brakes...
if (req != null) {
for (i = 0; …
if (...) break;
...
I finished my task and need final
code review... would you like
to look on it?
emmmm … OK...
153 min
later
9 min
later
finally I can get
back to my task...
… and then...
18. 2013 Dariusz Łuksza
Gerrit Code Review
this loop iterates
over… mhm... and then
it brakes...
if (req != null) {
for (i = 0; …
if (...) break;
...
found it!! HAHAHA
OK, so now,
commit and
push for review!
… step into...
step over...
… step over...
step over...
It's time to check others
review requests
I'm invincible!!
Great! There are requests
from Tom, Sara and Jim...
let me see...
22. The Gerrit
● Created for Android OpenSource project
● Designed to bring Google's code review feeling to
Android community
● Pure Java based
● Has vibrant community
● Used in many OpenSource project's and Enterprise
companies
● Can be used as regular Git server without code review
● Supports branch based permissions
● It is getting more and more extend-able
2013 Dariusz Łuksza
25. Demo Time!
Preconditions:
– You are joining new team with already existing
project
– Somebody already creates yours account in LDAP
– You already generated yours SSH key
– Already have Eclipse Kepler with EGit and Mylyn
Gerrit connector installed
2013 Dariusz Łuksza
27. First login into Gerrit
2013 Dariusz Łuksza
First login into Gerrit
2013 Dariusz Łuksza
fred
Insert yours
credentials here
28. First login into Gerrit
2013 Dariusz Łuksza
First login into Gerrit
2013 Dariusz Łuksza
fred
Yours SSH public
key goes here,
remember to
click 'Add'
29. First login into Gerrit
2013 Dariusz Łuksza
First login into Gerrit
2013 Dariusz Łuksza
fred
Finally, click
'Continue'
30. First login into Gerrit
2013 Dariusz Łuksza
First login into Gerrit
2013 Dariusz Łuksza
fred
You are logged in
32. Configure Mylyn Connector
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
If you don't have
Gerrit connector on
the list, use 'Install
More Connectors'
button
Select Gerrit and
click 'Next'
33. Configure Mylyn Connector
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Provide server
data
Validate before
save
Finally, click
'Finish' to save
new connection
34. Configure Mylyn Connector
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Of course I would like to create query for
this connector
35. Configure Mylyn Connector
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Name the query
For our simple use case
'All open changes' will
be enough
36. Configure Mylyn Connector
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
After successful configuration you will see
task repository and query in proper
Eclipse views
43. Clone project from Gerrit
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Because in git
repository there is no
Eclipse
configuration file (like
eg. .project) we need
to import it as
'general project'
51. Create first change
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Remember to
check generation of
'Change-Id' tag
Leave this line as it is,
EGit will generate
'Change-Id' for you
52. Create first change
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Now push yours
changes to Gerrit
53. Create first change
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Provide name of
branch to which
change should
be merged after
successful
review
71. Push multiple commits
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Create two or more
commits in a row
and use standard EGit
'Push to Gerrit...' flow
72. Push multiple commits
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Gerrit will create separate
review requests for each
commit
78. Review connected changes
2013 Dariusz Łuksza2013 Dariusz Łuksza
roman
Change was submitted,
but it is not merged
because it's parent change
is still under review. It will
be automatically merged
after parent will be
accepted
82. Review connected changes
2013 Dariusz Łuksza2013 Dariusz Łuksza
roman
Of course it was also merged
successfully
Wat is going
with previously
submitted
change?
84. Continue other's work
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
All changes are stored
in Gerrit, you can
fetch each patch set
version when ever
you want to
85. Continue other's work
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Provide meaningful
branch name and
click 'Finish'
86. Continue other's work
2013 Dariusz Łuksza2013 Dariusz Łuksza
fred
Done, you have
Roman's changes
locally and can
continue his work
87. Code Review Tips
● Be constructive, don't hate, always propose or point to
solution
● Don't take comments personally, they are only about
code and how you can improve, code and your skills
● Code review is like refactoring of code that you have
written long time ago … you need to understand
author's intention
● It's like TDD, review code before it hit main repository.
This will guarantee the best application quality
● Do code review on daily basis … remember when you
are not reviewing other's code then application is not
progressing
2013 Dariusz Łuksza
88. 2013 Dariusz Łuksza
Dariusz Łuksza, CollabNet
dariusz@luksza.org
@dluksza
“Review your code like a Googler”
Q&A
89. 2013 Dariusz Łuksza
BTW. Don't forget about DevCrowd
conference in Szczecin in 2014. More
info you can found at:
http://devcrowd.pl