[Other doc versions]
[Doc downloads (PDF, HTML, XML)]
Hooks in Stash provide a way to customise a team's workflow and integrate with other systems. Stash currently supports two types of hooks, pre and post-receive.
On this page:
Administrators can see the hooks that are available in Stash by going to Settings > Hooks for a Stash repository. Once installed, hooks are available across all repositories in a Stash instance, but are enabled separately on each repository in a project.
Click the 'pen' icon beside the name of a hook to edit configuration details for the hook.
Stash currently ships with the following hooks:
git push -- force
).The first hook to run when handling a push from a client is the pre-receive hook. It can reject pushes to the repository if certain conditions are not fulfilled. You can use this hook to prevent force pushes to the repository or check whether all commits contain a valid JIRA issue key.
The post-receive hook runs after the commits have been processed and can be used to update other services or notify users. For example this post-receive hook could be used to send a message to a chat server or notify a continuous integration server such as Atlassian Bamboo of the newly pushed changes.
Stash supports two types of post-receive hook:
post-receive
hooks. They run on the Stash server after a push.Note that a Git PostReceiveHook won't be triggered after a pull request merge. The mechanism that performs the pull request merge is actually based on a git fetch
into the repository, which doesn't trigger Git post-receive
hooks. To trigger functionality based on a pull request merge, you should write an AsyncPostReceiveRepositoryHook for the Stash repository.
A number of hooks are available from the Atlassian Marketplace. You can find and install these from within Stash – simply use the Add hook button on the hooks settings page to view available hooks from the marketplace. See Managing add-ons for details.
Developers can write receive hook plugins for Stash using a simple API that provides a simple way to create a configuration interface, and stores the hook's configuration settings on a per-repository basis.
For information about how to write your own hooks please see the Stash developer docs.
In particular, these pages will be helpful:
See too this blog post about hooks for Stash: http://blogs.atlassian.com/2013/03/stash-git-hooks-api/