2012-01-11 77 views
6

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

(我在寻找这个的原因是,我们可以防止开发人员在特定分支上“push -f”。客户端钩子是 用于解决此问题的最小程度。

那么,谁能推荐一个允许其用户设置服务器端挂钩的Git主机? (如果加分点说,主机还提供了一个集成的bug跟踪系统)。

*编辑*

这个问题已经回答了这个赏金奖励......但如果有任何Git托管在那里可以更容易地防止“push -f”(通过提供自己的权限级别,或者通过提供发布pre-recieve钩子的访问权限,然后让我使用已经写好的/标准的pre-recieve脚本)我很乐意听到他们的消息。

回答

3

在GitHub上可用挂钩的名单是在这里:https://github.com/ {用户}/{资料库} /管理/钩

他们有一个通用的后收到钩,但没有一个通用的预收到

你可以在这里编码:https://github.com/github/github-services

+0

太棒了,这听起来很完美......除了在你链接的页面上,在“服务如何工作”下,它特别说“接收后收到的后台作业......”,所以我不清楚我如何可以使用它来实现预接收钩子。你能澄清一下吗? – machineghost 2012-01-25 22:24:50

+0

是的,只有后收到。你可以做一个git回复任何提交的协议,而不是X分支上的y分支,然后发送给他们一个讨厌的分组。 – ERR0 2012-01-27 21:08:29

+0

我明白了,谢谢。还有更多的工作要比我们刚刚托管我们自己的Git(感谢没有GitHub),但至少有一种方法。 – machineghost 2012-01-28 01:44:29

0

我想GitHub上允许服务器端挂钩

+0

当我问GitHub的支持(约推-f限制而言,不是一般的服务器端钩子),他们告诉我:“这是不可能的服务器端目前,但却是我们想要做的事情。“ ...所以我认为他们不支持他们。你究竟如何将服务器端连接到GitHub上,因为你无法使用SSH连接到他们的服务器? – machineghost 2012-01-12 17:45:08

+0

有这样做的几个项目。他们正在做什么来整合GitHub,我不确定,但会看起来。由于-f不允许,你能不能删除分支并再次推送它? – 2012-01-12 17:51:18

+0

问题是-f *是*允许的;我们试图阻止它(至少在主人身上)。 – machineghost 2012-01-12 18:01:15

0

只要告诉开发商没有做到这一点,并添加一个客户端挂钩,作为预防措施,如果你担心发生意外。如果你担心开发人员无论如何都会违反政策,肯定你会遇到比这更大的问题。而且这不像推-f会在像Git这样的分布式系统中具有破坏性;每个人仍将拥有覆盖提交的本地副本。

+3

问题在于人们意外地这样做,而不是故意的(我同意,这将是一个更大的问题!)。但是,不同的开发人员使用不同的客户端(其中一些使用多个客户端)。由于整个过程是消除任何强制推送的机会,有一个解决方案的工作...除了可能是一个客户端上的一个开发人员没有安装钩子...有点失败的目的。老实说,我认为服务器端钩子是Git的一个基本特性;我有点震惊,没有Git主机让你拥有它们。 – machineghost 2012-01-25 17:21:04

+2

Git主机不想让你在他们的机器上运行任意代码(或者发明沙盒),我想。如果你在你自己的服务器上安装了Gitosis(或者任何新的热点,我只是使用Github),你可以安装任何你想要的钩子。 – amalloy 2012-01-25 19:32:25

+3

如果开发人员对Git新鲜,而不是内部,并且只知道通过IDE暴露的界面使用它,这可能会比您想象的更大。 _F。 M. L._ – 2012-04-22 21:59:38

4

这是一个很老的帖子,但是我想让人们意识到Assembla现在为Subversion和Git存储库提供服务器端钩子。这些不像Github的,你必须站起来运行它们的服务。它们在git的提交钩子(包括更新钩子)之前和之后完全成熟。

检查出来的Assembla