plugin install
==============

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

plugin add - Install/Add a plugin.

SYNOPSIS
--------
--
'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.

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