User Tools

Site Tools


Stale page. Treat all references as suspicious, and if you can edit it for better, please do!

Git Migration

This page contains notes on the git migration.


We would like to have Gerrit.

Gerrit is a code review system that is more efficient and powerful than our current one. I (Ben) have an experimental install on my own server, which is bad (because external, not it-maintained, etc.) but I'm so eager to try to work with it that I did it anyway - it's not critical, we can keep working without it - and we can switch to an official install in the future.

Short Gerrit how-to

The web interface is: - you can create an account using any openid provider, e.g. your google account.

The three basic things are: creating a patchset, reviewing it, and submitting (committing) it.

Creating a patchset

This is done from git. First add a 'remote' git repo to point to the Gerrit instance:

$ git remote add Gerrit ssh://[your username]

Make your change, presumably on the master branch. Commit it locally. Then push it to Gerrit to the special 'refs/for/branchname' ref; this tells Gerrit to create a new patchset from your push, on the specified branch.

$ git push Gerrit HEAD:refs/for/master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 253 bytes, done.
Total 3 (delta 1), reused 1 (delta 0)
remote: New Changes:
To ssh://
  * [new branch]      HEAD -> refs/for/master

You can see Gerrit has accepted the change and told you the webinterface for the item.


Reviewing the patch means going to the Gerrit URL for it. It provides countless options to retrieve the change using a git instance, viewing it on the site, adding comments in-line, and whatnot. The major point of significance is how to actually commit the change; in Gerrit parlance this is 'Submitting'.

The server can't access the git repo directly but it can pull from and push to it.


  • Fix git stash
  • Run more of git testsuite
  • Get git mirrors going
  • Fix release script to build from git instead of svn.
  • Tracking Current has to be updated; the community has to be notified


I want Gerrit to replace the commits mailing list; it's a more convenient workflow (if there are comments, multiple revisions, etc.) and also allows outsiders to contribute changes without being a significant amount of work for the committer to integrate the change. Also it allows the approval committee to interact with the contributor, instead of a single committer being between the hammer and the anvil. Also it pushes the burden of merging onto the contributor, so the most experienced developers (typically necessary for integration) don't become patch monkeys.

There is a live demo online.

releases/3.2.1/developersguide/gitmigration.txt · Last modified: 2014/11/11 14:52 (external edit)