grumphp
grumphp copied to clipboard
Git branch pattern whitelist works as "all" instead of "any"
Q | A |
---|---|
Version | GrumPHP 0.18.1 |
Bug? | yes |
New feature? | no |
Question? | yes |
Documentation? | no |
Related tickets | None |
My configuration
# grumphp.yml
tasks:
git_branch_name:
whitelist:
- master
- '/^release\/\d+\.\d+(\.x)?(-dev)?$/'
- '/^(dev|feature|bugfix|hotfix)\/\d+-[\-|a-z|0-9]+$/'
Steps to reproduce:
git checkout -b dev/0-branch-naming
git commit -am "My commit."
Result:
Whitelist rule not matched: master
Whitelist rule not matched: /^release\/\d+\.\d+(\.x)?(-dev)?$/
To skip commit checks, add -n or --no-verify flag to commit command
Failed to execute command vendor/bin/grumphp git:pre-commit --skip-success-output: exit status 1
The first pattern in the whitelist
matches, but grumphp still fails because the other 2 don't match. Am I doing something wrong? Also, in the long term, I'd suggest renaming whitelist
and blacklist
to allow
and deny
.
Hello,
It should pass if one of the lines matches according to the implementation and testsuite. Can you provide a failing unit test? https://github.com/phpro/grumphp/blob/master/test/Unit/Task/Git/BranchNameTest.php#L96-L105
Thanks for the suggestion as well. It's on the radar - yet a lot of work with a lot of breaking changes for everyone. So it will probably be something for v2 - if I ever find the time :)
The issue is that in the regex rules, you need to double escape your forward slash (\/) so that what is passed to preg_match() is a single escaped string (/)
I'll close it for now because I think the fix suggested in the previous comment makes sense. I'll reopen it if doesn't work.