首页 > 解决方案 > 如何只允许特定用户将提交推送到主分支

问题描述

我正在尝试设置一个 git 服务器,并且我只想允许特定用户将提交推送到 master 分支。

我尝试使用 Linux 组权限设置来满足上述要求,但这似乎不是正确的方法。

我什至不知道搜索这个答案的关键词是什么。

任何帮助,将不胜感激。

标签: linuxgit

解决方案


你有两个选择:

到目前为止,最简单的解决方案是使用已经提供此功能的托管软件。您可能想查看 GitLab,它提供 SaaS(托管在 gitlab.com)和自我管理实例(运行您自己的 gitlab 实例)的免费选项。或者github。或比特桶。或者我确定还有其他我没有想到的。

如果你真的不想使用其中的任何一个,你可以在一个简单的 git 服务器上实现访问控制,但这并不是那么简单。简短(或者更确切地说,glib)的答案是“钩子”——但钩子只是一个在发生某些事情时运行的脚本——就像在这种情况下你会使用 prereceive 钩子,它在有人试图推送并决定是否推送时运行接受推送。现在,你的钩子怎么知道谁在推?(提交元数据不指示谁在推送。您需要的是围绕实际连接进行身份验证,以及脚本中身份验证的可见性,以便脚本可以实施您的授权规则。这很快分解为“这取决于您的环境“。)

由于不可能详尽地涵盖手动执行此操作的所有场景,希望您能找到您喜欢的预打包解决方案,或者您会发现以上内容足以让您指出正确的方向去做手动。


推荐阅读