对于基于产品的GIT存储库,其中有用于维护,测试和将来开发的分支,我如何控制用户对这些分支的访问。通过访问,我的意思是即使其他人可以从中读取内容,他们也不应无意间将更改推送到存储库。
例如,
A - B - C - D - E - F -> master
| | |
V1 V2' exp
|
V2
“B”是具有标签V1的Branch所使用的提交-表示产品的发行版本。仅支持/维护工程师可以访问此功能。
C用于最近卡住的预发行产品V2',并且仅应允许严重的show-stopper错误修复,因此只有某些开发人员和测试团队才能访问它。从该分支释放V2时,只有支持人员才能像V1一样访问它。
E用于分支以测试将来的V3的新功能-只有开发人员(而非支持人员)可以访问它。
“主”更改仅应由中央集成团队根据请求进行 merge (类似于GitHub)。
如何用git达到上述目的?我记得看到过gitosis和其他一些外部工具-这些对使用git进行安全操作是否必不可少,或者是否还有其他最佳实践?
谢谢。
已添加
Gitflow best practice branching model
最佳答案
限制对存储库(或分支甚至目录)的推送访问的另一种经典方法是使用 gitolite
(实际上是gitosis
的一个大发展)。
您可以在那里(在gitolite
配置文件中)定义所需的任何用户组或存储库,并关联RW
访问权限。
注意:2013年8月:
Assembla provides such a protection as well(自2013年3月起)。
GitHub还没有此功能:
GitHub自2015年9月起具有该功能:请参阅“How to protect “master” in github?”。