= 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 are some public services that offer the download of pre-built
plugin jars:

* link:https://gerrit-ci.gerritforge.com[CI Server from GerritForge]
* link:http://builds.quelltextlich.at/gerrit/nightly/index.html[
  CI Server from Quelltextlich]

The following list gives an overview about 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]

[[codenvy]]
=== codenvy

Plugin to allow to edit code on-line on either an existing branch or an
active change using the link:http://codenvy.com[Codenvy] cloud
development platform.

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

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

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

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

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