github是否允许预先接收挂钩?

时间:2012-06-02 18:33:28

标签: git github

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

我要做的是防止主分支被推送到(即master,hotfix,develop)并要求它们通过GitHub pull请求合并。这是一个私人仓库,所以GitHub样式分叉不是一个选择。

关于如何实现这一目标的任何建议都会有很大的帮助。

3 个答案:

答案 0 :(得分:18)

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

两个注释:

  1. 私有Github存储库可以有多个贡献者
  2. 鉴于钩子包含任意代码,Github支持预接收挂钩(或任何其他服务器挂钩)是不常见的。

答案 1 :(得分:9)

虽然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 pull请求合并。

但是,到目前为止,您可以使用受保护的分支配置GitHub或GitHub Enterprise存储库。这样做是为了防止分支被删除,强制推送,只有某些人或团队可以合并,或者在合并允许之前需要传递状态检查。有关详细信息,请参阅https://help.github.com/articles/about-protected-branches/

答案 2 :(得分:5)

如果你正在与一个值得信赖的团队合作(我认为你是私人回购)并且你想要实现这一点,只是为了防止人们因为习惯而意外违反你的标准操作程序,最好的办法是do为每个人分发一个自定义pre-push钩子脚本,以安装到他们的.git/hooks目录中。 (我最近做了类似的事情,坚持每个人都运行git config branch.autosetuprebase always隐式地将git pull更改为git pull --rebase,以便在存在本地未提交的提交时消除不必要的合并。

如果出于某种原因无法发挥作用,我发现事后失去保护权的威胁通常是保持人们诚实的有效机制。