= init

== NAME
init - Initialize a new Gerrit server installation

== SYNOPSIS
--
'java' -jar gerrit.war 'init'
	-d <SITE_PATH>
	[--batch]
	[--no-auto-start]
	[--skip-plugins]
	[--list-plugins]
	[--install-plugin=<PLUGIN_NAME>]
	[--install-all-plugins]
	[--dev]
	[--skip-all-downloads]
	[--skip-download=<LIBRARY_NAME>]
--

== DESCRIPTION
Creates a new Gerrit server installation, interactively prompting
for some basic setup prior to writing default configuration files
into a newly created `$site_path`.

If run in an existing `$site_path`, init will upgrade some resources
as necessary.

== OPTIONS
--batch::
	Run in batch mode, skipping interactive prompts.  Reasonable
	configuration defaults are chosen based on the whims of
	the Gerrit developers.
+
	If during a schema migration unused objects (e.g. tables, columns)
	are detected they are *not* automatically dropped, but only a list of
	SQL statements to drop these objects is provided. To drop the unused
	objects these SQL statements have to be executed manually.

--no-auto-start::
	Don't automatically start the daemon after initializing a
	newly created site path.  This permits the administrator
	to inspect and modify the configuration before the daemon
	is started.

-d::
--site-path::
	Location of the gerrit.config file, and all other per-site
	configuration data, supporting libraries and log files.

--skip-plugins::
	Entirely skip installation and initialization of plugins. This option
	is needed when initializing a gerrit site without an archive. That
	happens when running gerrit acceptance or integration tests in a
	debugger, using classes. Supplying this option leads to ignoring the
	--install-plugin and --install-all-plugins options, if supplied as well.

--list-plugins::
	Print names of plugins that can be installed during init process.

--install-all-plugins::
	Automatically install all plugins from gerrit.war without asking.
	This option also works in batch mode. This option cannot be supplied
	alongside --install-plugin.

--install-plugin::
	Automatically install plugin with given name without asking.
	This option also works in batch mode. This option may be supplied
	more than once to install multiple plugins. This option cannot be
	supplied alongside --install-all-plugins.

--dev::
	Install in developer mode. Default configuration settings are
	chosen to run the Gerrit server as a developer.

--skip-all-downloads::
	Do not automatically download and install required libraries. The
	administrator must provision the required libraries in the lib/ folder.

--skip-download::
	Do not automatically download and install the library with the given name.
	The administrator must provision the required library in the lib/ folder.

== CONTEXT
This command can only be run on a server which has direct
connectivity to the metadata database, and local access to the
managed Git repositories.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
