Git hook用于检测包含特定字符串的文件更改

时间:2012-07-19 21:03:41

标签: git gitolite githooks

我想警告用户他们的代码是否包含某个字符串并通过电子邮件提醒用户。

现在我正在使用post-receive钩子,因为检测需要在服务器端完成。

我正在更新服务器端存储库并运行类似git diff-tree -r --name-only --no-commit-id $2 | xargs grep foo的内容来检测错误的字符串“foo”。

这种方法存在问题:

  • 我不喜欢维护存储库服务器端的整个工作版本
  • 它扫描整个文件,而不仅仅是更改。 修改我解决了这个问题,将上面的内容替换为:git show $2 | grep ^+ ...

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是gitolite V3(或'g3'),请尝试将支票放入VREF

  

对于适用于此用户的规则中以VREF / FOO /开头的每个refex,将触发对名为FOO的程序的调用(stored in $LOCAL_CODE/VREF)。   请注意,如果VREF规则不适用于该用户,则甚至不会调用该程序。

您可以准确控制要应用此警告的用户(组) 如果不满足您的条件(没有坏字符串),您可以拒绝推送。

然而,仍然需要首先更新工作目录(因为Gitolite默认只管理裸存储库)