我正在尝试在 Github 中设置一个预接收挂钩,我们将使用它来避免不必要的提交。我正在寻找一些需要维护的规则
需要自定义提交消息。每个提交都应在开始示例中包含现有的 JIRAJIRA-XXX | Commit message
也对任何拉取请求强制执行此操作。
需要分支名称格式。
例子:abc_devName_some_br_name_jira_XXX
这里有人可以帮我吗,怎么办?
我正在尝试在 Github 中设置一个预接收挂钩,我们将使用它来避免不必要的提交。我正在寻找一些需要维护的规则
需要自定义提交消息。每个提交都应在开始示例中包含现有的 JIRAJIRA-XXX | Commit message
也对任何拉取请求强制执行此操作。
需要分支名称格式。
例子:abc_devName_some_br_name_jira_XXX
这里有人可以帮我吗,怎么办?
Git webhooks 和 git hooks 是不同的选项。我们可以编目:
您的标题问题说“webhooks”,但您的问题详细信息说“pre-receive hook”,所以首先要澄清的是:据我所知,有不同的选项可以单独工作。
我将向您展示一些实现目标的选项:
用于保护意外推送的主分支。
这些规则是在存储库创建时创建的,通常输入参数只是分支名称和角色组。提交消息在这些规则中不可用。
Github 示例
Bitbucket 示例
简单的方法,但发生在git push事件之后。脚步:
预接收挂钩功能仅适用于GitHub Enterprise
基本上这是一个 shell 脚本,它将在您的 github 企业的服务器中运行。
我认为类似于 git 服务器端的钩子。我发现此链接包含注册、更新和删除挂钩的步骤:
现在,如何创建脚本:
我发现的问题是git 消息字符串不是可以使用的变量。在 webhook 中是!!
如果要访问提交消息,则需要对此进行测试
主要思想是拥有提交 ID,您可以访问 git 服务器中的某些文件,其中包含以下消息:
tree cfda3bf37b78aef7f4daf
parent 085bb3306e7e7
author Scott Chacon <schacon@gmail.com> 1205815931 -0700
committer Scott Chacon <schacon@gmail.com> 1240030591 -0700
I'm the message sent by the developer
如果您实现了这一点,您可以添加一条消息,以便在开发人员使用无效 git 消息执行git push时显示:
> Counting objects: 7, done.
> Delta compression using up to 4 threads.
> Compressing objects: 100% (3/3), done.
> Writing objects: 100% (7/7), 700 bytes | 0 bytes/s, done.
> Total 7 (delta 0), reused 7 (delta 0)
> remote: error: rejecting all pushes
> To git@192.168.99.100:test.git
> ! [remote rejected] main -> main (pre-receive hook declined)
> error: commit message does not meet the rule xyz
类似于 github 企业功能。我认为在云或本地机器上安装 git 服务器不是一种常见的做法,因为它可以使用现成的服务(github、bitbucket、gitlab 等),但它是一种选择。
您可以在此处找到更多详细信息
与在 github 企业服务器中一样,您不会将提交消息准备好用作变量。检查这个:
相同的想法,但在开发人员机器级别。更多细节在这里
基本上在你的开发者机器中任何存储库的 .git 文件夹中,你都可以放置这些脚本。
由于这个脚本是shell脚本,你会遇到同样的问题:git message is not a ready to use variable