init
====

NAME
----
init - Initialize a new Gerrit server installation

SYNOPSIS
--------
--
'java' -jar gerrit.war 'init'
	-d <SITE_PATH>
	[--batch]
	[--no-auto-start]
	[--list-plugins]
	[--install-plugin=<PLUGIN_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.

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

--install-plugin::
	Automatically install plugin with given name without asking.
	This option may be supplied more than once to install multiple
	plugins.

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
---------
