对于基于产品的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月:

  • Stash provides read-only branches
  • BitBucket should do the same soon



  • Assembla provides such a protection as well(自2013年3月起)。

    GitHub还没有此功能:
    GitHub自2015年9月起具有该功能:请参阅“How to protect “master” in github?”。

    09-04 08:14
    查看更多