Control Freak - Commit Checkers and Jira Hooks for Bitbucket
"A must-have app!" Validates all pushes, merges, and web UI file edits to ensure they comply with your corporate Git policy
A pre-receive githook to ensure better commit msgs
- Enforce a rebase, squash, or git flow policy if you want!
- Avoid repositories with bad defaults ("main" can be deleted!)
- Run a Gerrit workflow ("Needs Work" PRs can't merge)
- Supports regex like YACC & ScriptRunner
Never see another missing Jira ticket ref / ID
- Define protected branches using Bitbucket's branching model
- Can check Jira issue status, assignee, or better yet, any arbitrary JQL
- Options: can ignore merge commits, submodule updates, clean rebases & cherry picks
Helpful block messages keep developers productive
- Rejection messages include specific steps to fix the problem
- Example: block large files and suggest LFS
- Empowers developers to fix their mistakes
- Simple architecture: no external webhook or post-receive triggers
Control Freak is a collection of push and merge hooks to reject commits based on pre-configured rules. Available rules include:
- Enforce JIRA linking for git commit messages (similar to YACC but better!)
- Branch naming policy
- Block large files
- Block deletes / rewrites / force-pushes of important branches
- Enforce a rebase or squash workflow
- Block self-approvals on pull-requests
- Author / committer name and email checks
- Block empty commits
- Block foxtrot merges
Configuration can be applied per-repo, per-project, or globally. Rules can be applied per repository type (regular vs. personal vs. fork). User and Group based exemption lists let service accounts, bots, and power users avoid the checks when necessary.
Our checking logic is optimized to run at most two "git rev-list" commands per push or merge, no matter how many rules you have enabled.
We also make:
All Control Freak config can be overridden at the project level or the repository level. You can also configure things so that only Bitbucket Global Admins can adjust these project or repository overrides (if necessary).