In this page

Version History

3.0.206/07/2018Major performance improvements for super-large Git repositories.Release Notes & Upgrade GuideDownload
3.0.122/06/2018Maintenance release.Release Notes & Upgrade GuideDownload
3.0.012/06/2018Tag verification. Branch verification. New configuration options.Release Notes & Upgrade GuideDownload
2.4.021/11/2017Compatibility release for Jira 7.6.Release Notes & Upgrade GuideDownload
2.3.004/07/2017Compatibility release for Jira 7.4.Release Notes & Upgrade GuideDownload
2.2.006/01/2017Compatibility release for Jira 7.3.Release Notes & Upgrade GuideDownload
2.1.002/09/2016Compatibility release for Jira 7.2. More precise execution of JQL searches.Release Notes & Upgrade GuideDownload
2.0.111/07/2016Maintenance version (fast JQL evaluation, bugfixes).Release Notes & Upgrade GuideDownload
2.0.003/05/2016Token auth. Git client-side verifications. Support for Bitbucket Cloud & GitHub.Release Notes & Upgrade GuideDownload
1.4.008/01/2016Support for Jira Data Center.Release Notes & Upgrade GuideDownload

Release Notes


This version is coming with major (100x!) performance improvements around verifying pushes to super-large Git repositories.

More efficient computation of the "is existing" property for Git commits

Commit Policy Plugin for Jira 3.0.0 introduced a new mechanism to detect existing commits (commits that are pushed or merged to a repo, but already existing on another branch in the same repository). It helps to avoid re-verifying existing commits, not because of performance, but because the issues referenced by the existing commits may already be in another stage in their lifecycle (like in another status) at their second push, which could lead to sub-optimal development workflows and policies.

Although the original implementation of the "is existing" computation logic is working correctly, it did not scale to repositories with several hundred branches or with tens of thousands of commits. If it affected you, then your developers may have complained about unexpectedly slow pushes.

In the new app version, we implemented a better approach that is two orders of magnitude (100x) faster even in huge repositories! For instance, the verification of a large push to a mega-repo now completes in less than a second instead of 2 minutes.

Required Git version
To take advantage of the performance improvement, the app requires Git 2.11.0 or newer. If you use some older Git version (which is very unlikely), the new approach cannot be used, and the app will assume all commits as "new" (as it is the safer assumption) and continue working.
Upgrading from 3.0.1

Upgrade the app JAR as usual, through the Universal Plugin Manager and also upgrade existing Git pre-receive hook scripts if you are using large Git repositories with hundreds of branches or tens of thousands of commits.

If you were not experiencing slow pushes with the previous app version, then you can save the hook upgrade. Again: the previous hook script works correctly, but may eventually be slow in super-large Git repositories.


This version is a maintenance release to deliver a Subversion related bugfix.

  • Fixed: Subversion hook script fails to find branches and tags with Python 3.
Upgrading from 3.0.0

Upgrade the app JAR as usual, through the Universal Plugin Manager and also upgrade existing hook scripts for Subversion if you are using Python 3. For Python 2, there is no need to upgrade the hook scripts.


In short, this is our most feature-packed release since Commit Policy Plugin 1.0.0.

It introduces new conditions that enable powerful verification on branches and tags, new options to toggle verification on already-existing and merge commits, plus numerous improvements.

Branch verification

This version introduces 2 conditions to verify branches to give strict control on VCS branches. You can enforce rules on branch names and linking branches to Jira issues:

Important: don't forget to complete the upgrade steps below, as that is critical for this feature.

Learn more about verifying branches.

Tag verification

In addition to branch verification, this version also introduces 2 conditions to verify tags with strict control. You can enforce rules on tag names and linking tags to Jira issues.

Important: don't forget to complete the upgrade steps below, as that is critical also for this feature.

Learn more about verifying tags.

New option for commit policies: "Accept existing commits without verification"

In each policy, you can now disable the verification of existing commits.

For example, when you have commits pushed to and verified on a feature branch, you may not want to verify those again when merging the feature branch to master. Previous app versions were very strict in this sense, re-verifying those existing commits, but it is not practical in some use cases. For example, if you allow committing against issues in the "In progress" status, then this condition will be overly strict at the merge time as the user story may already be in "Done" at that point.

Important: don't forget to complete the upgrade steps below, especially upgrading the hook scripts, as that is critical for this feature.

Learn more about the "Re-verify already existing commits" option.

New option for commit policies: "Accept merge commits without verification"

In each policy you can enable the verification of merge commits. Previous app versions did not verify merge commits (and this behavior remains the default), but now you can enable that.

Learn more about the "Verify merge commits" option.

New condition: "Changed paths (files) must contain issue keys from a JQL query"

This condition requires directory or file names include issue keys, effectively enforce linking paths to Jira issues.

Learn more about the "Changed paths (files) must contain issue keys from a JQL query" condition.

New option for commit conditions: "Allow additional issue keys in commit messages" (plus branch names, tag names)

For popular demand, there is a new option for the conditions that match the commit message, branch name or tag name against issue keys.

Learn more about the "Allow and ignore the issue keys that don't match the JQL" option.

  • Git branch names are now simply "feature/my-branch" (previous app versions used the refspec format like "refs/heads/feature/my-branch").
  • Automatic hook script version checks are executed to find outdated hook scripts.
  • Console output format was significantly extended (but also streamlined at the same time!) to display problems related to branches and tags.
  • Condition configuration examples can be inserted with a click from a super-helpful floating bubble.
  • New global configuration option for issue keys in branch names, tag names and paths.
  • Issue keys can be entered case insensitively in commit messages ("foo-123 Fixed this bug" is equivalent with "FOO-123 Fixed this bug").
  • New hook script configuration option "ssl_verify = False" allows disabling the verification of the SSL certificate when connecting to Jira over HTTPS (only recommended for testing).
  • When using VCS usernames in email address format (e.g. ""), its value will be used both as the user's name and as the user's email address.
  • When finding multiple global configurations (corrupt data), the first one will be used and a warning will be logged.
  • Rebuilt troubleshooting page with a ton of new articles.
  • Fixed: Only the first line of multi-line Git commit messages are processed (requires upgrading existing "pre-commit" type hook scripts on Git servers).
Upgrading from 2.4.0

This is a major app version that comes with a ton of changes, so upgrading is a bit more than a single click. Start with upgrading the app through the Universal Plugin Manager.

Then please carefully follow the guides in the next section, as there may be further steps to take. If you are unsure, just ask us any time!

Upgrading hook scripts

To take advantage of all these improvements, you absolutely need to upgrade the existing hook scripts. See the hook script upgrade guide.

If you forgot to upgrade the hook script in some repository, the apps writes this warning to the Jira log next time when a commit is received from that repository:

Outdated GIT_SERVER hook script version 1.2.3 found. Re-install the hook script in repository <my forgotten repository>

(Thus the problem does not remain hidden, and you can fix it later on the go.)

Upgrading hook scripts for Bitbucket

Bitbucket users don't use actual hook scripts to connect to Commit Policy Plugin for Jira, but they use the counter-part Bitbucket app intuitively called Commit Policy Plugin for Bitbucket.

Just remember to upgrade also that app to Commit Policy Plugin for Bitbucket 3.0.0 (released the same as Commit Policy Plugin for Jira 3.0.0). That's it.

Upgrading hook scripts for Git (excluding Bitbucket)

Simply, upgrade existing hook scripts. Those should be upgraded both in the server-side repositories (by an admin) and in local clones (by the developer on their computers).

Upgrading hook scripts for Subversion

Simply, upgrade existing hook scripts.

Upgrading hook scripts for Mercurial

There is no new hook script version available for Mercurial. Therefore, there is nothing to do with existing Mercurial hook scripts.

Upgrading commit policies (only for Bitbucket and Git)

If you are using Git or Bitbucket, don't forget to upgrade your existing commit policies that use branch pattern limiting. If you are not using those, you can skip this section.

If you forgot to upgrade the branch pattern in some commit policy, the apps writes this warning to the Jira log next time when that policy is evaluated:

Branch limiting pattern <refs/heads/master> (glob) in commit policy "My commit policy" rule #1 should be upgraded to avoid surprises

(Thus the problem does not remain hidden, and you can fix it later on the go.)

Upgrade follow-ups

As you've seen, we built several features to the app that will automatically write warnings to the Jira log if it finds outdated hook scripts, outdated commit policies or other resources that may need a review. A part of those will also be displayed for your developers (in their VCS client) to guarantee that the problem is recognized. We wanted to be sure that there is no repository left behind during the upgrade and every component in your system is in the most current and consistent state.

Therefore, we strongly suggest:

  1. Check the Jira log regularly for a period after this particular version upgrade. Eventually, you will find repositories or policies mentioned in warnings that need little touches.
  2. Tell your users that they may see eventual warnings and ask them to forward those to you. (If the warning reports an outdated local hook script, then they can upgrade that for themselves.)
  3. Fix the problems reported by following the troubleshooting articles. As always, if your problem is not listed there, ask us any time .


This version is a compatibility release for the Jira 7.6 line.

Upgrading from 2.3.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.


This version is a compatibility release for the Jira 7.4 line.

Upgrading from 2.2.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.


This version is a compatibility release for the Jira 7.3 line.

Upgrading from 2.1.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.


This version is primarily a compatibility release for the Jira 7.2 line, but also includes a couple of improvements around evaluating the "commit message must contains issue keys" condition.

  • JQL warnings and errors raised while executing the search will be displayed by the VCS client. (In previous versions, the commit was correctly rejected, but the root cause appeared only in the server logs.)
  • When the JQL is empty, formally correct, but non-existing issue keys will be rejected. (In previous versions, "FOOBAR-123" was always accepted by empty JQLs. This is now accepted only if it actually exists.)
Upgrading from 2.0.1

Upgrade the app JAR as usual, through the Universal Plugin Manager.


  • JQL conditions are evaluated faster and using less memory, particularly in Jira instances with tens or thousands of hundreds of issues
  • No more ClassCastException is thrown during condition evaluations, in environments using Crowd for user management
  • When JQL conditions are evaluated, user name is printed instead of user key (i.e. user account renames are handled in the expected way)
  • VCS usernames are allowed to contain '@' characters
Upgrading from 2.0.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.


Token-based authentication

This new authentication mode, based on security tokens instead of plain text passwords, greatly improves hook security.

Git client-side verifications (commit-msg hook)

Reject broken commits before those are actually made! This mechanism verifies the commits in the developers' clone at commit time.

Support for Bitbucket Cloud & GitHub

Verify commits locally even if the remote repository is hosted in a closed system, where you cannot configure hooks.

Hook Script Wizard

The redesigned interface makes hook script installation a breeze.

"$committer.userName" variable

This variable in JQL conditions will be replaced with the committer's username before the JQL search is executed. Example JQL: "assignee = $committer.username"

  • Execute permission "x" is auto-set for hook script files (on U*X)
  • VisualSVN permission problems fixed
  • All condition types obey file path based scope limiting
  • International character fixes on Windows (files and usernames)
Upgrading from 1.4.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.


Support for Jira Data Center

In a clustered Jira environment, commit policies and global settings are transparently replicated among the nodes by the add-on. Using the the "load balanced" Jira URL in the hook scripts, you can achieve high availability in the hooks, as well. Therefore, the add-on fully supports Jira enterprise deployments.

  • JQL condition accepts empty an JQL string, to ease the "any valid issue key without further filtering" use case.
  • Textual commit condition parameters (ex: JQL queries) that contain international characters are correctly encoded.
Upgrading from 1.3.0

Upgrade the app JAR as usual, through the Universal Plugin Manager.

Older releases

Regarding older releases please contact us. We are happy to provide you both with the apps and the corresponding upgrade instructions.