Git的挂钩检测包含特定字符串的文件更改(Git hook to detect file chang

2019-07-30 12:20发布

我想提醒用户,如果他们的代码包括通过电子邮件某些字符串和报警的人。

现在,我使用后收到钩,因为检测需要在服务器端完成。

我更新服务器端存储库和运行像git diff-tree -r --name-only --no-commit-id $2 | xargs grep foo git diff-tree -r --name-only --no-commit-id $2 | xargs grep foo检测错误的字符串为“foo”。

这种方法的问题:

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

有一个更好的方法吗?

Answer 1:

如果您正在使用gitolite V3(或“G3”),而不是试图把你的支票在VREF

对于每一个refex开始VREF / FOO /于适用于该用户的规则,在程序调用的调用FOO被触发( 存储在$LOCAL_CODE/VREF )。
请注意,如果VREF规则并不适用于该用户的程序甚至没有叫。

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

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



文章来源: Git hook to detect file changes that contain a certain string