哪个 git 挂钩用于验证推送的提交消息?
Which git hook to use for validating pushed commit messages?
我需要验证推送到远程的提交消息,以防止开发人员没有在(字符串长度)中输入足够的细节或只输入票号。
我认为更新挂钩适用于此,但它似乎不适用,但它仅适用于之前推送的参考。当我尝试推送一个新分支时,它被拒绝了,因为它找不到引用。我怀疑它也可能只是 运行 反对推送系列中的最新提交。
执行此任务的钩子的正确选择是什么?
片段:
#!/usr/bin/env php
<?php
define('MINIMUM_MESSAGE_LENGTH', 10);
$exit = 0; // default exit code -> success
$ref = $argv[1];
$commitMessage = exec('git log -1 ' . $ref . ' --pretty=format:%s');
$commitMessage = trim($commitMessage);
// validations & exit($exit) follow;
是的,这是 PHP,但问题与语言无关
你是对的,更新挂钩是行不通的。如果您需要强制执行提交消息标准,则应该使用预提交挂钩。在提交之前它将 运行 并确保提交是标准的,然后继续创建提交。
这是一个预提交挂钩示例
https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample
有关 git 钩子的更多信息,请查看此
策略实施意味着服务器端挂钩。
- 像
pre-commit
这样的client-side hook可以绕过,不容易部署。
- server-side 部署一次(在 Git 存储库托管服务器上),您就完成了。
Git Pro 书中有一个示例(“Customizing Git - An Example Git-Enforced Policy”),它应该适用于新分支以及遗留分支推送。
您可以在“How do we verify commit messages for a push?”找到其他示例。
我需要验证推送到远程的提交消息,以防止开发人员没有在(字符串长度)中输入足够的细节或只输入票号。
我认为更新挂钩适用于此,但它似乎不适用,但它仅适用于之前推送的参考。当我尝试推送一个新分支时,它被拒绝了,因为它找不到引用。我怀疑它也可能只是 运行 反对推送系列中的最新提交。
执行此任务的钩子的正确选择是什么?
片段:
#!/usr/bin/env php
<?php
define('MINIMUM_MESSAGE_LENGTH', 10);
$exit = 0; // default exit code -> success
$ref = $argv[1];
$commitMessage = exec('git log -1 ' . $ref . ' --pretty=format:%s');
$commitMessage = trim($commitMessage);
// validations & exit($exit) follow;
是的,这是 PHP,但问题与语言无关
你是对的,更新挂钩是行不通的。如果您需要强制执行提交消息标准,则应该使用预提交挂钩。在提交之前它将 运行 并确保提交是标准的,然后继续创建提交。 这是一个预提交挂钩示例
https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample
有关 git 钩子的更多信息,请查看此
策略实施意味着服务器端挂钩。
- 像
pre-commit
这样的client-side hook可以绕过,不容易部署。 - server-side 部署一次(在 Git 存储库托管服务器上),您就完成了。
Git Pro 书中有一个示例(“Customizing Git - An Example Git-Enforced Policy”),它应该适用于新分支以及遗留分支推送。
您可以在“How do we verify commit messages for a push?”找到其他示例。