blob: 3584c124719e997a343f9690021a71b1ea7bdcbf [file] [log] [blame]
Shawn O. Pearcee31d02c2009-12-08 12:21:37 -08001Gerrit Code Review - Developer Setup
2====================================
Shawn O. Pearced2b73db2009-01-09 11:55:47 -08003
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -08004Apache Maven is needed to compile the code, and a SQL database
5to house the review metadata. H2 is recommended for development
6databases, as it requires no external server process.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -08007
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -08008Get the Source
9--------------
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080010
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080011Create a new client workspace:
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080012
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080013----
14 git clone git://android.git.kernel.org/tools/gerrit.git
15 cd gerrit
16----
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080017
18
19Configuring Eclipse
20-------------------
21
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080022To use the Eclipse IDE for development, please see
23link:dev-eclipse.html[Eclipse Setup] for more details on how to
24configure the workspace with the Maven build scripts.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080025
26
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080027[[build]]
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080028Building
29--------
30
31From the command line:
32
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080033----
34 mvn package
35----
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080036
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080037Output executable WAR will be placed in:
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080038
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080039----
Shawn O. Pearce44671f52009-11-07 12:55:26 -080040 gerrit-war/target/gerrit-*.war
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080041----
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080042
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080043Mac OS X
44~~~~~~~~
45On Mac OS X ensure "Java For Mac OS X 10.5 Upate 4" (or later) has
46been installed, and that `JAVA_HOME` is set to
47"/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home".
48Check the installed version by running `java -version` and looking
49for 'build 1.6.0_13-b03-211'. Versions of Java 6 prior to this
50version crash during the build due to a bug in the JIT compiler.
Shawn O. Pearce461c2cc2009-02-25 09:09:31 -080051
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080052
53[[init]]
54Site Initialization
55-------------------
56
57After compiling (above), run Gerrit's 'init' command to create a
58testing site for development use:
59
60----
61 java -jar gerrit-war/target/gerrit-*.war init -d ../test_site
62----
63
64Accept defaults by pressing Enter until 'init' completes, or add
65the '\--batch' command line option to avoid them entirely. It is
66recommended to change the listen addresses from '*' to 'localhost' to
67prevent outside connections from contacting the development instance.
68
69The daemon will automatically start in the background and a web
70browser will launch to the start page, enabling login via OpenID.
71
72Shutdown the daemon after registering the administrator account
73through the web interface:
74
75----
76 ../test_site/bin/gerrit.sh stop
77----
78
79
80Testing
81-------
82
83Running the Daemon
84~~~~~~~~~~~~~~~~~~
85
86The daemon can be directly launched from the build area, without
87copying to the test site:
88
89----
90 java -jar gerrit-war/target/gerrit-*.war daemon -d ../test_site
91----
92
93
94Querying the Database
95~~~~~~~~~~~~~~~~~~~~~
96
97The embedded H2 database can be queried and updated from the
98command line. If the daemon is not currently running:
99
100----
101 java -jar gerrit-war/target/gerrit-*.war gsql -d ../test_site
102----
103
104Or, if it is running and the database is in use, connect over SSH
105using an administrator user account:
106
107----
108 ssh -p 29418 user@localhost gerrit gsql
109----
110
111
112Debugging JavaScript
113~~~~~~~~~~~~~~~~~~~~
114
Shawn O. Pearce4d4afa72009-12-19 18:51:33 -0800115When debugging browser specific issues use `-Dgwt.style=DETAILED`
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800116so the resulting JavaScript more closely matches the Java sources.
117This can be used to help narrow down what code line 30,400 in the
118JavaScript happens to be.
119
120----
Shawn O. Pearce4d4afa72009-12-19 18:51:33 -0800121 mvn package -Dgwt.style=DETAILED
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800122----
Shawn O. Pearce461c2cc2009-02-25 09:09:31 -0800123
Shawn O. Pearce6ddb6ca2009-09-18 18:10:31 -0700124
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800125Release Builds
126--------------
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -0700127
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800128To create a release build for a production server, or deployment
129through the download site:
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -0700130
131----
Shawn O. Pearced46db642009-12-18 14:47:55 -0800132 ./tools/release.sh
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -0700133----
134
Shawn O. Pearce06b48c32009-05-10 16:21:05 -0700135
Shawn O. Pearced2b73db2009-01-09 11:55:47 -0800136Client-Server RPC
137-----------------
138
139The client-server RPC implementation is gwtjsonrpc, not the stock RPC
140system that comes with GWT. This buys us automatic XSRF protection.
141It also makes all of the messages readable and writable by any JSON
142implementation, facilitating "mashups" and 3rd party clients.
143
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800144The programming API is virtually identical, except service interfaces
145extend RemoteJsonService instead of RemoteService.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -0800146
147
148Why GWT?
149--------
150
151We like it. Plus we can write Java code once and run it both in
Shawn O. Pearcee2bd1b12009-08-20 11:08:32 -0700152the browser and on the server side.
Shawn O. Pearce5500e692009-05-28 15:55:01 -0700153
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800154
155External Links
156--------------
157
158Google Web Toolkit:
159
160* http://code.google.com/webtoolkit/download.html[Download]
161
162Apache Maven:
163
164* http://maven.apache.org/download.html[Download]
165* http://maven.apache.org/run-maven/index.html[Running]
166
167Apache SSHD:
168
169* http://mina.apache.org/sshd/[SSHD]
170
171H2:
172
173* http://www.h2database.com/[H2]
174* http://www.h2database.com/html/grammar.html[SQL Reference]
175
176PostgreSQL:
177
178* http://www.postgresql.org/download/[Download]
179* http://www.postgresql.org/docs/[Documentation]
180
181
Shawn O. Pearce5500e692009-05-28 15:55:01 -0700182GERRIT
183------
184Part of link:index.html[Gerrit Code Review]