Most distributions come with Java today. Do you already have Java installed?
$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
If Java isn’t installed, get it:
JDK, minimum version 1.6 Download
Create a user to host the Gerrit service
We will run the service as a non privileged user on your system. First create the user and then become the user:
$ sudo adduser gerrit2 $ sudo su gerrit2
If you don’t have root privileges you could skip this step and run gerrit as your own user as well.
Initialize the Site
It’s time to run the initialization, and with the batch switch enabled, we don’t have to answer any questions at all:
gerrit2@host:~$ java -jar gerrit.war init --batch -d ~/gerrit_testsite Generating SSH host key ... rsa(simple)... done Initialized /home/gerrit2/gerrit_testsite Executing /home/gerrit2/gerrit_testsite/bin/gerrit.sh start Starting Gerrit Code Review: OK gerrit2@host:~$
When the init is complete, you can review your settings in the file '$site_path/etc/gerrit.config'.
An important setting will be the canonicalWebUrl which will be needed later to access gerrit’s web interface.
gerrit2@host:~$ cat ~/gerrit_testsite/etc/gerrit.config | grep canonical canonicalWebUrl = http://localhost:8080/ gerrit2@host:~$
The first user
It’s time to exit the gerrit2 account as you now have Gerrit running on your host and setup your first workspace.
Start a shell with the credentials of the account you will perform development under.
Check whether there are any ssh keys already. You’re looking for two files, id_rsa and id_rsa.pub.
user@host:~$ ls .ssh authorized_keys config id_rsa id_rsa.pub known_hosts user@host:~$
If you have the files, you may skip the key generating step.
If you don’t see the files in your listing, your will have to generate rsa keys for your ssh sessions:
SSH key generation
Please don’t generate new keys if you already have a valid keypair! They will be overwritten!
user@host:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Created directory '/home/user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 00:11:22:00:11:22:00:11:44:00:11:22:00:11:22:99 user@host The key's randomart image is: +--[ RSA 2048]----+ | ..+.*=+oo.*E| | u.OoB.. . +| | ..*. | | o | | . S .. | | | | | | .. | | | +-----------------+ user@host:~$
Registering your key in Gerrit
Open a browser and enter the canonical url you got before when initializing Gerrit.
Canonical URL [http://localhost:8080/]:
Register a new account in Gerrit through the web interface with the email address of your choice. The first user to sign-in and register an account will be automatically placed into the fully privileged Administrators group, permitting server management over the web and over SSH. Subsequent users will be automatically registered as unprivileged users.
Once signed in as your user, you find a little wizard to get you started. The wizard helps you fill out:
Real name (visible name in Gerrit)
Register your email (it must be confirmed later)
Select a username with which to communicate with Gerrit over ssh+git
The server will ask you for an RSA public key. That’s the key we generated above, and it’s time to make sure that Gerrit knows about our new key and can identify us by it.
user@host:~$ cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5E785mWtMckorP5v40PyFeui9T50dKpaGYw67Mlv2J3aGBG3tS0qBQxKEpiV0J4+W0RgQHbWfNqdUYen9bC5VVH/GatYWkpL9TjjUcHzF1rX3Eyv7PHuHLAyd/8Zdv6R3saF+hNpp1JW0BSa7HXzK7iNCVA3kBuBthxeGh3OoFbaXHn1zwwVQw8I5+Lp9OOIY7sJEsM/kW699XDV6z2zlkByNVEp45j+g26x5rCnGS8GJM7A0uHsaWJddO6TiyR6/2SOBF1VtKw49XLTQcmDInFAZzUsAZSDKlfYloPkpA6YdqeG0eJqau+jtzuigydoVj4j9xidcJ9HtxZcJNuraw== user@host user@host:~$
Copy the string starting with ssh-rsa to your clipboard and then paste it into the box for RSA keys. Make absolutely sure no extra spaces or line feeds are entered in the middle of the RSA string.
Verify that the ssh connection works for you.
user@host:~$ ssh user@localhost -p 29418 The authenticity of host '[localhost]:29418 ([127.0.0.1]:29418)' can't be established. RSA key fingerprint is db:07:3d:c2:94:25:b5:8d:ac:bc:b5:9e:2f:95:5f:4a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:29418' (RSA) to the list of known hosts. **** Welcome to Gerrit Code Review **** Hi user, you have successfully connected over SSH. Unfortunately, interactive shells are disabled. To clone a hosted Git repository, use: git clone ssh://user@localhost:29418/REPOSITORY_NAME.git user@host:~$
Your base Gerrit server is now running and you have a user that’s ready to interact with it. You now have two options, either you create a new test project to work with or you already have a git with history that you would like to import into gerrit and try out code review on.
New project from scratch
If you choose to create a new repository from scratch, it’s easier for you to create a project with an initial commit in it. That way first time setup between client and server is easier.
This is done via the SSH port:
user@host:~$ ssh -p 29418 user@localhost gerrit create-project --empty-commit --name demo-project user@host:~$
This will create a repository that you could clone to work with.
Already existing project
The other alternative is if you already have a git project that you want to try out Gerrit on. First you have to create the project, this is done via the SSH port:
user@host:~$ ssh -p 29418 user@localhost gerrit create-project --name demo-project user@host:~$
You need to make sure that at least initially your account is granted "Create Reference" privileges for the refs/heads/* reference. This is done via the web interface in the Admin/Projects/Access page that correspond to your project.
After that it’s time to upload the previous history to the server:
user@host:~/my-project$ git push ssh://user@localhost:29418/demo-project *:* Counting objects: 2011, done. Writing objects: 100% (2011/2011), 456293 bytes, done. Total 2011 (delta 0), reused 0 (delta 0) To ssh://user@localhost:29418/demo-project * [new branch] master -> master user@host:~/my-project$
This will create a repository that you could clone to work with.
My first change
Download a local clone of the repository and move into it
user@host:~$ git clone ssh://user@host:29418/demo-project Cloning into demo-project... remote: Counting objects: 2, done remote: Finding sources: 100% (2/2) remote: Total 2 (delta 0), reused 0 (delta 0) user@host:~$ cd demo-project user@host:~/demo-project$
Then make a change to it and upload it as a reviewable change in Gerrit.
user@host:~/demo-project$ date > testfile.txt user@host:~/demo-project$ git add testfile.txt user@host:~/demo-project$ git commit -m "My pretty test commit" [master ff643a5] My pretty test commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 testfile.txt user@host:~/demo-project$
Usually when you push to a remote git, you push to the reference '/refs/heads/branch', but when working with Gerrit you have to push to a virtual branch representing "code review before submittal to branch". This virtual name space is known as /refs/for/<branch>
user@host:~/demo-project$ git push origin HEAD:refs/for/master Counting objects: 4, done. Writing objects: 100% (3/3), 293 bytes, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: New Changes: remote: http://localhost:8080/1 remote: To ssh://user@localhost:29418/demo-project * [new branch] HEAD -> refs/for/master user@host:~/demo-project$
You should now be able to access your change by browsing to the http URL suggested above, http://localhost:8080/1
Quick Installation Complete
This covers the scope of getting Gerrit started and your first change uploaded. It doesn’t give any clue as to how the review workflow works, please find Default Workflow to learn more about the workflow of Gerrit.
To read more on the installation of Gerrit please read the detailed installation page.
Part of Gerrit Code Review