init
====

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

SYNOPSIS
--------
[verse]
'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.

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]
