If a developer makes a direct push to a branch using a repository's Stash URL, the post-receive hook gets successfully triggered.
However, the same hook doesn't trigger if the developer uses the Merge button after his/her changes are code reviewed.
I thought that since the pull request merge happens server-side, the post-commit hook would be the correct place to have a repository trigger. However, having the repo trigger in both the post-receive and post-commit still didn't work after using the Merge button in a pull request.
Is this a bug? What hooks are called before and after the server-side merge in Stash?
The mechanism that performs the pull request merge is actually based on a git fetch into the repository, which doesn't trigger receive hooks. Unfortunately there are currently no hooks that will be invoked automatically after a merge.
That said, if you want to trigger functionality based on a pull request merge, you can build a Stash plugin that consumes the PullRequestMergedEvent. There is also a java API for implementing commit-hooks in a plugin. If you're unfamiliar with Atlassian plugins, the Atlassian SDK is a good place to start.
I'd also keep an eye on STASH-2521, which tracks improved commit hooks support in Stash and should hit arelease in the near future.
Here's an update on my answer from last year:
Repository hooks implementing AsyncPostReceiveRepositoryHook will be called for both pushes and Pull Request merges. See https://developer.atlassian.com/stash/docs/latest/how-tos/repository-hooks.html for full details.
Hello, Atlassian Community members! As we wrap up the end of May we wanted to take a moment to reflect on Mental Health Awareness. It's more important than ever to recognize, appreciate, and enjoy ...
Connect with like-minded Atlassian users at free events near you!Find an event
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.Host an event
You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events