Gerrit Code Review - Hooks
==========================

Gerrit does not run any of the standard git hooks in the
repositories it works with, but it does have its own hook mechanism
included. Gerrit looks in `'$site_path'/hooks` for executables with
names listed below.

The environment will have GIT_DIR set to the full path of the
affected git repository so that git commands can be easily run.

Make sure your hook scripts are executable if running on *nix.

With the exception of the ref-update hook, hooks are run in the background
after the relevant change has taken place so are unable to affect
the outcome of any given change. Because of the fact the hooks are
run in the background after the activity, a hook might not be notified
about an event if the server is shutdown before the hook can be invoked.

Supported Hooks
---------------

ref-update
~~~~~~~~~~

This is called when a push request is received by Gerrit. It allows
a push to be rejected before it is committed to the Gerrit repository.
If the script exits with non-zero return code the push will be rejected.
Any output from the script will be returned to the user, regardless of the
return code.

This hook is called synchronously so it is recommended that
it not block.  A default timeout on the hook is set to 30 seconds to avoid
"runaway" hooks using up server threads.  See link:config-gerrit.html#hooks.syncHookTimeout[hooks.syncHookTimeout]
for configuration details.

====
  ref-update --project <project name> --refname <refname> --uploader <uploader> --oldrev <sha1> --newrev <sha1>
====

patchset-created
~~~~~~~~~~~~~~~~

This is called whenever a patchset is created (this includes new
changes and drafts).

====
  patchset-created --change <change id> --is-draft <boolean> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --commit <sha1> --patchset <patchset id>
====

draft-published
~~~~~~~~~~~~~~~

This is called whenever a draft change is published.

====
  draft-published --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --commit <sha1> --patchset <patchset id>
====

comment-added
~~~~~~~~~~~~~

This is called whenever a comment is added to a change.

====
  comment-added --change <change id> --is-draft <boolean> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --author <comment author> --commit <commit> --comment <comment> [--<approval category id> <score> --<approval category id> <score> ...]
====

change-merged
~~~~~~~~~~~~~

Called whenever a change has been merged.

====
  change-merged --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1>
====

merge-failed
~~~~~~~~~~~~

Called whenever a change has failed to merge.

====
  merge-failed --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1> --reason <reason>
====

change-abandoned
~~~~~~~~~~~~~~~~

Called whenever a change has been abandoned.

====
  change-abandoned --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --abandoner <abandoner> --commit <sha1> --reason <reason>
====

change-restored
~~~~~~~~~~~~~~~

Called whenever a change has been restored.

====
  change-restored --change <change id> --change-url <change url> --project <project name> --branch <branch> --topic <topic> --restorer <restorer> --commit <sha1> --reason <reason>
====

ref-updated
~~~~~~~~~~~

Called whenever a ref has been updated.

====
  ref-updated --oldrev <old rev> --newrev <new rev> --refname <ref name> --project <project name> --submitter <submitter>
====

reviewer-added
~~~~~~~~~~~~~~

Called whenever a reviewer is added to a change.

====
  reviewer-added --change <change id> --change-url <change url> --project <project name> --branch <branch> --reviewer <reviewer>
====

topic-changed
~~~~~~~~~~~~~

Called whenever a change's topic is changed from the Web UI or via the REST API.

====
  topic-changed --change <change id> --project <project name> --branch <branch> --changer <changer> --old-topic <old topic> --new-topic <new topic>
====

cla-signed
~~~~~~~~~~

Called whenever a user signs a contributor license agreement.

====
  cla-signed --submitter <submitter> --user-id <user_id> --cla-id <cla_id>
====


Configuration Settings
----------------------

It is possible to change where Gerrit looks for hooks, and what
filenames it looks for, by adding a [hooks] section in gerrit.config.

Gerrit will use the value of hooks.path for the hooks directory.

For the hook filenames, Gerrit will use the values of hooks.patchsetCreatedHook,
hooks.draftPublishedHook, hooks.commentAddedHook, hooks.changeMergedHook,
hooks.changeAbandonedHook, hooks.changeRestoredHook, hooks.refUpdatedHook,
hooks.refUpdateHook, hooks.reviewerAddedHook and hooks.claSignedHook.

Missing Change URLs
-------------------

If link:config-gerrit.html#gerrit.canonicalWebUrl[gerrit.canonicalWebUrl]
is not set in `gerrit.config` the `--change-url` flag may not be
passed to all hooks.  Hooks started out of an SSH context (for example
the patchset-created hook) don't know the server's web URL, unless
this variable is configured.

See Also
--------

* link:config-gerrit.html#hooks[Section hooks]

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