Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有服务器端挂钩的托管Git解决方案?_Git_Hosting - Fatal编程技术网

带有服务器端挂钩的托管Git解决方案?

带有服务器端挂钩的托管Git解决方案?,git,hosting,Git,Hosting,现在已经有一个类似的“版本控制托管解决方案-带有预提交挂钩?”的问题。然而,提出这个问题的用户只需要客户端钩子,我正在寻找一个允许您配置服务器端钩子的Git主机 (我之所以要这样做,是为了防止开发人员在特定分支上“推送-f”。客户端钩子对解决这个问题毫无用处。) 那么,有人能推荐一个允许用户设置服务器端钩子的Git主机吗 (如果所述主机还提供集成的bug跟踪器,则可获得额外积分。) *编辑* 这个问题已经得到了回答,赏金已经颁发。。。但是,如果有任何Git主机可以更容易地阻止“push-f”(或

现在已经有一个类似的“版本控制托管解决方案-带有预提交挂钩?”的问题。然而,提出这个问题的用户只需要客户端钩子,我正在寻找一个允许您配置服务器端钩子的Git主机

(我之所以要这样做,是为了防止开发人员在特定分支上“推送-f”。客户端钩子对解决这个问题毫无用处。)

那么,有人能推荐一个允许用户设置服务器端钩子的Git主机吗

(如果所述主机还提供集成的bug跟踪器,则可获得额外积分。)

*编辑*


这个问题已经得到了回答,赏金已经颁发。。。但是,如果有任何Git主机可以更容易地阻止“push-f”(或者通过提供该级别的权限,或者通过提供对发布预接收挂钩的访问,这样我就可以使用已经编写好的/标准的预接收脚本)我很想听听他们的想法。

我认为GitHub允许服务器端钩子

只要告诉开发人员不要这样做,如果担心发生意外,可以添加客户端钩子作为预防措施。如果您担心开发人员违反了策略,不管怎样,您都会遇到比这更大的问题。在Git这样的分布式系统中,push-f并不是破坏性的;每个人仍将拥有被覆盖提交的本地副本。

github上可用的钩子列表如下:{user}/{repository}/admin/hooks

它们有一个通用的post-receive钩子,但没有一个通用的pre-receive钩子


您可以在这里编写自己的代码:

这是一篇非常古老的文章,但是,我想让人们知道,Assembla现在为Subversion和Git存储库提供了服务器端挂钩。这与Github不同,在Github中,您必须建立一个服务来运行它们。它们是git成熟的提交前和提交后钩子,包括更新钩子


上查看,当我询问GitHub支持(特别是关于push-f限制,而不是一般的服务器端挂钩)时,他们告诉我“这在服务器端目前是不可能的,但这是我们想要做的事情。”。。。所以我认为这意味着他们不支持他们。既然无法通过ssh连接到GitHub的服务器上,那么您将如何在GitHub上建立服务器端连接呢。确切地说,他们是如何与GitHub集成的,我不确定,但会看看。由于不允许使用-f,您能否删除分支并再次推送它?问题是允许使用-f;我们正在努力阻止它(至少在master上)。好的。我看看能挖到什么。谢谢;我只是在寻找GitHub的替代方案,因为他们的支持代表特别告诉我他们无法阻止push-f(而且允许每个人都使用“push-f origin master”显然是一种糟糕的做法)。但如果可能的话,就不需要其他选择了……问题是人们这样做是偶然的,而不是故意的(我同意,这将是一个更大的问题!)。但是,不同的开发人员使用不同的客户端(其中一些使用多个客户端)。因为关键是要消除任何强迫推的机会,所以有一个有效的解决方案。。。除了一个客户端上的一个开发人员没有安装钩子之外。。。有点达不到目的。老实说,我认为服务器端钩子是Git的一个基本特性;我有点震惊,没有一个Git主机让你拥有它们。我想Git主机不想让你在他们的机器上运行任意代码(或者发明沙箱)。如果你在自己的服务器上安装Gitosis(或者其他热门的新东西;我只是使用Github),你可以安装任何你想要的钩子。如果开发人员对Git不熟悉,而不是内部的,并且只知道通过IDE的公开接口使用它,这可能是一个比你想象的更大的问题。F.M.L.不是一个好答案。开发人员是git的新手,在向他们描述之后就完成了。不,他们并不愚蠢。他们在git方面缺乏经验,也不想犯这样的大错误。太棒了,听起来太完美了。。。除了在您链接的页面上,在“服务如何工作”下,它特别指出“提交了接收后后台作业…”,因此我不清楚如何使用它来实现接收前挂钩。你能澄清一下吗?是的,只有邮寄才能收到。您可以对y分支的X列表之外的合作者的任何提交进行git还原,然后向他们发送一个讨厌的gram。我明白了,谢谢。与我们只托管自己的Git相比,仍然需要做更多的工作(感谢GitHub),但至少有一种方法。在GitHub上,除了一些web钩子和服务之外,我没有在repo/admin/hooks下看到任何东西。目前还不清楚是否可以使用这些方法来过滤/拒绝推送。如果他们可以这样做,请扩大你的答案-这将是非常有帮助的我的团队。