在Visual Studio Team Services中保护git分支

时间:2015-01-25 07:45:11

标签: git tfs azure-devops

我只想明确允许开发人员合并到'master'分支。我找到了安全设置的位置,但似乎没有任何东西可以让我说'那个分支,只允许Rob合并到它'。有什么具体的指导吗?

4 个答案:

答案 0 :(得分:41)

您可以非常轻松地保护VSTS中的MASTER,因为TFS提供了企业级Git功能。有两种方法可以实现这一目标。

1)Git Branch Permissions

在“版本控制”选项卡下的管理页面中,您可以更改每个已发布分支的权限。您需要在回购级别维护访问权限,但是在MASTER上您可以更改"贡献者"提交权限#34;未配置"。然后,您只能添加Rob ...

VSTS Git Branch permissions

哦......总是使用"没有设置"而不是"否认"因为否认总是凌驾于其中。

2)Git分支政策

VSTS引入了分支政策的概念。这些分支策略可以应用于任何分支,但传统上应用于MASTER。

VSTS Git Branch Policies

在这里,您可以应用多个政策来反映您的需求......我总是设置

答案 1 :(得分:9)

我发现我必须完成更多步骤来完成这项工作

在Visual Studio中有2个地方可以定义组 - 在收集级别和项目级别。

在集合级别,我创建了一个管理员组并创建了一个开发人员组。我只希望admin组中的人员对我的存储库中的master分支具有写入权限。

在项目级别,我将开发人员和管理员组添加到项目团队。 在项目贡献者组中,我删除了项目团队并仅添加了开发人员组

在项目管理员组中,我添加了集合级管理员组。

然后在主分支上的版本控制选项卡上,我为贡献者组设置了contrib = deny

由于管理员不是贡献者组的成员,拒绝权限不适用于他们,他们仍然可以将更改推送到主人 - 直接或通过批准拉取请求

答案 2 :(得分:2)

我成功创建了基于@anthonybrown的(2)类型的组。但是,我想提供一些屏幕截图,以进一步帮助解释解决限制用户删除,推送和贡献master分支(或您选择的其他分支)的能力的解释在存储库级别基础上,而不是全局级别。

请注意,根据我们的VSTS,我们已经将用户添加到“全球”团队中。我没有删除这些用户,而是将它们添加到(2)单独的组中。

  • 开发人员
  • 管理员

1)转到您的基本VSTS屏幕(这将默认为网址中的/_projects

enter image description here

2)点击cog并选择“Security”

enter image description here

3)在最左侧,选择“创建组”,并将其命名为“Developers”。创建组后,选择组,然后在中间部分选择“成员”。添加不要想要对此组的“主”分支具有贡献权限的所有用户。 (注意 - 在此步骤之前,您的用户必须已添加到VSTS。)

enter image description here

4)创建“管理员”组并添加 DO WANT 有权访问的用户。 (注意 - 如果“管理员”组中的用户已经在全局或项目级别添加到VSTS,则可以跳过此步骤。无论如何,我都这样做了。

5)返回VSTS主页(/ _projects)并选择要限制访问主分支的存储库。选择“版本控制”。在左侧,选择“主”分支。在中间部分,选择“安全性”。添加“开发人员组。选择”开发人员“组(一旦添加)并将访问权限设置为”拒绝“:

  • 贡献(这将推动
  • 修改政策
  • 强制推送
  • 管理权限

enter image description here

答案 3 :(得分:0)

我通常创建一个特殊的VSO组,如“Devs”,然后将开发人员放入其中。然后,我使用该组作为项目贡献者的成员组,然后特别是在我想要保护的分支上,我使用“Devs”组并将Contribute设置为Deny,因此只有“Devs”组的成员才会拒绝贡献但是,例如项目管理员仍然可以推进它。

如果你直接在Contributors组上设置Contribute为Deny,那么没有人可以推送分支,甚至不是管理员,即使你专门在他们的Contribute上设置Allow,也只是因为Deny比Allow更强 - 除非你做了一些vaster更改原始组。