| 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:~$ | 
 | ---- | 
 |  | 
 | include::config-login-register.txt[] | 
 |  | 
 | 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] |