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.
Hooks are run in the background after the relevent 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
patchset-created
This is called whenever a patchset is created (this includes new changes)
patchset-created --change <change id> --change-url <change url> --project <project name> --branch <branch> --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> --change-url <change url> --project <project name> --branch <branch> --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> --submitter <submitter> --commit <sha1>
change-abandoned
Called whenever a change has been abandoned.
change-abandoned --change <change id> --change-url <change url> --project <project name> --branch <branch> --abandoner <abandoner> --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> --restorer <restorer> --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>
Configuration Settings
It is possible to change where gerrit looks for hooks, and what filenames it looks for by adding a [hooks] section to gerrit.config.
Gerrit will use the value of hooks.path for the hooks directory, and the values of hooks.patchsetCreatedHook, hooks.commentAddedHook, hooks.changeMergedHook and hooks.changeAbandonedHook for the filenames for the hooks.
Missing Change URLs
If 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
Part of Gerrit Code Review