12

对于基于产品的 GIT 存储库,其中有用于维护、测试以及未来开发的分支,我如何控制用户对这些分支的访问。通过访问,我的意思是即使其他人可能会从中读取,他们也不应该能够无意中将更改推送到 repo。

例如,

A - B - C - D - E - F -> master
    |   |       |
    V1  V2'     exp
        |
        V2

“B”是用于带有标签 V1 的分支的提交 - 用于产品的发布版本。只有支持/维护工程师才能访问它。

C 用于最近冻结的预发布产品 V2' 并且应该只允许关键的显示停止错误修复,因此只有某些开发人员和测试团队才能访问它。当 V2 从这个分支发布时,只有 Support 应该像 V1 一样访问它。

E 用于分支测试未来 V3 的新功能 - 只有开发人员而不是支持人员才能访问它。

“主”更改只能由中央集成团队根据请求(类似于 GitHub)合并。

用git如何实现以上功能?我记得看到过 gitosis 和其他一些外部工具——这些对于使用 git 进行安全操作是必不可少的,还是有其他最佳实践?

谢谢。

添加 Gitflow 最佳实践分支模型

4

2 回答 2

12

限制对repo(或分支甚至目录)的推送访问的另一种经典方法是使用gitolite(实际上是. gitosis

您可以在那里(在gitolite配置文件中)定义您需要的任何用户组或存储库组并关联RW访问权限。


注:2013 年 8 月:

我们已经发布了可以通过存储库管理员“分支管理”屏幕配置的分支限制。

Assembla 也提供了这样的保护(自 2013 年 3 月起)。

GitHub 还没有这个功能:
GitHub 从 2015 年 9 月开始就有这个功能:请参阅“如何保护 github 中的“master”? ”。

于 2011-02-23T21:32:03.990 回答
1

放置一个服务器端提交钩子,拒绝提交到您需要只读或基于提交者是谁的任何分支。

对于合并请求工作流程,我们使用Gitorious的本地安装并通过其 Web 界面提交合并请求并将main-line存储库限制为您的集成团队,其他人将从服务器端克隆工作,然后将合并请求推送回主线存储库.

使用 Gitorious,你不需要服务器端的钩子,你只需要限制对main-line存储库的访问,只有你想成为提交者的人。更简单,更易于维护。

于 2011-02-23T21:19:55.017 回答