d7293d6446
* stable-2.11: Reenable revert button when revert is cancelled Add missing --newrev parameter to change-merged hook documentation Change-Id: If653e664af51db9eaca6724fdf6a5083cc00f1f0
195 lines
6.7 KiB
Plaintext
195 lines
6.7 KiB
Plaintext
= 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> --kind <change kind> --change-url <change url> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --uploader <uploader> --commit <sha1> --patchset <patchset id>
|
|
====
|
|
|
|
kind:: change kind represents the kind of change uploaded, also represented in link:json.html#patchSet[patchSet]
|
|
|
|
REWORK;; Nontrivial content changes.
|
|
|
|
TRIVIAL_REBASE;; Conflict-free merge between the new parent and the prior patch set.
|
|
|
|
NO_CODE_CHANGE;; No code changed; same tree and same parent tree.
|
|
|
|
NO_CHANGE;; No changes; same commit message, same tree and same parent tree.
|
|
|
|
=== draft-published
|
|
|
|
This is called whenever a draft change is published.
|
|
|
|
====
|
|
draft-published --change <change id> --change-url <change url> --change-owner <change owner> --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> --change-owner <change owner> --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> --change-owner <change owner> --project <project name> --branch <branch> --topic <topic> --submitter <submitter> --commit <sha1> --newrev <sha1>
|
|
====
|
|
|
|
=== merge-failed
|
|
|
|
Called whenever a change has failed to merge.
|
|
|
|
====
|
|
merge-failed --change <change id> --change-url <change url> --change-owner <change owner> --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> --change-owner <change owner> --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> --change-owner <change owner> --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>
|
|
====
|
|
|
|
=== project-created
|
|
|
|
Called whenever a project has been created.
|
|
|
|
====
|
|
project-created --project <project name> --head <head name>
|
|
====
|
|
|
|
=== reviewer-added
|
|
|
|
Called whenever a reviewer is added to a change.
|
|
|
|
====
|
|
reviewer-added --change <change id> --change-url <change url> --change-owner <change owner> --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> --change-owner <change owner> --project <project name> --branch <branch> --changer <changer> --old-topic <old topic> --new-topic <new topic>
|
|
====
|
|
|
|
=== hashtags-changed
|
|
|
|
Called whenever hashtags are added to or removed from a change from the Web UI
|
|
or via the REST API.
|
|
|
|
====
|
|
hashtags-changed --change <change id> --change-owner <change owner> --project <project name> --branch <branch> --editor <editor> --added <hashtag> --removed <hashtag> --hashtag <hashtag>
|
|
====
|
|
|
|
The `--added` parameter may be passed multiple times, once for each
|
|
hashtag that was added to the change.
|
|
|
|
The `--removed` parameter may be passed multiple times, once for each
|
|
hashtag that was removed from the change.
|
|
|
|
The `--hashtag` parameter may be passed multiple times, once for each
|
|
hashtag remaining on the change after the add or remove operation has
|
|
been performed.
|
|
|
|
=== 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]
|
|
|
|
SEARCHBOX
|
|
---------
|