为所有协作者启用github pre commit hooks in origin

时间:2017-03-30 12:57:27

标签: github

首先:我们在团队中使用github存储库来处理某些项目。 我在本地使用预提交钩子目录中定义的脚本(适用于我的提交)。

我需要的是每个用户(协作者)使用钩子而不使用符号链接或要求他们将它们放在他们的主文件夹中。

有没有办法设置它们,这样如果脚本不退出0,用户就无法提交?

感谢。

1 个答案:

答案 0 :(得分:0)

正如亨里克提到的那样,在企业版中,有一个预接收钩子这样的东西。它运行服务器端,因此您无需在每个协作者的本地计算机上安装它。但你实际使用的是github.com,他们不允许预先接收挂钩,我也不希望他们计划;允许indivduals在他们的服务器上运行脚本不太可能在他们的业务计划中。除非您能够使用企业产品,否则这可能对您没有帮助

但是,您确实有一些补救措施,但它并不等同。例如,您可以设置受保护的分支。你可以这样只有你可以检查到那个分支,你当然会使用本地钩子,其他人都会使用拉取请求。

此外,您可以查看LGTM(看起来对我不错)或类似的自动拉取请求批准系统。我不相信官方服务器已启动,但源代码在那里,它可能由其他人运行。 LGTM允许您设置许多不同的条件,这些条件更接近于与pre-op hook相当的条件。

建立这样一个系统可能比你想要的更省力,可以理解;但它是可行的。

使用git附带的预提交挂钩的主要问题是它们是您的存储库的本地挂钩,并且不会被推送到github.com。我相信在引擎盖下,那些钩子甚至没有转移到github上的repo,并且预提交钩子目录本身不可用,就像它在git repo的本地副本上一样。

(除了A之外,我会更多地谈论预提交钩子目录的体系结构。我不确定它是否被NDA和B覆盖。我只看到它在企业产品上的方式,而不是实际的github,和C.我不知道结构是否仍然完全相同)