【问题标题】:Git hook to detect file changes that contain a certain stringGit钩子检测包含特定字符串的文件更改
【发布时间】:2012-07-19 03:14:09
【问题描述】:

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

现在我正在使用 post-receive 挂钩,因为需要在服务器端进行检测。

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

这种方法的问题:

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

有没有更好的方法来做到这一点?

【问题讨论】:

  • Git 存储文件,而不是 diff。所以不可能只扫描更改。
  • 当然你可以得到一个差异。我通过使用 git diff/git show 解决了这部分问题。

标签: git gitolite githooks


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2020-04-14
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2011-05-23
    相关资源
    最近更新 更多