繁体   English   中英

github是否允许预接收钩子?

[英]Does github allow pre-receive hooks?

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

我想做的是防止将主分支推送到(即主分支,修补程序,开发),并要求它们通过GitHub pull请求进行合并。 这是一个私有存储库,因此不能选择GitHub风格的分叉。

关于如何完成此操作的任何建议将大有帮助。

只有您列出了“合作者”的人员才能推送到Github托管存储库。 请参阅存储库的“管理员”页面以添加协作者。 其他所有人都需要提交“拉取请求”,以使自己的添加项被存储库的管理员接受。 参见Github访问权限 (没有每个分支的访问权限。)因此,为了实现您的目标,不需要挂钩。 您所需要的已经内置。

两个注意事项:

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

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

我想做的是防止将主分支推送到(即主分支,修补程序,开发),并要求它们通过GitHub pull请求进行合并。

但是,到目前为止,您可以使用受保护的分支配置GitHub或GitHub Enterprise存储库。 这样做是为了防止分支被删除,强行推送,仅某些人员或团队可以合并,或者在允许合并之前要求通过状态检查。 请参阅https://help.github.com/articles/about-protected-branches/了解更多信息!

如果您正在与一个值得信任的团队合作(我想您是因为它是一个私人仓库),而您只是想执行此操作以防止人们出于纯粹的习惯而意外违反您的标准操作程序,那么最好的办法就是分发一个自定义的pre-push钩子脚本,每个人都可以安装到他们的.git/hooks目录中。 (最近我坚持要求每个人都运行git config branch.autosetuprebase always类似的事情,这会隐式地将git pull更改为git pull --rebase以消除当存在本地未推送的提交时不必要的合并)

如果由于某种原因不起作用,我发现事实发生后失去提交者权利的威胁通常是使人们保持诚实的有效机制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM