2016-08-18 135 views
0

我在执行预推挂钩时遇到问题。开发人员在将代码推送到git仓库之前需要运行一个静态代码分析器。但通常他们不会,因此打破了构建。如何执行客户端Git钩子?

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

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

+1

您是否已将.git/hooks/pre-push复制到希望执行此操作的所有客户机上? – sestus

+0

是的。我也是这样做的。 – vintrojan

+0

钩子是否可执行('chmod a + x .git/hooks/pre-push')? – kba

回答

1

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

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