2012-06-02 71 views
31

GitHub允许预先接收或更新挂钩吗?github是否允许预接收挂钩?

我想要做的是防止主要分支被推到(即master,hotfix,develop),并要求通过GitHub拉取请求合并它们。这是一个私人回购,所以GitHub风格分叉不是一种选择。

有关如何完成此任何任何意见将有很大的帮助。

+4

请注意,GH *确实*允许用户分配私人回购,因此它保持私人。 AFAIR,虽然叉的数量有限制。咨询您的付款计划信息。 –

回答

16

只有您列出'协作者'的人才能推送到Github托管的存储库。查看存储库的“管理员”页面以添加协作者。每个人都需要提交一个“拉取请求”,以便让存储库管理员接受其添加。见Github Access Permissions。 (没有每个分支的访问权限。)所以,为了实现你的目标,你不需要钩子;你需要的是已经内置

两个注意事项:

  1. 私人Github的库可以有多个供
  2. 这将是不寻常的Github上支持前接受挂钩(或任何其他服务器挂钩)因为钩子包含任意代码。
+2

这太好了,但它是一个有合作者的私人回购站,预先接收钩子是一个git核心功能,我看到git-hub是否实现了它们。 –

+0

请参阅编辑 - 服务器挂钩在服务器上运行任意代码;无法想象Github允许这样做。 – GoZoner

+0

虽然GitHub似乎不允许预接收钩子,但它确实允许* post *接收钩子:https://help.github。com/articles/post-receive-hooks –

3

如果您与一个值得信赖的团队合作(我认为您是私人回购团队),并且您希望实施这个计划只是为了避免人们意外违反纯粹操作规范,最好的办法是分发一个自定义pre-push钩子脚本,供大家安装到.git/hooks目录中。

如果由于某种原因不工作(我坚持要求每个人都跑git config branch.autosetuprebase always含蓄地改变git pullgit pull --rebase以消除不必要的合并时,当地unpushed提交最近有没有类似的东西),我发现,失去的提交权利的威胁事实之后通常是保持人们诚实的有效机制。

6

尽管GitHub本身不允许预接收钩子,但GitHub Enterprise 2.6版本确实包含预接收钩子支持。有关它的更多信息可以在这里找到:https://help.github.com/enterprise/admin/guides/developer-workflow/using-pre-receive-hooks-to-enforce-policy/。这些是实例范围内的预接收挂钩,用于防止将任何信息推送到任何存储库。

我想要做的是防止主分支被推到(即master,hotfix,develop),并要求通过GitHub拉取请求合并它们。

但是,至此,您可以使用受保护的分支来配置GitHub或GitHub Enterprise存储库。这样做可以防止删除分支,强制推送,只有特定的人员或团队才能合并,或者在允许合并之前需要通过状态检查。请参阅https://help.github.com/articles/about-protected-branches/了解更多信息!