【问题标题】:How to execute a client-side Git hook?如何执行客户端 Git 钩子?
【发布时间】:2016-08-18 07:27:56
【问题描述】:

我在实现 pre-push 挂钩时遇到问题。开发人员需要在将代码推送到 git 存储库之前运行静态代码分析器。但通常他们不会,因此会破坏构建。

因此,我写了一个 pre-push 钩子;这是一个执行静态代码分析(并复制到 .git/hooks)目录的 shell 脚本,但它不能正常工作。这必须是一个客户端钩子,但它没有按预期工作。而且我不想在提交前或提交后挂钩中实现此功能,因为我希望在开发人员的机器上在他/她推送代码之前(而不是在他/她提交代码时)完成静态代码分析。

因此,请提供您对我如何在 git push 命令之前在客户端计算机上执行任务(静态代码分析)的见解。

【问题讨论】:

  • 您是否已将 .git/hooks/pre-push 复制到您希望执行此操作的所有客户端计算机上?
  • 是的。我也这样做了。
  • 挂钩是否可执行 (chmod a+x .git/hooks/pre-push)?
  • 另外,请确保您的客户正在使用 Git > 1.8.2 when pre-push was introduced

标签: github push hook githooks


【解决方案1】:

正如@sestus 所说,挂钩需要在客户端设置,它们不是 Git 存储库的一部分。如果你认为 Git 是一个分布式系统,并且 hooks 可以执行任意代码,那是有道理的。

您可以做的是将脚本签入存储库(例如到$REPO_ROOT/git-hooks/pre-push)并使用项目的构建工具链来设置符号链接(ln -s ../../git-hooks/pre-push .git/hooks)。

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2017-05-27
    • 2013-04-09
    相关资源
    最近更新 更多