GitHub 服务器上的 Jira 预接收挂钩不适用于 git 提交推送

Jira pre-receive hook on GitHub server not working for git commit pushes

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

我的一个 github 远程回购的脚本,并且能够在组织级别成功配置预接收挂钩,并为我的一个示例回购启用它。现在,当我从本地推送到该示例 repo 时,它总是会导致以下错误:-

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 项目的一些实际问题键。知道为什么远程服务器挂钩拒绝推送。看起来它没有验证正则表达式。知道为什么吗?

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

以外的任何其他地方时
  • 作为 class 或 [^] 之后的第一个字符
  • 字符结尾class

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

DST-[0-9]+

Character Class

我根据你原来的表述猜的,

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

可能需要的表达式是

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

或者只是,

DST-[0-9]+

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