Introduction

Melange uses Gerrit for code review.

Setup

# setup push-for-review helper alias
git config --global alias.push-for-review '!CURRENT=$(git symbolic-ref --short HEAD) && git push origin  ${1:-HEAD}:refs/for/master%topic=${CURRENT}${R:+,r=${R}} && echo pushed'
# add change-id hook
curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x `git rev-parse --git-dir`/hooks/commit-msg

Code Review

Reviewing your branch

  1. Create a topic branch, work on your change, commit your change.
  2. git push-for-review
  3. in the Gerrit web UI, explicitly add at least one reviewer
  4. review happens.
  5. if changes are necessary, commit, rebase, go back to step 2.

Syncing and preparing your branch

  1. pull the latest changes to master * git checkout master * git pull origin master
  2. rebase your branch on master git rebase master and fix possible conflicts on the way * git checkout your-branch * git rebase master
  3. git push-for-review
  4. if the rebase cleared the review approvals, ask the reviewers for another look. Otherwise, the changes are almost ready to be submitted
  5. locally merge your branch into master * git checkout master * git merge your-branch

git push-for-review

The push-for-review alias supports some variations:

if you set an ‘R’ environment variable, that becomes a reviewer.

R=john.smith@gmail.com git push-for-review

You can also specify a change to push:

git push-for-review a1b2c3

Submitting the code

  1. get code reviewed by someone else, and receive a +2
  2. click submit button in web ui

Personal Branches

Please name personal branches user/$USERNAME/$BRANCHNAME

Etiquette

  • Do not assume that someone will re-review your change unless you make a comment like “please look again” or “re-review me” or similar. (Rationale: Because of the volume of email Gerrit sends, some people may filter out the “new change has been uploaded emails” -- and a new change being uploaded doesn't mean the Change is ready for review anyway.)
  • If you have commit rights, do not submit someone else's change without a good reason. These might include:
    • Change author does not have commit rights. (But don‘t assume that a change is ready for review after you’ve +2'ed it, the author may want to make changes that require re-review, update the CL description, or there may be other reviewers.)
    • Change author is missing and there's an urgent need to get their change submitted before they come back.
    • The change is urgent and simple (i.e. build fix) and can't wait.
    • In general, please do do not click Submit on other people's changes without permission from the author.

Interesting Links