= 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>]
        [--dev]
--

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

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

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