* stable-3.1: Update git submodules Update git submodules gr-rest-api-interface.js: Remove unnecesary Promise resolution LuceneQueryChangesTest: Remove unneeded override of visible() e2e-tests: Rename the now reused json filename constant e2e-tests: Refactor documentation about functional RevisionActions: Do not alter server response e2e-tests: Move core json files into scala package e2e-tests: Support adding/running non-core scenarios e2e-tests: Add create/delete project to CloneUsingBothProtocols ChangeQueryBuilder: Throw error on ambiguous visibleto by display name Change-Id: Idbb499461ecad11da49b3bcbe5d5bf14e90bfe31
		
			
				
	
	
		
			246 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
:linkattrs:
 | 
						|
= Gerrit Code Review: Developer Setup
 | 
						|
 | 
						|
To build a developer instance, you'll need link:https://bazel.build/[Bazel,role=external,window=_blank] to
 | 
						|
compile the code, preferably launched with link:https://github.com/bazelbuild/bazelisk[Bazelisk,role=external,window=_blank].
 | 
						|
 | 
						|
== Git Setup
 | 
						|
 | 
						|
[[clone]]
 | 
						|
=== Getting the Source
 | 
						|
 | 
						|
Create a new client workspace:
 | 
						|
 | 
						|
----
 | 
						|
  git clone --recurse-submodules https://gerrit.googlesource.com/gerrit
 | 
						|
  cd gerrit
 | 
						|
----
 | 
						|
 | 
						|
The `--recurse-submodules` option is needed on `git clone` to ensure that the
 | 
						|
core plugins, which are included as git submodules, are also cloned.
 | 
						|
 | 
						|
=== Switching between branches
 | 
						|
 | 
						|
When using `git checkout` without `--recurse-submodules` to switch between
 | 
						|
branches, submodule revisions are not altered, which can result in:
 | 
						|
 | 
						|
*  Incorrect or unneeded plugin revisions.
 | 
						|
*  Missing plugins.
 | 
						|
 | 
						|
After you switch branches, ensure that you have the correct versions of
 | 
						|
the submodules.
 | 
						|
 | 
						|
CAUTION: If you store Eclipse or IntelliJ project files in the Gerrit source
 | 
						|
directories, do *_not_* run `git clean -fdx`. Doing so may remove untracked files and damage your project. For more information, see
 | 
						|
link:https://git-scm.com/docs/git-clean[git-clean,role=external,window=_blank].
 | 
						|
 | 
						|
Run the following:
 | 
						|
 | 
						|
----
 | 
						|
  git submodule update
 | 
						|
  git clean -ffd
 | 
						|
----
 | 
						|
 | 
						|
[[compile_project]]
 | 
						|
== Compiling
 | 
						|
 | 
						|
For details, see <<dev-bazel#,Building with Bazel>>.
 | 
						|
 | 
						|
 | 
						|
== Testing
 | 
						|
 | 
						|
[[tests]]
 | 
						|
=== Running the acceptance tests
 | 
						|
 | 
						|
Gerrit contains acceptance tests that validate the Gerrit daemon via REST, SSH,
 | 
						|
and the Git protocol.
 | 
						|
 | 
						|
A new review site is created for each test and the Gerrit daemon is
 | 
						|
then started on that site. When the test is completed, the Gerrit daemon is
 | 
						|
shut down.
 | 
						|
 | 
						|
For instructions on running the acceptance tests with Bazel,
 | 
						|
see <<dev-bazel#tests,Running Unit Tests with Bazel>>.
 | 
						|
 | 
						|
[[e2e]]
 | 
						|
=== End-to-end tests
 | 
						|
 | 
						|
<<dev-e2e-tests#,This document>> describes how `e2e` (load or functional) test
 | 
						|
scenarios are implemented using link:https://gatling.io/[`Gatling`,role=external,window=_blank].
 | 
						|
 | 
						|
 | 
						|
== Local server
 | 
						|
 | 
						|
[[init]]
 | 
						|
=== Site Initialization
 | 
						|
 | 
						|
After you compile the project <<compile_project,(above)>>, run the Gerrit
 | 
						|
`init`
 | 
						|
command to create a test site:
 | 
						|
 | 
						|
----
 | 
						|
  export GERRIT_SITE=~/gerrit_testsite
 | 
						|
  $(bazel info output_base)/external/local_jdk/bin/java \
 | 
						|
      -jar bazel-bin/gerrit.war init --batch --dev -d $GERRIT_SITE
 | 
						|
----
 | 
						|
 | 
						|
[[special_bazel_java_version]]
 | 
						|
NOTE: You must use the same Java version that Bazel used for the build, which
 | 
						|
is available at `$(bazel info output_base)/external/local_jdk/bin/java`.
 | 
						|
 | 
						|
This command takes two parameters:
 | 
						|
 | 
						|
* `--batch` assigns default values to several Gerrit configuration
 | 
						|
    options. To learn more about these options, see
 | 
						|
    link:config-gerrit.html[Configuration].
 | 
						|
* `--dev` configures the Gerrit server to use the authentication
 | 
						|
  option, `DEVELOPMENT_BECOME_ANY_ACCOUNT`, which enables you to
 | 
						|
  switch between different users to explore how Gerrit works. To learn more
 | 
						|
  about setting up Gerrit for development, see
 | 
						|
  link:dev-readme.html[Gerrit Code Review: Developer Setup].
 | 
						|
 | 
						|
After initializing the test site, Gerrit starts serving in the background. A
 | 
						|
web browser displays the Start page.
 | 
						|
 | 
						|
On the Start page, you can:
 | 
						|
 | 
						|
.  Log in as the account you created during the initialization process.
 | 
						|
.  Register additional accounts.
 | 
						|
.  Create projects.
 | 
						|
 | 
						|
To shut down the daemon, run:
 | 
						|
 | 
						|
----
 | 
						|
  $GERRIT_SITE/bin/gerrit.sh stop
 | 
						|
----
 | 
						|
 | 
						|
 | 
						|
[[localdev]]
 | 
						|
=== Working with the Local Server
 | 
						|
 | 
						|
To create more accounts on your development instance:
 | 
						|
 | 
						|
.  Click 'become' in the upper right corner.
 | 
						|
.  Select 'Switch User'.
 | 
						|
.  Register a new account.
 | 
						|
.  link:user-upload.html#ssh[Configure your SSH key].
 | 
						|
 | 
						|
Use the `ssh` protocol to clone from and push to the local server. For
 | 
						|
example, to clone a repository that you've created through the admin
 | 
						|
interface, run:
 | 
						|
 | 
						|
----
 | 
						|
git clone ssh://username@localhost:29418/projectname
 | 
						|
----
 | 
						|
 | 
						|
To use the `HTTP` protocol, run:
 | 
						|
 | 
						|
----
 | 
						|
git clone http://username@localhost:8080/projectname
 | 
						|
----
 | 
						|
 | 
						|
The default password for user `admin` is `secret`. You can regenerate a
 | 
						|
password in the UI under User Settings -- HTTP credentials. The password can be
 | 
						|
stored locally to avoid retyping it:
 | 
						|
 | 
						|
----
 | 
						|
git config --global credential.helper store
 | 
						|
git pull
 | 
						|
----
 | 
						|
 | 
						|
To create changes as users of Gerrit would, run:
 | 
						|
 | 
						|
----
 | 
						|
git push origin HEAD:refs/for/master
 | 
						|
----
 | 
						|
 | 
						|
[[run_daemon]]
 | 
						|
=== Running the Daemon
 | 
						|
 | 
						|
The daemon can be launched directly from the build area, without
 | 
						|
copying to the test site:
 | 
						|
 | 
						|
----
 | 
						|
  $(bazel info output_base)/external/local_jdk/bin/java \
 | 
						|
     -jar bazel-bin/gerrit.war daemon -d $GERRIT_SITE \
 | 
						|
     --console-log
 | 
						|
----
 | 
						|
 | 
						|
NOTE: To learn why using `java -jar` isn't sufficient, see
 | 
						|
<<special_bazel_java_version,this explanation>>.
 | 
						|
 | 
						|
To debug the Gerrit server of this test site:
 | 
						|
 | 
						|
.  Open a debug port (such as port 5005). To do so, insert the following code
 | 
						|
immediately after `-jar` in the previous command. To learn how to attach
 | 
						|
IntelliJ, see <<dev-intellij#remote-debug,Debugging a remote Gerrit server>>.
 | 
						|
 | 
						|
----
 | 
						|
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
 | 
						|
----
 | 
						|
 | 
						|
=== Running the Daemon with Gerrit Inspector
 | 
						|
 | 
						|
link:dev-inspector.html[Gerrit Inspector] is an interactive scriptable
 | 
						|
environment you can use to inspect and modify the internal state of the system.
 | 
						|
 | 
						|
Gerrit Inspector appears on the system console whenever the system starts.
 | 
						|
Leaving the Inspector shuts down the Gerrit instance.
 | 
						|
 | 
						|
To troubleshoot, the Inspector enables interactive work as well as running of
 | 
						|
Python scripts.
 | 
						|
 | 
						|
To start the Inspector, add the '-s' option to the daemon start command:
 | 
						|
 | 
						|
----
 | 
						|
  $(bazel info output_base)/external/local_jdk/bin/java \
 | 
						|
     -jar bazel-bin/gerrit.war daemon -d $GERRIT_SITE -s
 | 
						|
----
 | 
						|
 | 
						|
NOTE: To learn why using `java -jar` isn't sufficient, see
 | 
						|
<<special_bazel_java_version,this explanation>>.
 | 
						|
 | 
						|
Inspector examines Java libraries, loads the initialization scripts, and
 | 
						|
starts a command line prompt on the console:
 | 
						|
 | 
						|
----
 | 
						|
  Welcome to the Gerrit Inspector
 | 
						|
  Enter help() to see the above again, EOF to quit and stop Gerrit
 | 
						|
  Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
 | 
						|
  [OpenJDK 64-Bit Server VM (Sun Microsystems Inc.)] on java1.6.0 running for
 | 
						|
  Gerrit 2.3-rc0-163-g01967ef
 | 
						|
  >>>
 | 
						|
----
 | 
						|
 | 
						|
When the Inspector is enabled, you can use Gerrit as usual and all
 | 
						|
interfaces (including HTTP and SSH) are available.
 | 
						|
 | 
						|
CAUTION: When using the Inspector, be careful not to modify the internal state
 | 
						|
of the system.
 | 
						|
 | 
						|
 | 
						|
== Setup for backend developers
 | 
						|
 | 
						|
=== Configuring Eclipse
 | 
						|
 | 
						|
To use the Eclipse IDE for development, see
 | 
						|
link:dev-eclipse.html[Eclipse Setup].
 | 
						|
 | 
						|
To configure the Eclipse workspace with Bazel, see
 | 
						|
link:dev-bazel.html#eclipse[Eclipse integration with Bazel].
 | 
						|
 | 
						|
=== Configuring IntelliJ IDEA
 | 
						|
 | 
						|
See <<dev-intellij#,IntelliJ Setup>> for details.
 | 
						|
 | 
						|
== Setup for frontend developers
 | 
						|
See link:https://gerrit.googlesource.com/gerrit/+/master/polygerrit-ui/README.md[Frontend Developer Setup].
 | 
						|
 | 
						|
 | 
						|
GERRIT
 | 
						|
------
 | 
						|
Part of link:index.html[Gerrit Code Review]
 | 
						|
 | 
						|
SEARCHBOX
 | 
						|
---------
 |