= Plugins

The Gerrit server functionality can be extended by installing plugins.

[[installation]]
== Plugin Installation
Plugin installation is as easy as dropping the plugin jar into the
`$site_path/plugins/` folder. It may take
link:config-gerrit.html#plugins.checkFrequency[a few minutes] until
the server picks up new and updated plugins.

Plugins can also be installed via
link:rest-api-plugins.html#install-plugin[REST] and
link:cmd-plugin-install.html[SSH].

[[development]]
== Plugin Development

How to develop plugins is described in the link:dev-plugins.html[
Plugin Development Guide].

If you want to share your plugin under the link:licenses.html#Apache2_0[
Apache License 2.0] you can host your plugin development on the
link:https://gerrit-review.googlesource.com[gerrit-review] Gerrit
Server. You can request the creation of a new Project by email
to the link:https://groups.google.com/forum/#!forum/repo-discuss[Gerrit
mailing list]. You would be assigned as project owner of the new plugin
project so that you can submit changes on your own. It is the
responsibility of the project owner to maintain the plugin, e.g. to
make sure that it works with new Gerrit versions and to create stable
branches for old releases.

[[core-plugins]]
== Core Plugins

Core plugins are packaged within the Gerrit war file and can easily be
installed during the link:pgm-init.html[Gerrit initialization].

The core plugins are developed and maintained by the Gerrit maintainers
and the Gerrit community.

[[commit-message-length-validator]]
=== commit-message-length-validator

This plugin checks the length of a commit’s commit message subject and
message body, and reports warnings or errors to the git client if the
lengths are exceeded.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/commit-message-length-validator[
Project] |
link:https://gerrit.googlesource.com/plugins/commit-message-length-validator/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/commit-message-length-validator/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[cookbook-plugin]]
=== cookbook-plugin

Sample plugin to demonstrate features of Gerrit's plugin API.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/cookbook-plugin[
Project] |
link:https://gerrit.googlesource.com/plugins/cookbook-plugin/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[download-commands]]
=== download-commands

This plugin defines commands for downloading changes in different
download schemes (for downloading via different network protocols).

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/download-commands[
Project] |
link:https://gerrit.googlesource.com/plugins/download-commands/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/download-commands/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[replication]]
=== replication

This plugin can automatically push any changes Gerrit Code Review makes
to its managed Git repositories to another system. Usually this would
be configured to provide mirroring of changes, for warm-standby
backups, or a load-balanced public mirror farm.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/replication[
Project] |
link:https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[reviewnotes]]
=== reviewnotes

Stores review information for Gerrit changes in the `refs/notes/review`
branch.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reviewnotes[
Project] |
link:https://gerrit.googlesource.com/plugins/reviewnotes/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[singleusergroup]]
=== singleusergroup

This plugin provides a group per user. This is useful to assign access
rights directly to a single user, since in Gerrit access rights can
only be assigned to groups.

[[other-plugins]]
== Other Plugins

Besides core plugins there are many other Gerrit plugins available.
These plugins are developed and maintained by different parties.
The Gerrit Project doesn't guarantee proper functionality of any of
these plugins.

The Gerrit Project doesn't provide binaries for these plugins, but
there is one public service that offers the download of pre-built
plugin jars:

* link:https://gerrit-ci.gerritforge.com[CI Server from GerritForge]

The following list gives an overview of available plugins, but the
list may not be complete. You may discover more plugins on
link:https://gerrit-review.googlesource.com/#/admin/projects/?filter=plugins%252F[
gerrit-review].

[[admin-console]]
=== admin-console

Plugin to provide administrator-only functionality, intended to
simplify common administrative tasks. Currently providing user-level
information. Also providing access control information by project or
project/account.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/admin-console[
Project] |
link:https://gerrit.googlesource.com/plugins/admin-console/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[avatars-external]]
=== avatars/external

This plugin allows to use an external url to load the avatar images
from.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/avatars/external[
Project] |
link:https://gerrit.googlesource.com/plugins/avatars/external/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/avatars/external/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[avatars-gravatar]]
=== avatars/gravatar

Plugin to display user icons from Gravatar.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/avatars/gravatar[
Project]

[[branch-network]]
=== branch-network

This plugin allows the rendering of Git repository branch network in a
graphical HTML5 Canvas. It is mainly intended to be used as a
"project link" in a gitweb configuration or by other Gerrit GWT UI
plugins to be plugged elsewhere in Gerrit.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/branch-network[
Project] |
link:https://gerrit.googlesource.com/plugins/branch-network/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/branch-network/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[changemessage]]
=== changemessage

This plugin allows to display a static info message on the change screen.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/changemessage[
Project] |
link:https://gerrit.googlesource.com/plugins/changemessage/+doc/master/src/main/resources/Documentation/about.md[
Plugin Documenatation] |
link:https://gerrit.googlesource.com/plugins/changemessage/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[delete-project]]
=== delete-project

Provides the ability to delete a project.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/delete-project[
Project] |
link:https://gerrit.googlesource.com/plugins/delete-project/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[egit]]
=== egit

This plugin provides extensions for easier usage with EGit.

The plugin adds a download command for EGit that allows to copy only
the change ref into the clipboard. The change ref is needed for
downloading a Gerrit change from within EGit.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/egit[
Project] |
link:https://gerrit.googlesource.com/plugins/egit/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[emoticons]]
=== emoticons

This plugin allows users to see emoticons in comments as images.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/emoticons[
Project] |
link:https://gerrit.googlesource.com/plugins/emoticons/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/emoticons/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[force-draft]]
=== force-draft

Provides an ssh command to force a change or patch set to draft status.
This is useful for administrators to be able to easily completely
delete a change or patch set from the server.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/force-draft[
Project]

[[gitblit]]
=== gitblit

GitBlit code-viewer plugin with SSO and Security Access Control.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/gitblit[
Project]

[[github]]
=== github

Plugin to integrate with GitHub: replication, pull-request to Change-Sets

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/github[
Project]

[[gitiles]]
=== gitiles

Plugin running Gitiles alongside a Gerrit server.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/gitiles[
Project]

[[imagare]]
=== imagare

The imagare plugin allows Gerrit users to upload and share images.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/imagare[
Project] |
link:https://gerrit.googlesource.com/plugins/imagare/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/imagare/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[importer]]
=== importer

The importer plugin allows to import projects from one Gerrit server
into another Gerrit server.

Projects can be imported while both source and target Gerrit server
are online. There is no downtime required.

The git repository and all changes of the project, including approvals
and review comments, are imported. Historic timestamps are preserved.

Project imports can be resumed. This means a project team can continue
to work in the source system while the import to the target system is
done. By resuming the import the project in the target system can be
updated with the missing delta.

The importer plugin can also be used to copy a project within one Gerrit
server, and in combination with the link:#delete-project[delete-project]
plugin it can be used to rename a project.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/importer[
Project] |
link:https://gerrit.googlesource.com/plugins/importer/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[its-plugins]]
=== Issue Tracker System Plugins

Plugins to integrate with issue tracker systems (ITS), that (based
on events in Gerrit) allows to take actions in the ITS. For example,
they can add comments to bugs, or change status of bugs.

All its-plugins have a common base implementation which is stored in
the `its-base` project. `its-base` is not a plugin, but just a
framework for the ITS plugins which is packaged within each ITS plugin.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-base[
its-base Project] |
link:https://gerrit.googlesource.com/plugins/its-base/+doc/master/src/main/resources/Documentation/about.md[
its-base Documentation] |
link:https://gerrit.googlesource.com/plugins/its-base/+doc/master/src/main/resources/Documentation/config.md[
its-base Configuration]

[[its-bugzilla]]
==== its-bugzilla

Plugin to integrate with Bugzilla.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-bugzilla[
Project] |
link:https://gerrit.googlesource.com/plugins/its-bugzilla/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[its-jira]]
==== its-jira

Plugin to integrate with Jira.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-jira[
Project] |
link:https://gerrit.googlesource.com/plugins/its-jira/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[its-rtc]]
==== its-rtc

Plugin to integrate with IBM Rational Team Concert (RTC).

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-rtc[
Project] |
link:https://gerrit.googlesource.com/plugins/its-rtc/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[javamelody]]
=== javamelody

This plugin allows to monitor the Gerrit server.

This plugin integrates JavaMelody in Gerrit in order to retrieve live
instrumentation data from Gerrit.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/javamelody[
Project] |
link:https://gerrit.googlesource.com/plugins/javamelody/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
https://gerrit.googlesource.com/plugins/javamelody/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[labelui]]
=== labelui

The labelui plugin adds a user preference that allows users to choose a
table control to render the labels/approvals on the change screen
(similar to how labels/approvals were rendered on the old change
screen).

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/labelui[
Project] |
link:https://gerrit.googlesource.com/plugins/labelui/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[menuextender]]
=== menuextender

The menuextender plugin allows Gerrit administrators to configure
additional menu entries from the WebUI.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/menuextender[
Project] |
link:https://gerrit.googlesource.com/plugins/menuextender/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/menuextender/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[metrics-reporter-elasticsearch]]

This plugin reports Gerrit metrics to Elasticsearch.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-elasticsearch[
Project].

[[metrics-reporter-graphite]]

This plugin reports Gerrit metrics to Graphite.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-graphite[
Project].

[[metrics-reporter-jmx]]

This plugin reports Gerrit metrics to JMX.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-jmx[
Project].

[[motd]]
=== motd

This plugin can output messages to clients when pulling/fetching/cloning
code from Gerrit Code Review. If the client (and transport mechanism)
can support sending the message to the client, it will be displayed to
the user (usually prefixed by “remote: ”), but will be silently
discarded otherwise.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/motd[
Project] |
link:https://gerrit.googlesource.com/plugins/motd/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/motd/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[oauth-authentication-provider]]
=== OAuth authentication provider
This plugin enables Gerrit to use OAuth2 protocol for authentication.
Two different OAuth providers are supported:

* GitHub
* Google

https://github.com/davido/gerrit-oauth-provider[Project] |
https://github.com/davido/gerrit-oauth-provider/wiki/Getting-Started[Configuration]

[[owners]]
=== owners
This plugin provides a Prolog predicate `add_owner_approval/3` that
appends `label('Owner-Approval', need(_))` to a provided list.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/owners[Project] |
link:https://gerrit.googlesource.com/plugins/owners/+/refs/heads/master/README.md[Documentation]

[[project-download-commands]]
=== project-download-commands

This plugin adds support for project specific download commands.

Project specific download commands that are defined on a parent project
are inherited by the child projects. Child projects can overwrite the
inherited download command or remove it by assigning no value to it.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/project-download-commands[
Project] |
link:https://gerrit.googlesource.com/plugins/project-download-commands/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/project-download-commands/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[quota]]
=== quota

This plugin allows to enforce quotas in Gerrit.

To protect a Gerrit installation it makes sense to limit the resources
that a project or group can consume. To do this a Gerrit administrator
can use this plugin to define quotas on project namespaces.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/quota[
Project] |
link:https://gerrit.googlesource.com/plugins/quota/+doc/master/src/main/resources/Documentation/about.md[
Documentation]
link:https://gerrit.googlesource.com/plugins/quota/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[ref-protection]]
=== ref-protection

A plugin that protects against commits being lost.

Backups of deleted or non-fast-forward updated refs are created under the
`refs/backups/` namespace.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/ref-protection[
Project] |
link:https://gerrit.googlesource.com/plugins/ref-protection/+/refs/heads/stable-2.11/src/main/resources/Documentation/about.md[
Documentation]

[[reparent]]
=== reparent

A plugin that provides project reparenting as a self-service for project owners.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reparent[
Project] |
link:https://gerrit.googlesource.com/plugins/reparent/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/reparent/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[reviewers]]
=== reviewers

A plugin that allows adding default reviewers to a change.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reviewers[
Project] |
link:https://gerrit.googlesource.com/plugins/reviewers/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/reviewers/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[reviewers-by-blame]]
=== reviewers-by-blame

A plugin that allows automatically adding reviewers to a change from
the git blame computation on the changed files. It will add the users
that authored most of the lines touched by the change, since these
users should be familiar with the code and can mostly review the
change.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/reviewers-by-blame[
Project] |
link:https://gerrit.googlesource.com/plugins/reviewers-by-blame/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/reviewers-by-blame/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[groovy-provider]]
=== scripting/groovy-provider

This plugin provides a Groovy runtime environment for Gerrit plugins in Groovy.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/groovy-provider[
Project] |
link:https://gerrit.googlesource.com/plugins/scripting/groovy-provider/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[scala-provider]]
=== scripting/scala-provider

This plugin provides a Scala runtime environment for Gerrit plugins in Scala.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/scala-provider[
Project] |
link:https://gerrit.googlesource.com/plugins/scripting/scala-provider/+doc/master/src/main/resources/Documentation/about.md[
Documentation]

[[scripts]]
=== scripts

Repository containing a collection of Gerrit scripting plugins that are intended
to provide simple and useful extensions.

Groovy and Scala scripts require the installation of the corresponding
scripting/*-provider plugin in order to be loaded into Gerrit.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripts[Project]
link:https://gerrit.googlesource.com/plugins/scripts/+doc/master/README.md[Documentation]

[[server-config]]
=== server-config

This plugin enables access (download and upload) to the server config
files.  It may be used to change Gerrit config files (like
`etc/gerrit.config`) in cases where direct access to the file system
where Gerrit's config files are stored is difficult or impossible to
get.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/server-config[
Project]

[[serviceuser]]
=== serviceuser

This plugin allows to create service users in Gerrit.

A service user is a user that is used by another service to communicate
with Gerrit. E.g. a service user is needed to run the Gerrit Trigger
Plugin in Jenkins. A service user is not able to login into the Gerrit
WebUI and it cannot push commits or tags.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/serviceuser[
Project] |
link:https://gerrit.googlesource.com/plugins/serviceuser/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/serviceuser/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[uploadvalidator]]
=== uploadvalidator

This plugin allows to configure upload validations per project.

Project owners can configure blocked file extensions, required footers
and a maximum allowed path length. Pushes of commits that violate these
settings are rejected by Gerrit.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/uploadvalidator[
Project] |
link:https://gerrit.googlesource.com/plugins/uploadvalidator/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/uploadvalidator/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[websession-flatfile]]
=== websession-flatfile

This plugin replaces the built-in Gerrit H2 based websession cache with
a flatfile based implementation. This implemantation is shareable
amongst multiple Gerrit servers, making it useful for multi-master
Gerrit installations.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/websession-flatfile[
Project] |
link:https://gerrit.googlesource.com/plugins/websession-flatfile/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/websession-flatfile/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[wip]]
=== wip

This plugin adds a new button that allows a change owner to set a
change to Work In Progress, and a button to change from WIP back to a
"Ready For Review" state.

Any change in the WIP state will not show up in anyone's Review
Requests. Pushing a new patchset will reset the change to Review In
Progress.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/wip[
Project] |
link:https://gerrit.googlesource.com/plugins/wip/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/wip/+doc/master/src/main/resources/Documentation/config.md[
Configuration]

[[x-docs]]
=== x-docs

This plugin serves project documentation as HTML pages.

link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/x-docs[
Project] |
link:https://gerrit.googlesource.com/plugins/x-docs/+doc/master/src/main/resources/Documentation/about.md[
Documentation] |
link:https://gerrit.googlesource.com/plugins/x-docs/+doc/master/src/main/resources/Documentation/config.md[
Configuration]


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

SEARCHBOX
---------
