【发布时间】:2017-07-31 21:10:03
【问题描述】:
我们在 VSTS 中设置了分支策略,以防止拉取请求被合并到 master 中,除非构建通过和工作项已链接。但是,我不知道如何防止开发人员直接推送到 master。将“贡献”权限设置为拒绝不允许合并拉取请求。
应允许所有开发人员将 PR 合并到 master,但不应允许任何开发人员直接推送到 master。这可能吗?
【问题讨论】:
标签: git tfs azure-devops
我们在 VSTS 中设置了分支策略,以防止拉取请求被合并到 master 中,除非构建通过和工作项已链接。但是,我不知道如何防止开发人员直接推送到 master。将“贡献”权限设置为拒绝不允许合并拉取请求。
应允许所有开发人员将 PR 合并到 master,但不应允许任何开发人员直接推送到 master。这可能吗?
【问题讨论】:
标签: git tfs azure-devops
Branch policies 已经完全按照你说的做。当分支策略到位时,需要 PR。
确保您的开发人员没有“豁免政策强制执行”权限。
【讨论】:
我知道这个问题有点老了,但这里有一些额外的信息......
不幸的是,我无法将 cmets 添加到“最佳答案”中,所以这是一个新答案,您可以将其视为评论:
分支机构政策已经完全按照您的要求行事。当分支策略到位时,需要 PR。
100% 同意
确保您的开发人员没有“豁免政策执行”权限。
100% 同意
我们应该在哪里查看开发人员是否拥有“豁免政策执行”权限?
有几种权限允许用户绕过分支策略。在 TFS 2015 到 TFS 2018 更新 2 中,免于强制执行权限允许具有此权限的用户执行以下操作:
- 在完成拉取请求时,选择加入以覆盖策略并完成拉取请求,即使当前的分支策略集不满足。
- 直接推送到一个分支,即使该分支设置了分支策略。请注意,当具有此权限的用户进行会覆盖分支策略的推送时,推送会自动绕过分支策略,而无需选择加入步骤或警告。
在 Azure DevOps Services 中,免于强制执行权限被移除,其功能分为以下两个新权限:
- 完成拉取请求时绕过政策
- 推送时绕过政策
以前启用免于执行政策的用户现在改为启用这两个新权限。
您可以在以下位置找到这些选项:
organization / project / Settings / Repositories
大概用户可以对他们自己的本地版本的 master 分支做任何事情,但是 Azure DevOps 会拒绝推送到远程?如果/当这种情况发生时,开发人员需要做些什么来消除他们在本地存储库中陷入的混乱局面?
之所以如此,是因为 Azure DevOps 中的分支策略不是我们称之为“vanilla-git”的。这是 Microsoft 特定的扩展,与您用户的本地 git 分支无关。因此,用户可以对他的本地 git 存储库做任何他想做的事情 - DevOps 只是阻止了一些“服务器端”的东西。
关于开发人员如何消除混乱的问题:
我推荐this SO question。
【讨论】:
我没有声望点可以在答案中发表评论,所以我会在这里发布一个新的。
当您将主分支策略设置为Require a minimum number of reviewers 时,主分支将自动受到保护。您将无法推送任何提交。为了进行任何更改,您需要创建一个新分支,并创建一个拉取请求以合并修改。
【讨论】: