= init

== NAME
init - Initialize/Upgrade a 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]
	[--secure-store-lib]
	[--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
(e.g. DB schema, plugins) as necessary.

== OPTIONS
--batch::
	Run in batch mode, skipping interactive prompts. For a fresh
	install, reasonable configuration defaults are chosen based
	on the whims of the Gerrit developers. On upgrades, the settings
	in gerrit.config are respected.
+
	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.

--secure-store-lib::
	Path to the jar providing the chosen
	link:dev-plugins.html#secure-store[SecureStore] implementation class.
	This option is used the same way as the --new-secure-store-lib option
	documented in link:pgm-SwitchSecureStore.html[SwitchSecureStore].

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