对于基于产品的 GIT 存储库,其中有用于维护、测试以及 future 开发的分支,我如何控制用户对这些分支的访问权限。通过访问,我的意思是即使其他人可以读取它,他们也不应该无意中将更改推送到存储库。
例如,
A - B - C - D - E - F -> master
| | |
V1 V2' exp
|
V2
“B”是用于带有标签 V1 的 Branch 的提交 - 意味着产品的发布版本。只有支持/维护工程师才能访问它。
C 用于最近卡住的预发布产品 V2',并且应该只允许关键的 show-stopper 错误修复,因此只有某些开发人员和测试团队应该可以访问它。当 V2 从该分支发布时,只有支持人员可以像 V1 一样访问它。
E 用于分支以测试 future V3 的新功能 - 只有开发人员而不是支持人员可以访问它。
“主要”更改只能由中央集成团队根据请求(类似于 GitHub) merge 。
如何用git实现以上?我记得看到过 gitosis 和其他一些外部工具 - 这些工具对于使用 git 进行安全操作是否必不可少,或者是否有任何其他最佳实践?
谢谢。
最佳答案
另一种限制对 repo(或分支甚至目录)的推送访问的经典方法是使用 gitolite
(这实际上是 gitosis
的大演变)。
您可以在那里(在 gitolite
配置文件中)定义您需要的任何用户组或存储库组,并关联 RW
访问权限。
注:2013 年 8 月:
We've released branch restrictions which can be configured via the repository admin "Branch management" screen.
Assembla provides such a protection as well (自 2013 年 3 月起)。
GitHub 还没有这个功能:
GitHub 自 2015 年 9 月起具有该功能:请参阅“How to protect “master” in github?”。
关于security - GIT 支持基于分支的用户授权——最佳实践还是工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097078/