为拉取请求合并/压缩添加正则表达式验证器

Add regex validator for pull request merge / squash

我们如何确保用户在合并或 squashing/merging github.com 拉取请求时将 jira 问题密钥放在提交标题或消息中?

我项目中的大多数用户都使用 github 网络 ui 进行拉取请求。我们使用 PULL_REQUEST_TEMPLATE.md 来确保他们提供有关测试的目标、方法和详细信息,这很有效。

但是,我们发现用户没有将 jira 问题 id 放在提交注释中的情况无法将提交绑定到 jira 问题。我可以使用客户端挂钩进行提交,但是当用户压缩她的功能分支时,该数据不会被带入最终提交。

有谁知道如何将提交消息验证程序添加到 github PR 本身?

参见“Git commit-msg hook to validate for jira issue or the word merge”作为客户端挂钩的示例,不实用,因为它需要分布在所有客户端上。

您需要设置 webhook 才能让侦听器在服务器级别验证提交消息。

另一种方法是注册并设置一个 GitHub Action like the babel one,它将直接在 GitHub 服务器级别验证提交消息(无需像在 webhook 中那样设置侦听器)

因为 Github 似乎自动使用分支上第一个 git 提交的文本填充提交标题字段,然后任何客户端验证器(如@Vonc 建议的验证器会满足目标

  1. 配置jira issue key validator git client side hook(理想情况下它可以仅在分支上的第一次提交上运行)

  2. 当用户在 github webui 中合并或压缩时,第一个提交文本被复制到表单上的提交标题字段中。

检测第一次提交

if [[ $(git log master..HEAD --oneline) ]]; then
    echo "Not first commit"
else
    echo "Is first commit"
fi

这不是 100%,因为用户可以删除文本。这更像是一个 微调 解决方案,用户将采用默认值,我们确保默认值可能是正确的