= plugin install

== NAME
plugin install - Install/Add a plugin.

plugin add - Install/Add a plugin.

== SYNOPSIS
[verse]
--
_ssh_ -p <port> <host> _gerrit plugin install_ | _add_
  [--name <NAME> | -n <NAME>]
  - | <URL> | <PATH>
--

== DESCRIPTION
Install/Add a plugin. The plugin will be copied into the site path's
`plugins` directory.

== ACCESS
* Caller must be a member of the privileged 'Administrators' group.
* link:config-gerrit.html#plugins.allowRemoteAdmin[plugins.allowRemoteAdmin]
must be enabled in `$site_path/etc/gerrit.config`.

== SCRIPTING
This command is intended to be used in scripts.

== OPTIONS
-::
	Plugin jar or js as piped input.

<URL>::
	URL from where the plugin should be downloaded. This can be an
	HTTP or FTP site.

<PATH>::
	Absolute file path to the plugin jar or js.

--name::
-n::
	The name under which the plugin should be installed. Note: if the plugin
	provides its own name in the MANIFEST file, then the plugin name from the
	MANIFEST file has precedence over this option.

== EXAMPLES
Install a plugin from an absolute file path on the server's host:

----
ssh -p 29418 localhost gerrit plugin install -n name.jar $(pwd)/my-plugin.jar
----

Install a WebUI plugin from an absolute file path on the server's host:

----
ssh -p 29418 localhost gerrit plugin install -n name.js $(pwd)/my-webui-plugin.js
----

Install a plugin from an HTTP site:

----
ssh -p 29418 localhost gerrit plugin install -n name.jar http://build-server/output/our-plugin
----

Install a plugin from piped input:

----
ssh -p 29418 localhost gerrit plugin install -n name.jar - <target/name-0.1.jar
----

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

SEARCHBOX
---------
