blob: 2490695b4841a3872065202d18ace830b4ff5701 [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----
Augie Facklerec2bb9e2011-10-27 13:26:15 -050014 git clone https://code.google.com/p/gerrit
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080015 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. Pearcee6fc72f2010-02-22 09:31:18 -0800135If AsciiDoc isn't installed or is otherwise unavailable, the WAR
136can still be built without the embedded documentation by passing
137an additional flag:
138
139----
140 ./tools/release.sh --without-documentation
141----
142
Shawn O. Pearce06b48c32009-05-10 16:21:05 -0700143
Shawn O. Pearced2b73db2009-01-09 11:55:47 -0800144Client-Server RPC
145-----------------
146
147The client-server RPC implementation is gwtjsonrpc, not the stock RPC
148system that comes with GWT. This buys us automatic XSRF protection.
149It also makes all of the messages readable and writable by any JSON
150implementation, facilitating "mashups" and 3rd party clients.
151
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800152The programming API is virtually identical, except service interfaces
153extend RemoteJsonService instead of RemoteService.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -0800154
155
156Why GWT?
157--------
158
159We like it. Plus we can write Java code once and run it both in
Shawn O. Pearcee2bd1b12009-08-20 11:08:32 -0700160the browser and on the server side.
Shawn O. Pearce5500e692009-05-28 15:55:01 -0700161
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -0800162
163External Links
164--------------
165
166Google Web Toolkit:
167
168* http://code.google.com/webtoolkit/download.html[Download]
169
170Apache Maven:
171
172* http://maven.apache.org/download.html[Download]
173* http://maven.apache.org/run-maven/index.html[Running]
174
175Apache SSHD:
176
177* http://mina.apache.org/sshd/[SSHD]
178
179H2:
180
181* http://www.h2database.com/[H2]
182* http://www.h2database.com/html/grammar.html[SQL Reference]
183
184PostgreSQL:
185
186* http://www.postgresql.org/download/[Download]
187* http://www.postgresql.org/docs/[Documentation]
188
189
Shawn O. Pearce5500e692009-05-28 15:55:01 -0700190GERRIT
191------
192Part of link:index.html[Gerrit Code Review]