3

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

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

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

这种方法的问题:

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

有一个更好的方法吗?

4

1 回答 1

1

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

对于适用于该用户的规则中以 VREF/ / 开头的每个 refex,都会触发FOO对被调用程序的调用FOO存储在 中$LOCAL_CODE/VREF)。
请注意,如果 VREF 规则不适用于该用户,则甚至不会调用该程序。

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

但是,这仍然需要先更新工作目录(因为 Gitolite 默认只管理裸仓库)

于 2012-07-20T05:45:57.337 回答