Prevent Push If Commit Message Does Not Match Pattern


Prevents pushes to repository if commits present in the push contain commit messages that do not match a predefined regular expression pattern.


You want to enforce that commit messages in your repository follow a specific pattern.

Good to Know

  • This script checks all commits present in the push, if any of them contain a commit message that does not match the expected pattern the entire push will be blocked.


Bitbucket Bitbucket (5.6 - 5.16)

import com.atlassian.bitbucket.hook.repository.CommitAddedDetails
import com.atlassian.bitbucket.hook.repository.PreRepositoryHookCommitCallback
import com.atlassian.bitbucket.hook.repository.RepositoryHookCommitFilter
import com.atlassian.bitbucket.hook.repository.RepositoryHookResult

import javax.annotation.Nonnull

def requiredCommitMessagePattern = ~/BUGFIX:.*/
commitCallback = new PreRepositoryHookCommitCallback() {

        boolean onCommitAdded(@Nonnull CommitAddedDetails commitDetails) {
            def commit = commitDetails.commit

            if (!(commit.message ==~ requiredCommitMessagePattern)) {
                def msg = "Commit message: (${commit.message}) does not match required pattern: $requiredCommitMessagePattern"
                resultBuilder.veto(msg, msg)

                return false


        RepositoryHookResult getResult() {

commitFilters << RepositoryHookCommitFilter.ADDED_TO_ANY_REF
Discovered an issue? Report it here

Suggested for you