我想警告用户,如果他们的代码包含特定字符串并通过电子邮件提醒人们。
现在我正在使用接收后 Hook ,因为检测需要在服务器端完成。
我正在更新服务器端存储库并运行类似 git diff-tree -r --name-only --no-commit-id $2 | xargs grep foo
检测错误字符串“foo”。
这种方法的问题:
- 我不喜欢在服务器端维护存储库的整个工作版本
- 它扫描整个文件,而不仅仅是更改。 编辑 我解决了这个问题,将上面的内容替换为:
git show $2 | grep ^+ ...
有更好的方法吗?
最佳答案
如果您使用的是 gitolite V3(或“g3”),请尝试将支票放入 VREF .
For every refex starting with VREF/
FOO
/ in a rule that applies to this user, a call to a program calledFOO
is triggered (stored in$LOCAL_CODE/VREF
).
Note that the program isn't even called if the VREF rule doesn't apply to that user.
您可以准确控制要向哪些(组)用户应用此警告。
如果不满足您的条件(无错误字符串),您可以拒绝推送。
然而,这仍然需要先更新工作目录(因为 Gitolite 默认只管理裸仓库)
关于Git 钩子(Hook)检测包含特定字符串的文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569263/