gerrit code review

42

Click here to load reader

Upload: johannes-barop

Post on 11-Nov-2014

1.000 views

Category:

Technology


5 download

DESCRIPTION

A brief introduction to Gerrit. A web based code review and project management tool for Git based projects.

TRANSCRIPT

Page 1: Gerrit Code Review

Gerrit Code ReviewWeb based code review and project management for Git based projects

Johannes Baropgateprotect AG Germany

Page 2: Gerrit Code Review

Agenda

Page 3: Gerrit Code Review

Agenda

● Why Code Reviews?

● Why a Dedicated Tool for Reviews?

● Google’s Web Code Review Tools

● Introducing Gerrit Code Review

● Gerrit Workflow

● Typical Lifecycle of a Change

● Access Control

● Our Experience

Page 4: Gerrit Code Review

Why Code Review?

Page 5: Gerrit Code Review

Why Code Review?

● Detect more problems early and save hours of error finding

○ Four eyes see more than two

● Keep code quality high

○ Enforce coding standards

● Learn from mistakes without breaking stuff

○ Mentor other developers

Page 6: Gerrit Code Review

Why Code Review?

● Prepare for more delegation

○ Building trust relationships

● Everyone is responsible

○ Collective code ownership

● Asynchronous and across locations

○ Alternative to pair programming

Page 7: Gerrit Code Review

Why a Dedicated Tool for Reviews?

Page 8: Gerrit Code Review

● How to review changesets?

○ In e-mails?

○ In the console?

○ In the changelog?

● When to review changes?

● How to collaborate?

● How to document the review process?

● How to integrate tools into the review?

Why a Dedicated Tool for Reviews?

Page 9: Gerrit Code Review

● How to avoid breaking the continuous integration build before applying

changesets

○ … and blocking other developers :-(

● How to enforce coding standards (whitespaces, ...)

Why a Dedicated Tool for Reviews?How to integrate tools into the review process?

Page 10: Gerrit Code Review

Google’s Web Based Code Review Tools

Page 11: Gerrit Code Review

● Created by Guido van Rossum (Author of Python)

● Named after Piet Mondrian

● Based on Perforce

● Proprietary

● Tied to Google infrastructure

Google’s Code Review ToolsMondrian

Page 12: Gerrit Code Review

● Also created by Guido van Rossum

● Named after Gerrit Rietveld

● Based on SVN

● Hosted on App Engine (https://codereview.appspot.com)

Google’s Code Review ToolsRietveld

Page 13: Gerrit Code Review

Introducing Gerrit Code Review

Page 14: Gerrit Code Review

● Created by Shawn Pearce (Author of JGit)

● Started as set of patches against Rietveld

● Named after Gerrit Rietveld

● Intentionally created for Android Open Source Project

● Based on GIT

● Version 2: Completely rewritten in Java

○ JGit, GWT

Introducing Gerrit Code Review

Page 15: Gerrit Code Review

● Users and Groups

● Project and branch security

● Git repository browsing

● Git repository replication

● Code collaboration and review

● Code validation through Jenkins Triggers

Introducing Gerrit Code ReviewMain Features

Page 16: Gerrit Code Review

● Gateprotect● https://gerrit-review.googlesource.com● https://review.source.android.com● https://gwt-review.googlesource.com● https://gerrit.chromium.org● https://git.eclipse.org/r● https://gerrit.libreoffice.org● https://review.openstack.org● https://review.typo3.org● https://gerrit.wikimedia.org● IBM, SAP, ...

Introducing Gerrit Code Review

Page 17: Gerrit Code Review

Gerrit Workflow

Page 18: Gerrit Code Review

Gerrit Workflow

● Automatic creating of topic-branches on commit

● Commits are drafts until they are merged in a real branch

● Jenkins validation

● Inline discussion on style and architecture

Page 19: Gerrit Code Review

Gerrit Workflow

● Commits change during the improvement process

→ Commit hashes change

● Gerrit introduces a Change-Id to uniquely identify a change across all

drafts of it

● Assigned on commit

● Commit hook for auto-generating Change-Ids○ scp -p -P 29418 review.example.com:hooks/commit-msg .git/hooks/

Change-IDs

Page 20: Gerrit Code Review

Gerrit Workflow

Fixes IE's http status code mangling from 204 to 1223

XMLHTTPRequest object in IE will return a status code of 1223 and drops someresponse headers if the server returns a HTTP/204.This patch intercepts the original response in IE6-9 and returns 204 when thecode is 1223.

Associated issue:http://code.google.com/p/google-web-toolkit/issues/detail?id=5031

Change-Id: I97b9094ef702cd852cc4d918183b394ffc853c32

Change-IDs

Page 21: Gerrit Code Review

Gerrit WorkflowDemocratic voting

● +2 Ok, Approved

● +1 Ok, someone else must approve

● 0 No score, just comments

● -1 I would not submit this

● -2 Blocks submitting

Page 22: Gerrit Code Review

Gerrit WorkflowDemocratic voting

● +1 and -1 are just an opinion

● +2 and -2 are allowing or blocking the change

● They do not accumulate

○ Two +1 do not equate to a +2.

Page 23: Gerrit Code Review

Typical Lifecycle of a Change

Page 24: Gerrit Code Review

Typical Lifecycle of a Change

master1

Page 25: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

git clone

Page 26: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master2

git clone

git commit

Page 27: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch

2

git clone

git commit

git push for/master

Page 28: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch

Build failed!Verified: -1

2

git clone

git commit

git push for/master

Page 29: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch

Build failed!Verified: -1

2 2

git clone

git commit git commit --amend

git push for/master

Page 30: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch2

Build failed!Verified: -1

2 2

git clone

git commit git commit --amend

git push for/master git push for/master

Page 31: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch2

Build failed!Verified: -1

Build OK!Verified: +1

2 2

git clone

git commit git commit --amend

git push for/master git push for/master

Page 32: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch2

Build failed!Verified: -1

Build OK!Verified: +1 Review: +2

2 2

git clone

git commit git commit --amend

git push for/master git push for/master

Page 33: Gerrit Code Review

Typical Lifecycle of a Change

master1

1 local master

2 immediate branch2

Build failed!Verified: -1

Build OK!Verified: +1 Review: +2

2

2 2

git clone

git commit git commit --amend

git push for/master git push for/master

Page 34: Gerrit Code Review

Access Control

Page 35: Gerrit Code Review

● Define who can merge changes

● Define access rights to GIT operations

● Delegate project administration

● Assign code-review voting range rights

● Organize project rights hierarchically

● Define rights to reference names by regular expressions○ refs/heads/experimental/*

○ refs/heads/sandbox/${username}/*

Access control

Page 36: Gerrit Code Review

Our Experience

Page 37: Gerrit Code Review

Our Experience

● Review all changes

● Reviews may take time

○ Authors have to wait for reviews

● Every developer should do reviews

● Connect continuous integration

Page 38: Gerrit Code Review

Q&A

Page 39: Gerrit Code Review

● Founded 2002

● Headquarter in Hamburg

○ Branch offices in 15 Countries

● 134 Employees

○ 50 in Research and Development

● Leading European manufacturer of network security solutions and ”

Made in Germany”

gateprotect - company profile

Page 40: Gerrit Code Review

Small and Medium Companies

Modern Unified Threat Management SolutionThe All-in-One-Solution for customers requiring complete protection and an easy-to-use solution...

Medium and Enterprise Companies

Next Generation Firewall Solution

The Enterprise Solution from gateprotect fulfilling the highest security needs…

gateprotect - product overview

Page 41: Gerrit Code Review

Security Providers, System Retailers and Companies

Command Center – Managed Security PlatformCentral management and monitoring for world-wide installed firewalls…

eGUI – The unique easy-to-use user interfaceThe world-wide unique graphical user interface allowing the complex network security configuration to

be more clear and understandable. Because transparency leads to security

gateprotect - product overview

Page 42: Gerrit Code Review

<Thank you!>

Github: https://github.com/jbarop

Johannes Baropgateprotect AG Germany

Google+: http://bit.ly/jbarop