分支策略和设置
本文内容
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
分支策略可帮助团队保护其重要的开发 分支 。 这些策略强制实施团队的代码质量和更改管理标准。 本文介绍如何设置和管理分支策略。 有关所有存储库和分支策略和设置的概述,请参阅 Git 存储库设置和策略 。
无法删除配置了所需策略的分支,并且要求请求 (PR) 进行所有更改。
先决条件
若要设置分支策略,你必须是项目管理员安全组的成员,或者具有存储库级别的 编辑策略 权限。 有关详细信息,请参阅 设置 Git 存储库权限 。
若要管理分支策略,请选择 “存储库 >分支 ”以在 Web 门户中打开 “分支 ”页。
还可以使用项目设置 >存储库 >策略 分支策略 >><分支名称> 访问分支策略设置。
具有策略的分支会显示策略图标。 可以选择图标直接转到分支的策略设置。
若要设置分支策略,请找到要管理的分支。 可以在右上角的 “搜索分支名称 ”框中浏览列表或搜索分支。
选择分支旁边的 “更多选项 ”图标,然后从上下文菜单中选择 “分支策略 ”。
在页面中找到分支。 可以浏览列表,也可以使用右上角的 “搜索所有分支 ”框搜索分支。
选择 ... 按钮。 从上下文菜单中选择“Branch policies”。
在分支的设置页上配置策略。 有关每种策略类型的说明和说明,请参阅以下部分。
在“Policies”页面中配置策略。 有关每种策略类型的说明,请参阅以下部分。 选择 “保存更改 ”以应用新策略配置。
可以使用 Azure DevOps CLI 列出或显示分支或存储库的策略。
列出策略
若要列出项目中的所有策略,请使用 az repos policy list 。
az repos policy list [--branch]
[--detect {false, true}]
[--org]
[--project]
[--query-examples]
[--repository-id]
[--subscription]
参数
参数
说明
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。
detect
自动检测组织。 接受的值: false
, true
。
org
, organization
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
query-examples
建议的 JMESPath 字符串。 可以复制其中一个查询,并将其粘贴到 --query
参数后,用双引号查看结果。 可以添加一个或多个位置关键字,以便建议基于这些关键字。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下命令返回 Fabrikam 存储库d28cd374-e7f0-4b1f-ad60-f349f155d47c
的分支 ID 中main
生效的所有分支策略。 可以通过运行 az repos list
来获取存储库 ID。
此示例使用以下默认配置: az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
az repos policy list --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --branch main --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- --------------------------- ------------- ------------ ------------------------------------ ---------------
3 Work item linking False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
5 Minimum number of reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
6 Comment requirements False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
12 Required reviewers True False d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
13 Required reviewers False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
显示策略的详细信息
若要显示任何策略的详细信息,请使用 az repos policy show 。
az repos policy show --id
[--detect {false, true}]
[--org]
[--project]
[--query-examples]
[--subscription]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
detect
自动检测组织。 接受的值: false
, true
。
org
, organization
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
query-examples
建议的 JMESPath 字符串。 可以复制其中一个查询,并将其粘贴到 --query
参数后,用双引号查看结果。 可以添加一个或多个位置关键字,以便建议基于这些关键字。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
需要最少数量的审阅者
代码评审对于软件开发项目非常重要。 若要确保团队评审和批准 PR,可能需要至少数量的审阅者进行审批。 基本策略要求指定数量的审阅者批准代码,且不会拒绝。
若要设置策略,在 “分支策略 ”下,将 “需要最少数量的审阅者 ”设置为 “打开 ”。 输入所需的审阅者数,然后选择以下任一选项:
选择 “允许请求者”批准自己的更改 ,以允许 PR 的创建者对其批准进行投票。 否则,创建者仍然可以投票 批准 公关,但他们的投票不会计入最少的审阅者数。
选择“ 禁止最新的推送程序”批准自己的更改 ,以强制实施职责隔离。 默认情况下,对源分支具有推送权限的任何人都可以添加提交并投票支持 PR 审批。 选择此选项意味着最新的推手投票不计票,即使他们通常可以批准自己的更改。
即使某些审阅者投票等待或拒绝 允许 PR 完成,即使某些审阅者投票反对批准,选择“允许完成”。 审阅者的最低数量仍必须批准。
在 推送新更改时 :
选择 “在上次迭代时至少需要一个审批 ”,要求对最后一个源分支进行至少一次审批投票。
选择 “重置所有审批投票 (不会重置投票以拒绝或等待) 删除所有审批投票,但每当源分支更改时,保留投票以拒绝或等待,
选择 “重置所有代码审阅者投票 ”以在源分支更改时删除所有审阅者投票,包括要批准、拒绝或等待的投票。
如果未选择 请求者可以批准自己的更改 ,则拉取请求的创建者仍可以对其拉取请求进行 “批准 ”投票,但他们的投票不会计入 审阅者的最低数量 。
如果任何审阅者拒绝更改,则拉取请求无法完成,除非选择“ 允许完成”,即使某些审阅者投票等待或拒绝 。
将新更改推送到源分支时,可以重置代码审阅者投票。 在 发生新更改时,选择“重置代码审阅者投票 ”。
如果所有其他策略都通过,则创建者可以在所需的审阅者批准时完成 PR。
可以使用 az repos policy approver-count 管理请求所需的审批者计数。
创建审批者计数策略
若要创建审批者计数策略,请使用 az repos policy approver-count create 。
az repos policy approver-count create --allow-downvotes {false, true}
--blocking {false, true}
--branch
--creator-vote-counts {false, true}
--enabled {false, true}
--minimum-approver-count
--repository-id
--reset-on-source-push {false, true}
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
参数
参数
说明
allow-downvotes
允许下注。 接受的值: false
, true
。 “必需”。
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。 “必需”。
creator-vote-counts
统计创建者的投票。 接受的值: false
, true
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
minimum-approver-count
所需的最小审批者数。 例如:2
。 “必需”。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。 “必需”。
reset-on-source-push
将更改推送到源时重置投票。 接受的值: false
, true
。 “必需”。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下示例设置在 Fabrikam 存储库的分支中main
拉取请求所需的最小批准2
数。 该策略允许向下投票,这意味着拉取请求可以完成,即使一些审阅者投票不批准,只要要批准的最小投票数。 推送到源分支不会重置投票。 该策略还允许拉取请求创建者批准自己的拉取请求。
此示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos policy approver-count create --allow-downvotes true --blocking true --branch main --creator-vote-counts true --enabled true --minimum-approver-count 2 --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --reset-on-source-push false --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- --------------------------- ------------- ------------ ------------------------------------ ---------------
27 Minimum number of reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
更新审批者计数策略
若要更新审批者计数策略,请使用 az repos policy approver-count update 。
az repos policy approver-count update --id
[--allow-downvotes {false, true}]
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--creator-vote-counts {false, true}]
[--detect {false, true}]
[--enabled {false, true}]
[--minimum-approver-count]
[--org]
[--project]
[--repository-id]
[--reset-on-source-push {false, true}]
[--subscription]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
allow-downvotes
允许下注。 接受的值: false
, true
。
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
creator-vote-counts
统计创建者的投票。 接受的值: false
, true
。
detect
自动检测组织。 接受的值: false
, true
。
enabled
启用策略。 接受的值: false
, true
。
minimum-approver-count
所需的最小审批者数。 例如:2
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
reset-on-source-push
将更改推送到源时重置投票。 接受的值: false
, true
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
检查链接的工作项
对于 工作项管理跟踪 ,可以要求在 PR 与工作项之间建立关联。 链接工作项为更改提供了更多上下文,并确保更新通过工作项跟踪过程。
若要设置策略,请在 “分支策略 ”下,将 “检查链接的工作项 ”设置为 “打开 ”。 此设置要求将工作项链接到 PR,以便 PR 合并。 当没有链接的工作项,但允许完成拉取请求时,请发出 “可选 ”警告设置。
可以使用 Azure CLI az repos policy work-item-linking 为分支或存储库创建和更新工作项链接策略。
创建工作项链接策略
使用 az repos policy work-item-linking create 为 存储库或分支创建工作项链接策略。
az repos policy work-item-linking create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
参数
参数
说明
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
更新工作项链接策略
使用 az repos policy work-item-linking 更新 更新存储库或一个或多个分支的工作项链接策略。
az repos policy work-item-linking update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
enabled
启用策略。 接受的值: false
, true
。
minimum-approver-count
所需的最小审批者数。 例如:2
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下示例将更新 Fabrikam 存储库分支的策略 ID 3
main
,使其启用但可选。 该示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
>az repos policy work-item-linking update --id 3 --blocking false --branch main --enabled true --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ----------------- ------------- ------------ ------------------------------------ ---------------
3 Work item linking False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
检查注释解析 策略检查是否解决所有 PR 注释。
通过将 “检查注释解析 ”设置为 “打开 ”,为分支配置注释解析策略。 然后选择是将策略设置为 “必需 ”还是 “可选 ”。
有关处理拉取请求注释的详细信息,请参阅 “查看拉取请求 ”。
通过选择“ 检查批注解析 ”为分支配置批注解析策略。
有关处理拉取请求注释的详细信息,请参阅 “查看拉取请求 ”。
可以使用 Azure DevOps CLI az repos policy comment-required 设置和更新注释解析策略。
若要创建注释解析策略,请使用 az repos policy comment-required create 。
az repos policy comment-required create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
参数
参数
说明
blocking
如果策略未满足,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 需要使用 --repository-id
分支筛选器的参数。 例如:--branch main
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。 “必需”。
branch-match-type
branch
使用参数应用策略。 如果值为值 exact
,则策略应用于与参数完全匹配的 --branch
分支。 如果值为值 prefix
,则策略将应用于与参数中 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 You can configure the default project using az devops configure -d project=<NAME_OR_ID>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
若要更新注释解析策略,请使用 az repos policy comment-required update 。
az repos policy comment-required update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
blocking
如果策略未满足,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 需要使用 --repository-id
分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为值 exact
,则策略应用于与参数完全匹配的 --branch
分支。 如果值为值 prefix
,则策略将应用于与参数中 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
enabled
启用策略。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 You can configure the default project using az devops configure -d project=<NAME_OR_ID>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下示例更新 Fabrikam 存储库分支中的main
注释解析策略 ID 6
以阻止。 必须在拉取请求合并之前解析注释。 此示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos policy comment-required update --id 6 --blocking true --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- -------------------- ------------- ------------ ------------------------------------ ---------------
6 Comment requirements True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
限制合并类型
Azure Repos有多个合并策略,默认情况下,允许所有这些策略。 可以通过强制实施 PR 完成的合并策略来维护一致的分支历史记录。
将 “限制合并类型 ”设置为 “打开 ”以限制存储库中允许的合并类型。
基本合并 (没有快速转发) 在父级为目标和源分支的目标中创建合并提交。
Squash merge 在目标分支中创建一个线性历史记录,其中一个提交包含源分支的更改。 详细了解壁球合并 以及它如何影响分支历史记录。
通过 将源提交重播到目标分支(没有合并提交)来创建线性历史记录。
使用合并提交重新base 将源提交重播到目标上,并创建合并提交。
注意
此功能适用于 Azure DevOps Server 2020 及更高版本。
可以使用 Azure DevOps CLI az repos 策略合并策略 来设置和更新合并策略。
创建合并策略
使用 az repos policy merge-strategy create 创建合并策略。
az repos policy merge-strategy create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--allow-no-fast-forward {false, true}]
[--allow-rebase {false, true}]
[--allow-rebase-merge {false, true}]
[--allow-squash {false, true}]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
[--use-squash-merge {false, true}]
参数
参数
说明
blocking
如果策略未满足,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 需要使用 --repository-id
分支筛选器的参数。 例如:--branch main
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。 “必需”。
allow-no-fast-forward
没有快速转发的基本合并。 与在开发过程中发生时一样保留非线性历史。 接受的值: false
, true
。
allow-rebase
重新定基和快速前进。 通过将源分支提交重播到目标而不进行合并提交来创建线性历史记录。 接受的值: false
, true
。
allow-rebase-merge
使用合并提交重新基。 通过将源分支提交重播到目标,然后创建合并提交来创建半线性历史记录。 接受的值: false
, true
。
allow-squash
Squash merge. 通过将源分支提交精简为目标分支上的单个新提交来创建线性历史记录。 接受的值: false
, true
。
branch-match-type
branch
使用参数应用策略。 如果值为值 exact
,则策略应用于与参数完全匹配的 --branch
分支。 如果值为值 prefix
,则策略将应用于与参数中 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 You can configure the default project using az devops configure -d project=<NAME_OR_ID>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
use-squash-merge
始终将壁球合并。 此选项不适用于其他合并类型。 接受的值: false
, true
。注意 : use-squash-merge
已弃用,将在将来的版本中删除。 请改用 --allow-squash
。
示例
以下示例设置 Fabrikam 存储库分支中 main
拉取请求的必需合并策略,以允许 squash merge。 此示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos policy merge-strategy create --allow-squash true --blocking true --branch main --enabled true --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------------------ ------------- ------------ ------------------------------------ ---------------
29 Require a merge strategy True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
更新合并策略
使用 az repos policy merge-strategy update 更新合并策略。
az repos policy merge-strategy update --id
[--allow-no-fast-forward {false, true}]
[--allow-rebase {false, true}]
[--allow-rebase-merge {false, true}]
[--allow-squash {false, true}]
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
[--use-squash-merge {false, true}]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
allow-no-fast-forward
没有快速转发的基本合并。 与在开发过程中发生时一样保留非线性历史。 接受的值: false
, true
。
allow-rebase
重新定基和快速前进。 通过将源分支提交重播到目标而不进行合并提交来创建线性历史记录。 接受的值: false
, true
。
allow-rebase-merge
使用合并提交重新基。 通过将源分支提交重播到目标,然后创建合并提交来创建半线性历史记录。 接受的值: false
, true
。
allow-squash
Squash merge. 通过将源分支提交精简为目标分支上的单个新提交来创建线性历史记录。 接受的值: false
, true
。
blocking
如果策略未满足,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 需要使用 --repository-id
分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为值 exact
,则策略应用于与参数完全匹配的 --branch
分支。 如果值为值 prefix
,则策略将应用于与参数中 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
enabled
启用策略。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
.
project
, p
项目的名称或 ID。 You can configure the default project using az devops configure -d project=<NAME_OR_ID>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
use-squash-merge
是否始终将合并挤在一起。 此选项不适用于其他合并类型。 接受的值: false
, true
。
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
强制实施合并策略
通过在拉取请求完成时强制实施合并策略来维护一致的分支历史记录。
选择“ 强制实施合并策略 ”,然后选择一个选项,要求使用该策略进行拉取请求合并。
无快速转发合并 - 当拉取请求关闭并在目标分支中创建合并提交时,此选项合并源分支的提交历史记录。
Squash merge - 使用 squash merge 完成所有拉取请求,在目标分支中创建单个提交,其中包含源分支的更改。 详细了解壁球合并 以及它如何影响分支历史记录。
生成验证
可以设置一个策略,要求 PR 更改在 PR 完成之前成功生成。
生成策略可减少中断,并保持测试结果通过。 即使你在开发分支上使用 持续集成 (CI) ,生成策略也有助于提前捕获问题。
当创建新 PR 时,生成验证策略会将新生成排入队列,或者将更改推送到面向分支的现有 PR。 生成策略评估生成结果,以确定 PR 是否可以完成。
重要
在指定生成验证策略之前,必须具有生成管道。 如果没有管道,请参阅 “创建生成管道 ”。 选择与项目类型匹配的生成类型。
添加生成验证策略
选择+ “生成验证 ”旁边的按钮。
填写 “设置生成策略 ”窗体:
选择 “生成”管道 。
(可选)设置 路径筛选器 。 详细了解分支策略中的路径筛选器 。
在 “触发器 ”下, 每当源分支更新) 或 手动 时,请选择“自动 (”。
在 “策略要求 ”下,选择“ 必需 ”或“ 可选 ”。 如果选择 “必需 ”,则生成必须成功完成才能完成 PR。 选择 “可选 ”以提供生成失败通知,但仍允许 PR 完成。
设置生成过期,确保受保护分支的更新不会中断打开的 PR 的更改。
立即更新分支名称>时< :此选项将 PR 生成策略状态设置为在更新分支时失败 ,并重新排队生成。 此设置可确保即使受保护的分支发生更改,PR 更改也会成功生成。
此选项最适合重要分支很少更改的团队。 在繁忙的开发分支中工作的团队可能会发现每次分支更新时等待生成会中断。
如果<更新分支名称>,则为 n> 小时后< :如果传递的版本早于输入的阈值,则当受保护的分支更新时,此选项将过期当前策略状态。 此选项是受保护分支更新时始终或从不要求生成之间的妥协。 此选项可减少受保护分支频繁更新时的生成数。
从不 :汇报受保护分支不会更改策略状态。 此值可减少生成数,但在完成最近未更新的 PR 时可能会导致问题。
输入此生成策略的可选 显示名称 。 此名称标识 分支策略 页上的策略。 如果未指定显示名称,策略将使用生成管道名称。
选择“保存”。
PR 所有者推送成功生成的更改时,策略状态会更新。
如果在更新分支名称时<立即出现,或者分支名称> >已更新生成策略后 <n> 小时,则当受保护的分支更新时,如果上一个版本不再有效,则策略状态会更新。<
注意
此功能适用于 Azure DevOps Server 2020 及更高版本。
可以使用 Azure DevOps CLI az repos 策略生成 来设置和更新生成验证策略。
创建生成验证策略
使用 az repos policy build create 创建 生成验证策略。
az repos policy build create --blocking {false, true}
--branch
--build-definition-id
--display-name
--enabled {false, true}
--manual-queue-only {false, true}
--queue-on-source-update-only {false, true}
--repository-id
--valid-duration
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--path-filter]
[--project]
[--subscription]
参数
参数
说明
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。 “必需”。
build-definition-id
生成定义 ID。 “必需”。
display-name
此生成策略的显示名称用于标识策略。 例如:Manual queue policy
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
manual-queue-only
是否只允许手动排队生成。 接受的值: false
, true
。 “必需”。
queue-on-source-update-only
是否仅在源更新时对生成进行排队。 接受的值: false
, true
。 “必需”。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。 “必需”。
valid-duration
策略有效期(以分钟为单位)。 注意: valid-duration
必须介于零和一年之间,并且必须是零(如果 --queue-on-source-update-only
为 false
零)。 “必需”。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
path-filter
应用策略的路径 () 。 支持绝对路径、通配符和分隔的 ;
多个路径。 示例:/WebApp/Models/Data.cs
、/WebApp/*
或*.cs,
或。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下示例为 Fabrikam 存储库的分支中的 main
拉取请求设置所需的生成策略。 该策略需要成功生成生成定义 ID 1
,并且仅允许手动生成队列。 此示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos policy build create --blocking true --branch main --build-definition-id 1 --display-name build-policy --enabled true --manual-queue-only true --queue-on-source-update-only false --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --valid-duration 0 --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------ ------------- ------------ ------------------------------------ ---------------
31 build-policy True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
更新生成验证策略
使用 az repos policy build update 更新生成验证策略。
az repos policy build update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--build-definition-id]
[--detect {false, true}]
[--display-name]
[--enabled {false, true}]
[--manual-queue-only {false, true}]
[--org]
[--path-filter]
[--project]
[--queue-on-source-update-only {false, true}]
[--repository-id]
[--subscription]
[--valid-duration]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为值 prefix
,则策略将应用于与参数中 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
build-definition-id
生成定义 ID。
detect
自动检测组织。 接受的值: false
, true
。
display-name
此生成策略的显示名称用于标识策略。 例如:Manual queue policy
。
enabled
启用策略。 接受的值: false
, true
。
manual-queue-only
是否只允许手动排队生成。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。示例:https://dev.azure.com/MyOrganizationName/
.
path-filter
应用策略的路径 () 。 支持由分隔的 ;
绝对路径、通配符和多个路径。 示例: /WebApp/Models/Data.cs
、 /WebApp/*
或 *.cs,
或 /WebApp/Models/Data.cs;ClientApp/Models/Data.cs
。
project
, p
项目的名称或 ID。 You can configure the default project using az devops configure -d project=<NAME_OR_ID>
. 如果未配置为默认或通过 git 配置进行选取,则为必需 。
queue-on-source-update-only
是否仅在源更新时对生成进行排队。 接受的值: false
, true
。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
valid-duration
策略有效期(以分钟为单位)。
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
设置一个策略,要求请求中的更改才能使用受保护的分支成功生成,然后才能完成拉取请求。
生成策略可减少中断,并保持测试结果通过。 即使你在开发分支上使用 持续集成 (CI) ,生成策略也有助于提前捕获问题。
如果启用了生成验证策略,则新生成在创建新拉取请求时排队,或者将更改推送到面向分支的现有拉取请求。 然后,生成策略评估生成的结果,以确定拉取请求是否可以完成。
选择 “添加生成策略 ”并在 “添加生成策略 ”中配置选项。
选择 “生成”定义 。
选择 触发器 的类型。 每当源分支更新) 或手动 时,选择“自动 (”。
选择 策略要求 。 如果选择 “必需 ”,则生成必须成功完成才能完成拉取请求。 选择 “可选 ”提供生成失败通知,但仍允许拉取请求完成。
设置生成过期,以确保受保护分支的更新不会中断对打开拉取请求的更改。
更新时 branch name
立即 :此选项在请求请求中设置生成策略状态,以在更新受保护分支时 失败 。 重新排队生成以刷新生成状态。 此设置可确保即使受保护分支发生更改,拉取请求中的更改也会成功生成。 此选项最适合具有重要分支且更改量较低的团队。 在繁忙的开发分支中工作的团队可能会发现,在每次更新受保护分支时等待生成完成可能会造成干扰。
更新数小时后n
branch name
:如果传递的内部版本早于输入的阈值,此选项将在受保护分支更新时过期当前策略状态。 此选项是在受保护分支更新且从不需要生成时始终要求生成之间的妥协。 当受保护的分支频繁更新时,此选项非常适合减少生成数。
永不 :汇报受保护分支不会更改策略状态。 此值可减少分支的生成数。 关闭最近未更新的拉取请求时,可能会导致问题。
输入此生成策略的可选 显示名称 。 此名称标识 分支策略 页上的策略。 如果未指定显示名称,策略将使用生成定义名称。
选择“保存”。
当所有者推送成功生成的更改时,策略状态将更新。 如果已选择更新生成策略,则n
branch name
如果已选择更新生成策略,branch name
则当更新受保护的分支时,策略状态会立即更新(如果最新生成不再有效)。
状态检查
外部服务可以使用 PR 状态 API 将详细状态发布到 PR。 其他服务的分支策略使这些第三方服务能够参与 PR 工作流并建立策略要求。
有关配置此策略的说明,请参阅 配置外部服务的分支策略 。
需要外部服务的批准
外部服务可以使用 PR 状态 API 将详细状态发布到 PR。 其他服务的分支策略使这些第三方服务能够参与 PR 工作流并建立策略要求。
有关配置此策略的说明,请参阅 配置外部服务的分支策略 。
自动包括代码审阅者
可以自动添加审阅者来拉取请求,这些请求更改特定目录和文件中的文件,或拉取存储库中的所有拉取请求。
选择+ “自动包含审阅者 ”旁边的按钮。
填写 “添加新审阅者策略 ”屏幕。
将人员和组添加到 审阅者 。
如果要自动添加审阅者,但不需要审批才能完成拉取请求,请选择 “可选 ”。
或者,如果拉取请求在以下之前无法完成,请选择 “必需 ”
作为审阅者添加的每个人员都批准更改。
作为审阅者添加的每个组中至少有一个人批准更改。
如果只需要一个组,则指定批准更改的最小成员数。
指定需要自动包含审阅者的文件和文件夹。 将此字段留空,要求审阅者获取分支中的所有拉取请求。
如果拉取请求所有者可以投票批准自己的拉取请求以满足此策略,请选择 “允许请求者” 批准自己的更改。
可以指定拉取请求中显示的 活动源消息 。
选择“保存”。
注意
此功能适用于 Azure DevOps Server 2020 及更高版本。
可以使用 Azure DevOps CLI az repos policy required-reviewer 来设置和更新所需的审阅者策略。
创建所需的审阅者策略
使用 az repos policy required-reviewer create 创建所需的审阅者策略。
az repos policy required-reviewer create --blocking {false, true}
--branch
--enabled {false, true}
--message
--repository-id
--required-reviewer-ids
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--path-filter]
[--project]
[--subscription]
参数
参数
说明
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。 “必需”。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。 “必需”。
enabled
启用策略。 接受的值: false
, true
。 “必需”。
message
请求中显示的活动源消息。 必填。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。 “必需”。
required-reviewer-ids
审阅者电子邮件地址分隔。;
例如:john@contoso.com;alice@contoso.com
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
path-filter
应用策略的路径 () 。 支持绝对路径、通配符和分隔的 ;
多个路径。 示例:/WebApp/Models/Data.cs
、/WebApp/*
或*.cs,
或。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
示例
以下示例将 Jamal Hartnett 设置为 Fabrikam 存储库分支中 main
拉取请求所需的审阅者。 此示例使用默认配置 az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
。
az repos policy required-reviewer create --blocking true --branch main --enabled true --message "Please review." --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --required-reviewer-ids fabrikamfiber4@hotmail.com --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------------ ------------- ------------ ------------------------------------ ---------------
35 Required reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
更新所需的审阅者策略
使用 az repos policy required-reviewer update 更新所需的审阅者策略。
az repos policy required-reviewer update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--message]
[--org]
[--path-filter]
[--project]
[--repository-id]
[--required-reviewer-ids]
[--subscription]
参数
参数
说明
id
, policy-id
策略的 ID。 “必需”。
blocking
如果不符合策略,则阻止。 接受的值: false
, true
。
branch
按完全匹配筛选结果的分支名称。 --repository-id
需要使用分支筛选器的参数。 例如:--branch main
。
branch-match-type
branch
使用参数应用策略。 如果值为 exact
,则策略适用于与参数完全匹配的 --branch
分支。 如果值为 prefix
,则策略将应用于与参数中的 --branch
前缀匹配的所有分支文件夹。 接受的值: exact
, prefix
。 默认值:exact
。
detect
自动检测组织。 接受的值: false
, true
。
enabled
启用策略。 接受的值: false
, true
。
message
请求中显示的活动源消息。
org
Azure DevOps 组织 URL。 You can configure the default organization by using az devops configure -d organization=<ORG_URL>
. 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。示例: https://dev.azure.com/MyOrganizationName/
.
path-filter
应用策略的路径 () 。 支持绝对路径、通配符和分隔的 ;
多个路径。 示例:/WebApp/Models/Data.cs
、/WebApp/*
或*.cs,
或。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs
project
, p
项目的名称或 ID。 可以使用 .. 配置默认项目 az devops configure -d project=<NAME_OR_ID>
。 如果未配置为默认配置或通过 git 配置进行选取,则为必需 。
repository-id
要按完全匹配筛选结果的存储库的 ID。 例如,--repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
。
required-reviewer-ids
审阅者电子邮件地址分隔。;
例如:john@contoso.com;alice@contoso.com
。
subscription
订阅的名称或 ID。 可以使用 az account set -s <NAME_OR_ID>
配置默认订阅。
本地Azure DevOps Server不支持 Azure DevOps CLI 命令。
为存储库中的特定目录和文件选择审阅者。
这些审阅者会自动添加到拉取请求,这些请求会沿这些路径更改文件。 还可以指定 活动源消息 。
如果选择 “必需 ”,则在以下时间之前无法完成拉取请求:
作为路径审阅者添加的每个用户都批准更改。
添加到路径的每个组中至少有一个人批准更改。
为添加到路径的每个组指定的审阅者数批准更改。
如果要自动添加审阅者,请选择 “可选 ”,但不要求其批准才能完成拉取请求。
可以选择 请求者可以批准自己的更改 。
当所有必需的审阅者都批准代码时,可以完成拉取请求。
绕过分支策略
在某些情况下,可能需要绕过策略要求。 绕过权限可让你直接将更改推送到分支,或完成不满足分支策略的拉取请求。 你可以向用户或组授予绕过权限。 可以将绕过权限的范围限定为整个项目、存储库或单个分支。
两种权限允许用户以不同的方式绕过分支策略:
有关管理这些权限的详细信息,请参阅 Git 权限 。
在 TFS 2015 到 TFS 2018 Update 2 中, “免除策略强制 ”权限允许用户具有此权限的用户执行以下操作:
完成拉取请求时,选择加入以替代策略并完成拉取请求,即使当前一组分支策略未满足。
即使该分支设置了分支策略,也直接推送到分支。 请注意,当具有此权限的用户发出将替代分支策略的推送时,推送会自动绕过分支策略,且没有选择加入步骤或警告。
重要
在授予绕过策略的能力时(尤其是在存储库和项目级别)时,请谨慎使用。 策略是安全合规源代码管理的基石。
路径筛选器
多个分支策略提供路径筛选器。 如果设置了路径筛选器,则策略仅适用于与路径筛选器匹配的文件。 将此字段留空意味着策略适用于分支中的所有文件。
可以指定绝对路径和通配符。
示例:
/WebApp/Models/Data.cs
/WebApp/*
*.cs
可以使用分隔符指定多个路径 ;
。
示例:
/WebApp/Models/Data.cs;ClientApp/Models/Data.cs
否则,如果排除了前缀为 !
前缀的路径,则排除这些路径。
示例:
/WebApp/*;!/WebApp/Tests/*
包括除文件以外的 /WebApp
所有文件 /WebApp/Tests
!/WebApp/Tests/*
指定无文件,因为首先不包含任何文件
筛选器的顺序非常重要。 筛选器从左到右应用。
问题解答
是否可以直接将更改推送到具有分支策略的分支?
不能将更改直接推送到具有 所需 分支策略的分支,除非你有权 绕过分支策略 。 只能通过 拉取请求 对这些分支进行更改。 如果分支策略没有必需的分支策略,可以将更改直接推送到具有 可选 分支策略的分支。
什么是自动完成?
将请求拉取到配置分支策略的分支中,具有 “设置自动完成 ”按钮。 选择此选项可在请求满足所有策略后 自动完成 拉取请求。 如果不希望更改出现问题,则自动完成非常有用。
何时检查分支策略条件?
当拉取请求所有者推送更改以及审阅者投票时,分支策略将在服务器上重新评估。 如果策略触发生成,则生成状态设置为等待生成完成。
是否可以在分支策略中使用 XAML 生成定义?
否,不能在分支策略中使用 XAML 生成定义。
我可以对所需的代码审阅者使用哪些通配符?
单个星号 *
与任意数量的字符匹配,包括正斜杠 /
和反斜杠 \
。 问号 ?
与任何单个字符匹配。
示例:
*.sql
与 .sql 扩展名的所有文件匹配。
/ConsoleApplication/*
匹配名为 ConsoleApplication 的文件夹下的所有文件。
/.gitattributes
匹配存储库根目录中的 .gitattributes 文件。
*/.gitignore
匹配存储库中的任何 .gitignore 文件。
所需的代码审阅者路径是否区分大小写?
否,分支策略不区分大小写。
可以将 用户添加到组 ,然后将该组添加为审阅者。 然后,组的任何成员都可以批准以满足策略要求。
我具有绕过策略权限。 为什么仍然在拉取请求状态中看到策略失败?
始终评估已配置的策略,以便进行拉取请求更改。 对于具有绕过策略权限的用户,报告的策略状态仅为公告。 如果具有绕过权限的用户批准,则失败状态不会阻止拉取请求完成。
为什么“允许请求者批准自己的更改”时无法完成自己的拉取请求?
“需要最少数量的审阅者 ”策略和“自动包含的审阅 者”策略都有允许请求者批准自己的更改 的选项。 在每个策略中,此设置仅适用于该策略。 此设置不会影响其他策略。
例如,拉取请求设置了以下策略:
需要至少一个审阅者 需要一个审阅者。
自动包含的审阅者 要求你或作为审阅者加入的团队。
自动包含的审阅者 允许 请求者批准其自己的更改 已启用。
要求最少的审阅者 没有 “允许请求者”批准启用自己的更改 。
在这种情况下,审批满足 自动包含的审阅者 ,但不需要 最少数量的审阅者 ,因此无法完成拉取请求。
可能还有其他策略,例如 禁止最新的推送程序批准自己的更改 ,从而阻止你批准自己的更改,即使设置了 “允许请求者批准自己的更改 ”。
相关文章