Gerrit/Alternatives to git-review

If installing git-review is not feasible for you, you can use plain Git as well. This can sometimes be a better option if git-review doesn't suit your workflow.

Set up

edit

Download the commit-msg hook script from gerrit:tools/hooks/commit-msg and save it in the .git/hooks/ subdirectory of your cloned copy of the repository. There's three ways to do it:

Using curl

edit
cd myrepo/
curl https://gerrit.wikimedia.org/r/tools/hooks/commit-msg > .git/hooks/commit-msg

Mark the file as as "executable". In Linux you can change this with:

 chmod u+x .git/hooks/commit-msg

Using wget

edit
cd myrepo/
wget -P .git/hooks https://gerrit.wikimedia.org/r/tools/hooks/commit-msg

Mark the file as as "executable". In Linux you can change this with:

 chmod u+x .git/hooks/commit-msg

Using the web browser

edit

Select "Save as..." from the context menu when right-clicking on this link: gerrit:tools/hooks/commit-msg

Save it to myrepo/.git/hooks/

Commit

edit

Whenever you commit a change locally, the hook script will automatically add a unique "Change-Id" to the commit message.

Push for review

edit

Add to following Git alias to simplify the command to push changes to Gerrit for review. You can do this by executing the following:

 git config --global alias.push-for-review "push gerrit HEAD:refs/for/master"

If you have a single 'origin' remote, then in the above command replace 'gerrit' with 'origin':

 git config --global alias.push-for-review "push origin HEAD:refs/for/master"

The refs/for/ part is a virtual branch prefix used by Gerrit. However, you may replace "master" with another remote branch that you want to commit to. E.g.: When trying to push to the remote branch Foo use refs/for/Foo.

Push a commit to Gerrit with:

 git push-for-review

If you want to group a few related changesets (when working on a feature, or just to make them searchable in Gerrit), you can push them under the same topic using refs/for/Foo/topic, for example:

git push gerrit HEAD:refs/for/master/T12345

git push gerrit HEAD:refs/for/master/my-feature

See also

edit