我想在 GIT 中进行配置,强制所有提交消息遵循特定模式。 我怎样才能做到这一点?
编辑:我想要 Github。
执行此操作的最佳方法是设置一个 CI 作业来检查提交消息并验证它们是否采用您想要的格式。在某些环境中,也可以使用
pre-receive
挂钩,尽管在 github.com 上不可能(但在 GitHub Enterprise Server 上)。
该命令看起来像这样:
#!/bin/sh
git rev-list $1 | \
xargs -L1 sh -c 'git log --format=%B -1 $0 | grep -qs Signed-off-by'
在我的例子中,我向命令传递了分支上的一系列提交(即,以
BASE..HEAD
的形式),并且我的检查是验证每个提交是否包含文本 Signed-off-by
。您可以将 grep
命令替换为您喜欢的任何内容,前提是如果提交消息可接受则退出 0,如果不可接受则退出非零。然后,脚本本身将在成功时退出 0,如果提交不可接受则退出非零,然后您可以拒绝提交。
您可能希望通过向开发人员提供
commit-msg
钩子以及使用类似的技术来帮助他们。然而,正如 Git FAQ 中所概述的那样,强制的客户端钩子都是无效的,因为开发人员可以在没有人注意到的情况下轻松绕过它们,并且也会让一些高级开发人员感到烦恼,因此您应该让他们选择加入那些想要它们的人。