VSTS - 阻止push to master但允许PR合并

时间:2017-03-10 13:41:22

标签: git tfs azure-devops

我们在VSTS中设置了分支策略,以防止将请求合并到主服务器中,除非构建通过且工作项已链接。但是,我无法解决如何阻止开发人员直接推送到掌握。设置"贡献" Deny的权限不允许合并拉请求。

应允许所有开发人员将PR合并为master,但不允许任何人直接推送到master。这可能吗?

3 个答案:

答案 0 :(得分:20)

Branch policies已经完全按照您的意思行事了。当分支政策到位时,需要PR。

确保您的开发者没有“免除政策执行”#34;权限。

答案 1 :(得分:4)

我知道这个问题有点老了,但这是一些附加信息...
不幸的是,我无法在“最佳答案”中添加评论,因此这是一个新的评论,您可以将其视为评论:

  

分支机构的政策已经完全符合您的要求。制定分支机构政策后,需要PR。

100%同意

  

确保您的开发人员没有“免于执行策略”权限。

100%同意

免于政策执行

  

我们应该在哪里查看开发人员是否具有“免于执行策略”权限?

来自docs.microsoft.com

  

有几种权限可以使用户绕过分支策略。在TFS 2015至TFS 2018 Update 2中,免于执行策略权限允许具有此权限的用户执行以下操作:

     
      
  • 完成拉取请求时,即使不满足当前的分支策略集,也可以选择覆盖策略并完成拉取请求。
  •   
  • 即使该分支已设置分支策略,也直接将其推入分支。请注意,当具有此权限的用户进行的推送将覆盖分支策略时,该推送会自动绕过分支策略,而不会出现选择加入步骤或发出警告的情况。
  •   
     

在Azure DevOps Services中,删除了免于执行策略权限,其功能分为以下两个新权限:

     
      
  • 在完成请求请求时绕过策略
  •   
  • 推送时绕过策略
  •   
     

以前已启用免于执行策略的用户现在改为启用了两个新权限。   

您可以在以下位置找到这些选项:
组织 / 项目 /设置/存储库

本地Git

  

大概用户可以对自己的master分支的本地版本执行任何操作,但是Azure DevOps会拒绝将其推送到远程吗?如果/何时发生,开发人员需要采取什么措施来消除他们在本地存储库中遇到的混乱情况?

之所以会这样,是因为Azure DevOps中的分支策略不允许我们将其称为“ vanilla-git”。这是Microsoft特定的扩展,与用户的本地git分支无关。因此,用户可以随心所欲地在其本地git存储库中进行操作-DevOps只能防止某些“服务器端”操作。 关于开发人员如何消除混乱的问题: 我推荐this SO question

答案 2 :(得分:1)

我没有信誉点可以在答案中发表评论,所以我会在这里发布一个新的。

当您将主分支策略设置为 Require a minimum number of reviewers 时,主分支将自动受到保护。您将无法推送任何提交。为了进行任何更改,您需要创建一个新分支,并创建一个拉取请求来合并修改。