GitHub服务器上的Jira预接收钩子不适用于git commit push

时间:2019-07-19 00:31:49

标签: regex git github jira githooks

我刚刚添加了https://github.com/github/platform-samples/blob/master/pre-receive-hooks/require-jira-issue.sh

脚本到我的一个github远程仓库,并且能够在组织级别成功配置预接收钩子,并为我的示例仓库之一启用了它。现在,当我从本地推送到该示例存储库时,始终会导致以下错误:-

remote: jira-commit-hook.sh: failed with exit status 1
remote: grep: Invalid range end
remote: ERROR
remote: ERROR: Your push was rejected because the commit
remote: ERROR: e9b0dd4695a51beb51e6fc1a8d16f01fa7dd13b8 in master
remote: ERROR: is missing the JIRA Issue
remote: ERROR:
remote: ERROR: Please fix the commit message and push again.
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://************'

我使用的提交正则表达式为msg_regex='[DST\-[0-9]+\]',因为DST是我们jira中某个项目的项目密钥。我正在推送的所有提交都在其消息中包含字符串DST-***,其中***是数字,而DST-***是此处jira项目的一些实际问题关键字。知道为什么远程服务器挂钩拒绝推送。看起来它没有验证正则表达式。知道为什么吗?

2 个答案:

答案 0 :(得分:1)

-是在内部字符类[]中使用时在正则表达式中的特殊字符,当它出现在除

之外的其他任何地方时,它表示范围。
  • 作为课程中的第一个字符或在[^]之后
  • 在角色课结束时

所以您的正则表达式应该是

DST-[0-9]+

Character Class

答案 1 :(得分:1)

我的猜测基于您的原始表情,

[DST\-[0-9]+\]

可能是所需的表达方式

\[DST-[0-9]+\]

或者也许是

DST-[0-9]+

虽然不确定。我很肯定您在这种情况下可能不需要转义-,因为它不在char类中,-只是char类[]中的一个元字符。