| Gerrit Code Review - Quick get started guide |
| ============================================ |
| |
| **** |
| This guide was made with the impatient in mind, ready to try out Gerrit on their |
| own server but not prepared to make the full installation procedure yet. |
| |
| Explanation is sparse and you should not use a server installed this way in a |
| live setup, this is made with proof of concept activities in mind. |
| |
| It is presumed you install it on a Unix based server such as any of the Linux |
| flavors or BSD. |
| |
| It's also presumed that you have access to an OpenID enabled email address. |
| Examples of OpenID enable email providers are Gmail, Yahoo! Mail and Hotmail. |
| It's also possible to register a custom email address with OpenID, but that is |
| outside the scope of this quick installation guide. For testing purposes one of |
| the above providers should be fine. Please note that network access to the |
| OpenID provider you choose is necessary for both you and your Gerrit instance. |
| **** |
| |
| |
| [[requirements]] |
| Requirements |
| ------------ |
| |
| 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 http://www.oracle.com/technetwork/java/javase/downloads/index.html[Download] |
| |
| |
| [[user]] |
| 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. |
| |
| |
| [[download]] |
| Download Gerrit |
| --------------- |
| |
| It's time to download the archive that contains the Gerrit web and ssh service. |
| |
| You can choose from different versions to download from here: |
| |
| * http://code.google.com/p/gerrit/downloads/list[A list of releases available] |
| |
| This tutorial is based on version 2.2.2, and you can download that from this link |
| |
| * http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.2.2.war[Link to the 2.2.2 war archive] |
| |
| |
| [[initialization]] |
| 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'`. |
| |
| Note that initialization also starts the server. If any settings changes are |
| made, the server must be restarted before they will take effect. |
| |
| ---- |
| gerrit2@host:~$ ~/gerrit_testsite/bin/gerrit.sh restart |
| Stopping Gerrit Code Review: OK |
| Starting Gerrit Code Review: OK |
| gerrit2@host:~$ |
| ---- |
| |
| The server can be also stopped and started by passing the `stop` and `start` |
| commands to gerrit.sh. |
| |
| ---- |
| gerrit2@host:~$ ~/gerrit_testsite/bin/gerrit.sh stop |
| Stopping Gerrit Code Review: OK |
| gerrit2@host:~$ |
| gerrit2@host:~$ ~/gerrit_testsite/bin/gerrit.sh start |
| Starting Gerrit Code Review: OK |
| gerrit2@host:~$ |
| ---- |
| |
| [[usersetup]] |
| 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 of your Gerrit server. You can |
| find the url in the settings file. |
| |
| ---- |
| gerrit2@host:~$ git config -f ~/gerrit_testsite/etc/gerrit.config gerrit.canonicalWebUrl |
| http://localhost:8080/ |
| gerrit2@host:~$ |
| ---- |
| |
| Register a new account in Gerrit through the web interface with the |
| email address of your choice. |
| |
| The default authentication type is OpenID. If your Gerrit server is behind a |
| proxy, and you are using an external OpenID provider, you will need to add the |
| proxy settings in the configuration file. |
| |
| ---- |
| gerrit2@host:~$ git config -f ~/gerrit_testsite/etc/gerrit.config --add http.proxy http://proxy:8080 |
| gerrit2@host:~$ git config -f ~/gerrit_testsite/etc/gerrit.config --add http.proxyUsername username |
| gerrit2@host:~$ git config -f ~/gerrit_testsite/etc/gerrit.config --add http.proxyPassword password |
| ---- |
| |
| Refer to the Gerrit configuration guide for more detailed information about |
| link:config-gerrit.html#auth[authentication] and |
| link:config-gerrit.html#http.proxy[proxy] settings. |
| |
| 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:~$ |
| ---- |
| |
| Project creation |
| ---------------- |
| |
| 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 can 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 can 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 submission 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 read |
| link:http://source.android.com/submit-patches/workflow[Default Workflow] to |
| learn more about the workflow of Gerrit. |
| |
| To read more on the installation of Gerrit please see link:install.html[the detailed |
| installation page]. |
| |
| |
| GERRIT |
| ------ |
| |
| Part of link:index.html[Gerrit Code Review] |