哪个git钩子用于验证推送的提交消息?

时间:2015-07-04 07:37:22

标签: git githooks

我需要验证推送到远程的提交消息,以防止开发人员没有提供足够的细节(字符串长度)或仅提供票号。

我认为更新钩子可以用于此但它似乎没有 - 但它只适用于之前已被推送的引用。当我试图推动一个新分支时,它拒绝了,因为它找不到引用。我怀疑它也可能只是针对推送系列中的最新提交而运行。

执行此任务的钩子的正确选择是什么?

段:

#!/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,但问题是语言不可知

2 个答案:

答案 0 :(得分:6)

策略实施意味着服务器端挂钩。

  • 可以绕过像pre-commit这样的client-side hook,并且不容易部署。
  • 部署server-side一次(在Git repo托管服务器上),你就完成了。

Git Pro书中有一个例子(“Customizing Git - An Example Git-Enforced Policy”),它应该适用于新的分支以及传统的分支推送。

您可以在“How do we verify commit messages for a push?”找到其他示例。

答案 1 :(得分:0)

你是对的,更新挂钩不起作用。如果需要强制执行提交消息标准,则应使用预提交挂钩。它将在提交之前运行,并确保提交是标准的,然后继续并创建提交。 这是一个预提交钩子样本

https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample

有关git hooks的更多信息,请查看

http://githooks.com/

相关问题