Git 钩子(Hook)检测包含特定字符串的文件更改

标签 git gitolite githooks

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

现在我正在使用接收后 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 called FOO 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/

相关文章:

linux - bash 中的 Git 提示符

git - Gerrit 项目未复制到 bitbucket,错误 : channel is not opened

Git 术语 : Difference between tip and HEAD?

git - 将两个存储库与 gitolite merge

linux - 如何让 Gitweb 与 SELinux 一起工作(在 CentOS 6.5 上,使用 gitolite v3)

git - 如何在推送时自动 checkout ?

Git/rsync 混合用于具有大型二进制文件和文本文件的项目

ssh - 如何向 Gitolite 添加新的 ssh key

git - 如何删除git钩子(Hook)

windows - 如何在 Windows 上运行 git hook 脚本,通过文件系统使用存储库?