创建预推钩到lint / test

时间:2013-09-04 15:08:07

标签: git hook

我想知道创建预推钩(在git repo中)的最佳方法是什么,它可以执行以下操作:

  • 运行JSHint / JSLint
  • 运行单元和功能测试
  • 如果一切正常,请接受更新
  • 否则拒绝更新

1 个答案:

答案 0 :(得分:2)

您可以使用Git pre commit hook来执行此操作。我已经设置了预提交钩子来检查调试语句等等。

这样的客户端钩子属于.git / hooks文件夹。但是,由于你无法将.git repo中的任何内容提交到版本控制中,所以你会陷入困境。

您需要做的是保持shell命令检查git仓库中某个文件夹中的正确性,比如顶级tools目录。

然后“只是”告诉人们通过以下方式安装它:

chmod u+x tools/precommit-checks.sh

ln -s $PWD/tools/precommit-checks.sh .git/hooks/pre-commit

并且,假设每个人都安装它,您可以按照要求进行检查。

可能更好的方法就是抓住这个服务器端:让某种持续集成服务器从你的Github仓库中提取最新的提交并检查代码库。

不,它不会给你你想要的“拒绝推送”功能。

假设你自己主持你的git repo,还有另一个皱纹:我认为服务器上的预接收挂钩会挂起客户端,只要钩子占用。 (这个 记录为对于收发后的钩子是真的,所以我猜这里也是如此)。因此,如果CI测试需要2分钟,则某些开发人员正在键入git push并等待2分钟,以便他们的控制台再次执行任何操作。

使用CI服务器或其他质量测试进行推送后分析可能更好。