| Configuration |
| ============= |
| |
| Environment |
| ----------- |
| |
| When a project is given to a hook, 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 `commit-received`, `ref-update` and `submit` hooks, |
| 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. |
| |
| Configuration |
| ------------- |
| |
| The plugin is configured in a `[hooks]` section in the `gerrit.config` file |
| in the site's `etc` folder. |
| |
| The configuration values are evaluated when the plugin is loaded. If the values |
| are changed, the plugin must be reloaded for them to take effect. |
| |
| A hook may be temporarily disabled by either removing it or renaming it. Its |
| behavior may be changed by replacing its content. Such changes will take |
| immediate effect without having to reload the plugin. |
| |
| hooks.path |
| : Location of hook executables. If not set, defaults to `$site_path/hooks` |
| |
| hooks.syncHookTimeout |
| : Timeout value in seconds for synchronous hooks. If not set, defaults |
| to 30 seconds. |
| |
| hooks.executorThreads |
| : Number of workers to use for hook execution. If not set, defaults to 1. |
| |
| hooks.changeAbandonedHook |
| : Filename for the change abandoned hook. If not set, defaults to `change-abandoned`. |
| |
| hooks.changeDeletedHook |
| : Filename for the change deleted hook. If not set, defaults to `change-deleted`. |
| |
| hooks.changeMergedHook |
| : Filename for the change merged hook. If not set, defaults to `change-merged`. |
| |
| hooks.changeRestoredHook |
| : Filename for the change restored hook. If not set, defaults to `change-restored`. |
| |
| hooks.claSignedHook |
| : Filename for the CLA signed hook. If not set, defaults to `cla-signed`. |
| |
| hooks.commentAddedHook |
| : Filename for the comment added hook. If not set, defaults to `comment-added`. |
| |
| hooks.commitReceivedHook |
| : Filename for the commit received hook. If not set, defaults to `commit-received`. |
| |
| hooks.draftPublishedHook |
| : Filename for the draft published hook. If not set, defaults to `draft-published`. |
| |
| hooks.hashtagsChangedHook |
| : Filename for the hashtags changed hook. If not set, defaults to `hashtags-changed`. |
| |
| hooks.patchsetCreatedHook |
| : Filename for the patchset created hook. If not set, defaults to `patchset-created`. |
| |
| hooks.projectCreatedHook |
| : Filename for the project created hook. If not set, defaults to `project-created`. |
| |
| hooks.refUpdateHook |
| : Filename for the ref update hook. If not set, defaults to `ref-update`. |
| |
| hooks.refUpdatedHook |
| : Filename for the ref updated hook. If not set, defaults to `ref-updated`. |
| |
| hooks.reviewerAddedHook |
| : Filename for the reviewer added hook. If not set, defaults to `reviewer-added`. |
| |
| hooks.reviewerDeletedHook |
| : Filename for the reviewer update hook. If not set, defaults to `reviewer-deleted`. |
| |
| hooks.submitHook |
| : Filename for the submit hook. If not set, defaults to `submit`. |
| |
| hooks.topicChangedHook |
| : Filename for the topic changed hook. If not set, defaults to `topic-changed`. |
| |
| |
| Missing Change URLs |
| ------------------- |
| |
| If [gerrit.canonicalWebUrl][1] 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. |
| |
| |
| Debugging Hooks |
| --------------- |
| |
| If execution of a hook failed (i.e. it returned a non-zero exit code) the |
| exit code is logged at error level. Likewise, if a hook timed out or was |
| cancelled, this is logged at error level. |
| |
| Any output (including both stdout and stderr) from the hook is logged at |
| debug level. |
| |
| To make debug logs visible in Gerrit's log file, debug logging must be |
| enabled for the `com.googlesource.gerrit.plugins.hooks` package. This can be |
| done by setting the log level at runtime with the ssh command: |
| |
| ``` |
| ssh -p 29418 user@gerrit gerrit logging set-level DEBUG com.googlesource.gerrit.plugins.hooks |
| ``` |
| |
| Note that setting the log level at runtime only works for loggers that |
| have already been created. Loggers that get created after the level was |
| set will still be created with the default level. |
| |
| To set the level for all loggers, it is necessary to do it by editing the |
| `log4j.properties` file. This requires the Gerrit server to be restarted. |
| |
| [1]: ../../../Documentation/config-gerrit.html#gerrit.canonicalWebUrl |