问题: 我们在企业开发中使用GitHub Enterprise,这意味着从外部访问代码(挂钩其他服务等)是有问题的。
思想:
我们希望使用VSTS来处理我们的GitHub仓库中的源代码。所以我想在我的GitHub企业仓库中创建一个git钩子,在任何提交之后,git push -f
将仓库发送到VSTS实例。
我正在阅读有关钩子等的内容,但我认为问题在于钩子总是在客户端上执行?例如:用户机器上的git
exe是进程挂钩和&工作,而不是在服务器端(目标仓库)。
话虽这么说,有人知道你可以做一个GitHub钩子或git钩子来完成我想要的方法吗?我已准备好VSTS的个人访问令牌,并在本地测试了必要的命令......
感谢。
答案 0 :(得分:2)
Git钩子通常在客户端和“服务器”上执行,具体取决于钩子。例如,post-update
挂钩在远程存储库上执行,以响应接收git push
操作的结果。
然而,当使用像GitHub(或BitBucket,或其他任何东西,真的)这样的托管服务时,你不能运行任意脚本来响应存储库操作(因为这将是一个重大的安全隐患,没有人在他们正确的头脑中想要处理)。
github上的hook 只能向另一个Web服务发送HTTP POST
请求。您问题的典型解决方案是让Web服务接收该POST请求,然后最终触发服务器上的git pull
。您可以在https://help.github.com/articles/about-webhooks/上找到关于钩子的GitHub文档。