Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
使用分支政策來保護重要 分支 ,要求在變更合併前進行拉取請求、審查器、建置及其他檢查。 本文說明如何在 Azure DevOps 網頁入口網站及 Azure DevOps CLI 中配置和管理分支政策。 有關可用分支政策摘要及分支指引,請參閱 「關於分支與分支政策」。
欲了解涵蓋分支政策、儲存庫存取控制、提交簽署及實際實作情境的完整安全指南,請參見 「安全倉庫與拉取請求」。
你無法刪除已設定必要原則的分支,且所有變更都必須透過提取要求(PR)進行。
必要條件
| Requirement |
詳細資料 |
| Permissions |
成為 Project Administrators 安全群組的成員,或擁有儲存庫層級的編輯政策權限。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。 |
| Azure DevOps CLI setup (optional) |
若要使用 Azure DevOps CLI 的 az repos policy 命令,請先完成 Get started with Azure DevOps CLI。 |
| CLI 的儲存庫目標設定(可選) |
在 CLI 建立或更新政策前,先透過執行 az repos list來識別儲存庫 ID。 為避免重複 --org 和 --project,預設值設為 az devops configure --defaults。 |
| 政策依賴關係 |
在設定 建置驗證之前,先準備好建置管線。 在設定 狀態檢查之前,請確認外部服務或內建整合已經能發布拉取請求狀態。 |
| AI 協助設定(選用) |
若要使用 Azure DevOps MCP 伺服器的 AI 協助,請使用 Azure DevOps 服務,啟用 AI 助理中的代理模式,並安裝 Node.js 20.0+。 欲了解更多資訊,請參閱啟用 Azure DevOps MCP Server 的 AI 協助。 |
| Requirement |
詳細資料 |
| Permissions |
成為 Project Administrators 安全群組的成員,或擁有儲存庫層級的編輯政策權限。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。 |
開放分支政策設定
若要在 Web 入口網站中開啟分支原則設定:
- 選取 [存放庫>分支]。
- 找到你想管理的分支。
- 選擇分支旁的 「更多選項 」圖示,然後選擇 分支政策。
你也可以從 專案設定>存放庫>原則>分支原則><分支名稱> 開啟分支原則設定。
具有原則的分支會顯示原則圖示。 選擇圖示即可直接進入該分支的政策設定。
您可以瀏覽該清單,或在 搜尋分會名稱 框中搜尋該分會。
在分支的設定頁面上設定原則。 請使用以下章節開啟或更新現有政策。
使用 Azure DevOps CLI 在建立或更新政策前,先列出分支或儲存庫的現有政策。
如果你經常使用 Azure DevOps CLI,請用 為你的組織和專案az devops configure --defaults設定預設值。 當你想要讓原則只套用至單一分支時,請使用 --branch-match-type exact。 只有當你想讓政策跨跨分支資料夾套用時才使用 prefix ,例如 release/。
列出政策
若要列出專案中的所有原則,請使用 az repos policy list。
az repos policy list [--branch]
[--detect {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
參數
| 參數 |
描述 |
branch |
用分支名稱作為完全相符條件以篩選結果。
--repository-id必須使用 參數,才能使用分支篩選。 例如: --branch main 。 |
detect |
自動偵測組織。 接受的值: false、 true。 |
org、organization |
Azure DevOps 組織 URL。 使用 az devops configure -d organization=<ORG_URL> 配置預設機構。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
範例
下列命令會傳回在 Fabrikam 存放庫 ID main 的 d28cd374-e7f0-4b1f-ad60-f349f155d47c 分支中生效的所有分支原則。 執行 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]
[--subscription]
參數
| 參數 |
描述 |
id、policy-id |
政策的標識碼。
必要。 |
detect |
自動偵測組織。 接受的值: false、 true。 |
org、organization |
Azure DevOps 組織 URL。 使用 az devops configure -d organization=<ORG_URL> 配置預設機構。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
設定最低審核者政策
要求至少有審查員批准後,拉取請求才能完成。
若要設定原則,請在 [分支原則] 底下,將 [需要最少數目的檢閱者] 設定為 [開啟]。 輸入必要的檢閱者數目,然後選取下列任一選項:
選取 [允許要求者核准自己的變更 ],以允許PR的建立者對其核准進行投票。 否則,創作者仍可對 PR 投票批准,但他們的投票不計入最低審核人數。
選取 禁止最近的推送者批准自己的更改,以強制執行職責隔離。 根據預設,任何擁有來源分支推送許可權的人都可以新增提交和對 PR 的核准進行投票。 選取此選項表示即使最新的推送者通常可以核准自己的變更,他們的投票依然不算數。
請選取 允許完成,即使某些檢驗者投票等候或拒絕 以便即使部分檢閱者投票反對批准,仍允許 PR 完成。 檢閱者數目下限仍必須核准。
- 在 推送新變更時 底下:
- 選取 每次迭代至少需要一個核准,以針對最後一個來源分支變更要求至少一個核准票。 使用者的核准不影響該使用者推送的任何先前未核准的版本。 因此,最後一次迭代需要由另一位用戶進行核准。
在 Azure DevOps Server 2022.1 及更高版本中,每次反覆項目都需要至少一個核准。
- 選取 需要在最後的迭代中至少獲得一個核准,以要求對最後一次來源分支變更至少有一個核准投票。
- 每當來源分支變更時,選取 重設所有核准投票(不會重設拒絕或等候的投票),以移除所有核准投票,但保留拒絕或等候的投票。
- 選取 [ 重設所有程序代碼檢閱者投票 ],以在來源分支變更時移除所有檢閱者投票,包括要核准、拒絕或等候的投票。
如果所有其他原則都通過,創建者可以在當所需數量的審核者核准後完成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 |
依完全匹配篩選結果的儲存庫識別碼。 例如: --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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
範例
下列範例會將 Fabrikam 存放庫中2分支的拉取請求所需核准的最低數量設定為main。 此政策允許反對票,這表示即使某些檢閱者投票不核准,只要有至少最低票數核准,提取請求仍可完成。 推送至來源分支不會重設投票。 此政策也允許 Pull Request 創建者批准自己的 Pull Request。
這個範例會使用預設群組態 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 |
政策的標識碼。
必要。 |
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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
reset-on-source-push |
當變更推送至來源時,重設投票。 接受的值: false、 true。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 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 |
依完全匹配篩選結果的儲存庫識別碼。 例如: --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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
更新工作專案連結原則
使用 az repos policy work-item-linking update 來更新存放庫或一或多個分支的工作專案鏈接原則。
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 |
政策的標識碼。
必要。 |
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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
範例
下列範例會更新 Fabrikam 存放庫中 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批注。
將 「Check for comment resolution 」設為 「On 」以設定你的分支機構的評論解析政策。 然後選擇政策設定為必要或選擇性。
欲了解更多關於處理拉取請求評論的資訊,請參閱 檢視拉取請求。
Use 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 |
依完全匹配篩選結果的儲存庫識別碼。 例如: --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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 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 |
政策的標識碼。
必要。 |
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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
範例
以下範例將 Fabrikam 存放庫的6分支中的評論解析政策 ID main 更新為阻擋。 必須先解析批注,才能合併提取要求。 這個範例會使用預設群組態 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 完成時強制使用合併策略。
將 「限制合併類型 」設為 開啟 ,以限制你倉庫中允許的合併類型。
-
基本合併(不進行快進合併) 會在目標中建立一個合併提交,其父系為目標分支和來源分支。
-
壓縮合併 會建立一個線性歷史,目標分支只需提交一次,包含來自來源分支的變更。
深入瞭解壁球合併 ,以及它如何影響分支歷程記錄。
-
變基和快速前進 會建立線性歷史記錄,方法是將來源提交重新套用到目標分支,而不需要合併提交。
-
變基並合併認可 將來源認可重新套用至目標分支,並同時建立一個合併認可。
使用 Azure DevOps CLI az repos policy merge-strategy 來設定及更新合併策略原則。
建立合併策略原則
使用 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 |
依完全匹配篩選結果的儲存庫識別碼。 例如: --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 合併。 藉由將來源分支提交壓縮成目標分支上的單一新提交,以建立線性歷史紀錄。 接受的值: false、 true。 |
branch-match-type |
使用 branch 參數來套用政策。 如果值為 exact,則原則會套用在完全符合自變數的 --branch 分支上。 如果值為 prefix,則原則會套用至符合 自變數中 --branch 前置詞的所有分支資料夾。 接受的值: exact、 prefix。 預設值: exact。 |
detect |
自動偵測組織。 接受的值: false、 true。 |
org |
Azure DevOps 組織 URL。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 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 |
政策的標識碼。
必要。 |
allow-no-fast-forward |
- 沒有快進的基本合併。 保留非線性歷史,就像在開發期間發生一樣。 接受的值: false、 true。 |
allow-rebase |
重新整理基底和快速前進。 將來源分支認可重新執行至目標,而不需合併認可,以建立線性歷程記錄。 接受的值: false、 true。 |
allow-rebase-merge |
進行合併提交來重新基準化。 將來源分支認可重新執行至目標,然後建立合併認可,以建立半線性歷程記錄。 接受的值: false、 true。 |
allow-squash |
Squash 合併。 藉由將來源分支提交壓縮成目標分支上的單一新提交,以建立線性歷史紀錄。 接受的值: 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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
use-squash-merge |
是否一律壓縮合併。 此選項不適用於其他合併類型。 接受的值: false、 true。 |
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
設定建置驗證
設定原則,要求 PR 變更必須先成功建置,PR 才能完成。
建置策略可減少中斷,確保測試結果持續通過。 即使您在開發分支上使用持續整合(CI)來提早捕捉問題,構建策略仍可提供幫助。
當你將原則觸發程序設為 自動 時,當你建立新的 PR,或將變更推送到以該分支為目標的現有 PR 時,建置驗證原則會將新的建置排入佇列。 如果你把政策觸發器設為 手動,使用者必須自己排隊建置。 在這兩種情況下,原則都會評估建置結果,以判斷 PR 是否可完成。
重要
在指定建置驗證政策前,先建立建置管線。 如果您沒有流水線,請參閱 建立組建流水線。 選擇符合專案類型的組建類型。
若要新增組建驗證原則
選取位於+旁的按鈕。
填寫 [ 設定組建原則 ] 表單:
選擇性地設定 路徑篩選條件。
深入瞭解分支原則中的路徑篩選 。
在 [觸發] 底下,選取 [自動(每當來源分支更新時)] 或 [手動]。
在 [原則需求] 底下,選取 [必要] 或 [選擇性]。 如果您選擇 [ 必要],組建必須順利完成才能完成 PR。 選擇 [ 選擇性 ] 提供建置失敗的通知,但仍允許PR完成。
設定組建到期,以確保受保護分支的更新不會中斷開啟PR的變更。
當<分支名稱>更新時立即:此選項會將 PR 建置原則狀態設定為失敗,並重新排入組建佇列。 此設定可確保即使受保護的分支變更,PR 變更也會成功建置。
此選項最適合重要分支很少變更的小組。 在繁忙的開發分支中工作的小組,因為每次分支更新都必須等待編譯完成,可能會造成困擾。
在<n>小時後,如果<分支名稱>已更新:此選項會在受保護的分支更新時使當前的策略狀態失效,若通過的構建早於您輸入的臨界值。 此選項是受保護分支更新時一律或永遠不需要組建之間的妥協。 當您的受保護分支經常更新時,此選項可減少組建數目。
永不:受保護分支的更新不會變更原則狀態。 此值會減少組建數目,但在完成最近未更新的PR時,可能會導致問題。
輸入此組建原則的選擇性 顯示名稱 。 此名稱會識別分支原則頁面上的原則。 如果您未指定顯示名稱,原則會使用組建管線名稱。
- 選取儲存。
當 PR 擁有者推送成功建置的變更後,政策狀態會更新。
如果您的組建原則為「分支名稱更新時立即」或「分支名稱更新後n小時後」,則當受保護的分支更新且先前的組建不再有效時,原則狀態會更新。
使用 Azure DevOps CLI az repos policy build 來設定並更新 build validation policy。
建立組建驗證原則
使用 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 |
組建定義標識碼。
必要。 |
display-name |
此建置原則的顯示名稱,以識別原則。 例如: Manual queue policy 。
必要。 |
enabled |
啟用政策。 接受的值: false、 true。
必要。 |
manual-queue-only |
是否僅允許透過手動方式排隊組建。 接受的值: false、 true。
必要。 |
queue-on-source-update-only |
是否僅在來源更新時才將建置排入佇列。 接受的值: false、 true。
必要。 |
repository-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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
path-filter |
套用原則的路徑。 支援以 分隔的 ;絕對路徑、通配符和多個路徑。 範例:/WebApp/Models/Data.cs、 /WebApp/*或 *.cs, 。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
範例
下列範例會設定 Fabrikam 存放庫分支中 main 提取要求的必要建置原則。 此原則要求建置定義標識碼 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 |
政策的標識碼。
必要。 |
blocking |
如果不符合政策,則封鎖。 接受的值: false、 true。 |
branch |
用分支名稱作為完全相符條件以篩選結果。
--repository-id必須使用 參數,才能使用分支篩選。 例如: --branch main 。 |
branch-match-type |
使用 branch 參數來套用政策。 如果值為 exact,則原則會套用在完全符合自變數的 --branch 分支上。 如果值為 prefix,則原則會套用至符合 自變數中 --branch 前置詞的所有分支資料夾。 接受的值: exact、 prefix。 預設值: exact。 |
build-definition-id |
組建定義標識碼。 |
detect |
自動偵測組織。 接受的值: false、 true。 |
display-name |
此建置原則的顯示名稱,以識別原則。 例如: Manual queue policy 。 |
enabled |
啟用政策。 接受的值: false、 true。 |
manual-queue-only |
是否僅允許透過手動方式排隊組建。 接受的值: false、 true。 |
org |
Azure DevOps 組織 URL。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
path-filter |
套用原則的路徑。 支援以 分隔的 ;絕對路徑、通配符和多個路徑。 範例:/WebApp/Models/Data.cs、 /WebApp/*或 *.cs, 。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
queue-on-source-update-only |
是否僅在來源更新時才將建置排入佇列。 接受的值: false、 true。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
valid-duration |
原則有效性持續時間,以分鐘為單位。 |
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
要求進行狀態檢查
外部服務可以使用 PR 狀態 API ,將詳細狀態張貼到您的 PR。 其他服務的分支原則可讓這些外部服務參與PR工作流程,並建立原則需求。
要設定狀態檢查政策:
- 確保服務能把拉取請求狀態貼到 Azure Repos。
- 在 分支政策中,在 狀態檢查中選擇 +。
- 在 「狀態檢查」中,從清單中選擇張貼的支票。 如果服務還沒發布狀態,請直接輸入
genre/name 該數值。
- 將 政策要求 設為 「必需 」或 「可選」。
- 可選擇性地設定 授權身份、 重置條件、 政策適用性及 路徑篩選。
- 如果政策應該在 pull request 建立時立即生效,則預設使用 Apply 模式。
- 如果政策應該只在第一個狀態發布後才適用,請使用 條件式 。
- 建立或更新一個針對該分支的拉取請求,並確認該政策是否出現在 PR 的 政策 區塊中。
如需了解內建 Azure DevOps Services 檢查及其 genre/name 識別碼,請參閱 可用的提取要求狀態檢查。 欲完整了解外部服務設定,請參見 「為外部服務設定分支政策」。
如果下拉選單還沒顯示新的整合,請先從服務中貼出狀態,然後加入政策,或直接輸入 genre/name 該值。
自動包含審稿人
您可以自動新增檢閱者到更改特定目錄和檔案的提取請求,或到存放庫中所有的提取請求。
選取 [+ 按鈕],位於 [自動包含的檢閱者] 旁。
填寫 [ 新增檢閱者原則 ] 畫面。
在檢閱者中新增人員和群組。
如果您想要自動新增檢閱者,但不需要核准才能完成提取要求,請 選取 [選擇性 ]。
或者,如果提取要求無法完成,請選取 [必要 ],直到:
- 以檢閱者身分新增的每個人員都會核准變更。
- 在每個添加為檢閱者的群組中,至少有一位成員核准變更。
- 如果只需要一個群組,則您指定的最少成員數目須核准這些變更。
指定需要自動包含檢閱者的檔案和資料夾。 將此欄位保留空白,以要求檢閱者取得分支中的所有提取要求。
如果提案請求的擁有者可以投票來核准自己的提案請求,以符合此政策,請選取 允許提案請求擁有者核准自己的變更。
您可以指定 出現在提取要求中的活動摘要訊息 。
選取儲存。
使用 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 |
依完全匹配篩選結果的儲存庫識別碼。 例如: --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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
path-filter |
套用原則的路徑。 支援以 分隔的 ;絕對路徑、通配符和多個路徑。 範例:/WebApp/Models/Data.cs、 /WebApp/*或 *.cs, 。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 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 |
政策的標識碼。
必要。 |
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。 您可以使用 az devops configure -d organization=<ORG_URL> 來設定預設組織。
如果未設定為預設值或透過 git config 擷取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
path-filter |
套用原則的路徑。 支援以 分隔的 ;絕對路徑、通配符和多個路徑。 範例:/WebApp/Models/Data.cs、 /WebApp/*或 *.cs, 。/WebApp/Models/Data.cs;ClientApp/Models/Data.cs |
project、p |
項目的名稱或識別碼。 使用 az devops configure -d project=<NAME_OR_ID> 設定預設專案。
如果未設定為預設或透過 git 設定取得,則為必須。 |
repository-id |
依完全匹配篩選結果的儲存庫識別碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
required-reviewer-ids |
檢閱者的電子郵件位址以;分隔。 例如: john@contoso.com;alice@contoso.com 。 |
subscription |
訂用帳戶的名稱或識別碼。 使用 az account set -s <NAME_OR_ID>設定預設訂用帳戶。 |
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
必要時允許略過原則
在某些情況下,您可能需要繞過政策要求。 略過許可權可讓您直接將變更推送至分支,或完成不符合分支原則的提取要求。 你可以授予使用者或群組繞過權限,並將權限範圍涵蓋整個專案、一個倉庫或單一分支。
兩個許可權可讓使用者以不同的方式略過分支原則:
如需管理這些許可權的詳細資訊,請參閱 Git 許可權。
重要
授與略過原則的能力時請小心,特別是在存放庫和專案層級。 原則是安全且相容的原始程式碼管理的基石。
使用帶有分支策略的路徑過濾器
多個分支政策支援路徑過濾器。 如果你設定了路徑過濾器,該政策只會適用於符合該過濾器的檔案。 將此欄位留空,以便將政策套用至分支中的所有檔案。
你可以指定絕對路徑(路徑必須以 / 或萬用字元開頭)和萬用字元。
範例:
/WebApp/Models/Data.cs
/WebApp/*
*/Models/Data.cs
*.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 檔案。
必要的程式代碼檢閱者路徑是否區分大小寫?
否,分支原則不會區分大小寫。
您可以將 使用者新增至群組,然後將群組新增為檢閱者。 然後,群組的任何成員都可以核准以符合原則需求。
我有略過原則許可權。 為什麼我仍然會在拉取請求狀態中看到政策失敗?
系統總是會評估已設定的政策以進行拉取請求變更。 對於擁有繞過政策權限的使用者,報告的政策狀態僅為諮詢性質。 如果具有略過許可權的使用者核准,失敗狀態不會封鎖提取要求完成。
為什麼我設定「允許請求者自行核准自己的變更」時,卻無法完成自己的拉取請求?
[需要最少數目的檢閱者] 原則和 [自動包含的檢閱者] 原則都有 [允許要求者核准自己的變更] 選項。 在每個原則中,此設定僅適用於該原則。 此設定不會影響其他原則。
例如,您的提取要求已設定下列原則:
-
需要至少一個檢閱者的需求是一位檢閱者。
-
自動包含的檢閱者需要您或您所在團隊中的任何人擔任檢閱者。
-
自動包含的檢閱者 已啟用 允許要求者核准其自身變更 。
-
需要最少數目的檢閱者 沒有 [允許要求者核准自己的變更 ] 啟用。
在此情況下,您的核准會 滿足自動包含的檢閱者,但不需要 最少的檢閱者數目,因此您無法完成提取要求。
其他政策可能會阻止你自行批准變更,即使設定了 「允許請求者批准自己的變更 」。 例如,禁止 最近一次推送變更的人核准自己的變更。
如果路徑篩選器不是以 / 或萬用字元開頭,會發生什麼情況?
在路徑篩選器中,任何不是以 / 或萬用字元開頭的路徑都不會生效。 路徑過濾器的評估方式就像那條路徑沒有被指定一樣。 此類路徑不能與/的絕對檔案路徑開頭相匹配。
如果你設定 Azure DevOps MCP 伺服器,可以使用自然語言收集儲存庫、分支、拉取請求,並在更新 Azure DevOps Services 的分支政策前建立上下文。
Azure DevOps MCP 伺服器需要Azure DevOps服務、AI 助理中的代理模式,以及 Node.js 20.0+。 目前的 MCP 文件並未說明直接的分支政策讀寫動作,因此請使用 Azure DevOps 網頁入口網站或 Azure DevOps CLI 來建立和更新政策。
| 任務 |
範例提示 |
| 在儲存庫中列出分支 |
List the branches in repo <Contoso.Web> in project <Contoso> |
| 在收緊政策前,先檢視拉取請求 |
What pull requests require my review in project <Contoso>? |
| 檢查提取要求和已連結的工作項目 |
Get details for pull request <67> and its linked work items in project <Contoso> |
| 在設定建置驗證要求前,先檢查建置狀態 |
Get the latest build status for pipeline <Contoso-CI> in project <Contoso> |
Note
如果你使用 Visual Studio Code,代理模式對於在更新分支政策前蒐集專案上下文特別有幫助。
相關內容