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]+
我根据你原来的表述猜的,
[DST\-[0-9]+\]
可能需要的表达式是
\[DST-[0-9]+\]
或者只是,
DST-[0-9]+
虽然不确定。我很肯定在这种情况下您可能不需要转义 -
,因为它不在 char class 中,-
只是 char [=24= 中的元字符] []
。
我刚刚添加了 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]+
我根据你原来的表述猜的,
[DST\-[0-9]+\]
可能需要的表达式是
\[DST-[0-9]+\]
或者只是,
DST-[0-9]+
虽然不确定。我很肯定在这种情况下您可能不需要转义 -
,因为它不在 char class 中,-
只是 char [=24= 中的元字符] []
。