分支原則和設定
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
分支原則可協助小組保護其重要的 開發分支 。 分支原則會針對小組強制執行程式碼品質和變更管理方面的標準。 本文說明如何設定和管理分支原則。 如需所有存放庫和分支原則和設定的概觀,請參閱 Git 存放庫設定和原則。
無法刪除已設定必要原則的分支,而且需要所有變更的提取要求(PR)。
必要條件
- 若要設定分支原則,您必須是 Project Administrators 安全組的成員,或具有存放庫層級 的編輯原則 許可權。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。
若要管理分支原則,請選取 [存放庫>分支] 以在入口網站中開啟 [分支] 頁面。
![顯示 [分支] 功能表項的螢幕快照。](media/branch-policies/branches-new-nav.png?view=azure-devops-2019)
您也可以使用專案設定>存放庫>>原則分支原則分支名稱來取得分支<>原則設定。>
具有原則的分支會顯示原則圖示。 您可以選取圖示,直接移至分支的原則設定。
若要設定分支原則,請找出您想要管理的分支。 您可以在右上方的 [搜尋分支名稱 ] 方塊中瀏覽清單或搜尋您的分支。
選取分支旁的 [其他選項 ] 圖示,然後從操作功能表中選取 [分支 原則]。
![顯示從操作功能表開啟分支原則的螢幕快照。](media/branch-policies/new-branches-page.png?view=azure-devops-2019)
在頁面中找出您的分支。 您可以瀏覽清單,或使用右上方的 [搜尋所有分支] 方塊來搜尋分支。
![顯示 [分支] 頁面的螢幕快照。](media/branch-policies/branches-page.png?view=azure-devops-2019)
選取 ... 按鈕。 從捷徑功能表中選取 [分支原則]。
![顯示從操作功能表開啟分支原則的螢幕快照。](media/branch-policies/branches-context-menu-policy.png?view=azure-devops-2019)
在分支的設定頁面上設定原則。 如需每個原則類型的描述和指示,請參閱下列各節。
在 [原則] 頁面中設定您的原則。 如需每個原則類型的描述,請參閱下列各節。 選取 [ 儲存變更 ] 以套用新的原則設定。
![顯示 [原則] 索引標籤的螢幕快照。](media/branch-policies/save-policy-changes.png?view=azure-devops-2019)
您可以使用 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。 您可以使用 來設定預設組織 az devops configure -d organization=<ORG_URL> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。範例: https://dev.azure.com/MyOrganizationName/ 。 |
project , p |
項目的名稱或識別碼。 您可以使用 來設定預設專案 az devops configure -d project=<NAME_OR_ID> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。 |
query-examples |
建議的 JMESPath 字串。 您可以複製其中一個查詢,並在參數後面 --query 貼上雙引號來查看結果。 您可以新增一或多個位置關鍵詞,因此建議會以這些關鍵詞為基礎。 |
repository-id |
要依完全相符專案篩選結果的存放庫標識碼。 例如: --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345 。 |
subscription |
訂用帳戶的名稱或識別碼。 您可以使用 az account set -s <NAME_OR_ID> 設定預設訂用帳戶。 |
範例
下列命令會傳回 Fabrikam 存放庫d28cd374-e7f0-4b1f-ad60-f349f155d47c
分支標識碼 中main
生效的所有分支原則。 您可以執行 az repos list
來取得存放庫識別碼。
此範例使用下列預設組態: 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 |
原則的標識碼。 必要。 |
detect |
自動偵測組織。 接受的值: false 、 true 。 |
org , organization |
Azure DevOps 組織 URL。 您可以使用 來設定預設組織 az devops configure -d organization=<ORG_URL> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。範例: https://dev.azure.com/MyOrganizationName/ 。 |
project , p |
項目的名稱或識別碼。 您可以使用 來設定預設專案 az devops configure -d project=<NAME_OR_ID> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。 |
query-examples |
建議的 JMESPath 字串。 您可以複製其中一個查詢,並在參數後面 --query 貼上雙引號來查看結果。 您可以新增一或多個位置關鍵詞,因此建議會以這些關鍵詞為基礎。 |
subscription |
訂用帳戶的名稱或識別碼。 您可以使用 az account set -s <NAME_OR_ID> 設定預設訂用帳戶。 |
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
需要最少數目的檢閱者
程式代碼檢閱對於軟體開發專案很重要。 若要確保小組檢閱和核准PR,您可以從最少的檢閱者數目要求核准。 基本原則要求指定數目的檢閱者核准程序代碼,且不會拒絕。
若要設定原則,請在 [分支原則] 底下,將 [需要最少數目的檢閱者] 設定為 [開啟]。 輸入必要的檢閱者數目,然後選取下列任一選項:
選取 [允許要求者核准自己的變更 ],以允許PR的建立者對其核准進行投票。 否則,建立者仍然可以在PR上投票 核准 ,但其投票並不計入最少的檢閱者數目。
選取 [禁止最新的推播者核准自己的變更 ],以強制執行職責隔離。 根據預設,來源分支上具有推送許可權的任何人都可以新增認可和投票給PR核准。 選取此選項表示最新的推播者投票不算數,即使他們通常可以核准自己的變更也一樣。
即使某些檢閱者投票等候或拒絕允許PR完成,即使某些檢閱者投票反對核准,仍選取 [允許完成]。 檢閱者數目下限仍必須核准。
- 在 [推送新變更時] 底下:
- 選取 [在上次反覆 專案上至少需要一個核准],以要求至少一個核准投票才能變更最後一個來源分支。
- 選取 [ 重設所有核准投票](不會重設投票以拒絕或等候) 移除所有核准投票,但每當來源分支變更時,請保留投票以拒絕或等候。
- 選取 [ 重設所有程序代碼檢閱者投票 ],以在來源分支變更時移除所有檢閱者投票,包括要核准、拒絕或等候的投票。
- 在 [推送新變更時] 底下:
- 針對最後一個來源分支變更,選取 [每次反復 專案至少需要一個核准] 來核准。 使用者核准不會計入該使用者推送的任何先前未核准反覆專案。 因此,另一位用戶必須完成最後一次反覆專案上的另一個核准。 Azure DevOps Server 2022.1 和更新版本中至少有一個反覆 專案需要一個核准。
- 選取 [在上次反覆 專案上至少需要一個核准],以要求至少一個核准投票才能變更最後一個來源分支。
- 選取 [ 重設所有核准投票](不會重設投票以拒絕或等候) 移除所有核准投票,但每當來源分支變更時,請保留投票以拒絕或等候。
- 選取 [ 重設所有程序代碼檢閱者投票 ],以在來源分支變更時移除所有檢閱者投票,包括要核准、拒絕或等候的投票。
![核取 [需要程序代碼檢閱] 方塊](media/branch-policies/require-minimum-number-of-pr-reviews-2018.png?view=azure-devops-2019)
- 如果未選取要求者可以核准自己的變更,提取要求的建立者仍然可以對其提取要求進行核准,但其投票不會計入檢閱者數目下限。
- 如果有任何檢閱者拒絕變更,除非您選取 [允許完成],否則提取要求無法完成,即使某些檢閱者投票等候或拒絕。
- 當新的變更推送至來源分支時,您可以重設程式代碼檢閱者投票。 選取 [ 重設程序代碼檢閱者投票時有新的變更]。
如果所有其他原則都通過,建立者可以在所需的檢閱者核准時完成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 組態挑選,則為必要 專案。範例: 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 存放庫中提取要求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 |
原則的標識碼。 必要。 |
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 組態挑選,則為必要 專案。範例: 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 組態挑選,則為必要 專案。範例: 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 。 |
minimum-approver-count |
所需的核准者數目下限。 例如: 2 。 |
org |
Azure DevOps 組織 URL。 您可以使用 來設定預設組織 az devops configure -d organization=<ORG_URL> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。範例: 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批注。
將 [檢查批注解析] 設定為 [開啟] 來設定分支的批注解析原則。 然後選取 [ 必要 ] 或 [選擇性] 原則。
如需使用提取要求批注的詳細資訊,請參閱 檢閱提取要求。
選取 [檢查批注解析] 來設定分支的批注解析原則。
![檢查批註解析](media/branch-policies/comment-resolution-2018.png?view=azure-devops-2019)
如需使用提取要求批注的詳細資訊,請參閱 檢閱提取要求。
您可以使用 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 組態挑選,則為必要 專案。範例: 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 組態挑選,則為必要 專案。範例: 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 存放庫分支中main
要封鎖的批注解析原則標識碼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 合併 會在目標分支中建立具有來源分支變更之單一認可的線性歷程記錄。 深入瞭解壁球合併 ,以及它如何影響分支歷程記錄。
- 重新基底和快速轉寄 會建立線性歷程記錄,方法是將來源認可重新執行至目標分支,而不需要合併認可。
- 使用合併認可重新執行來源認可 至目標,並建立合併認可。
注意
此功能適用於 Azure DevOps Server 2020 和更新版本。
您可以使用 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 merge。 藉由將來源分支認可壓縮成目標分支上的單一新認可,以建立線性歷程記錄。 接受的值: 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 組態挑選,則為必要 專案。範例: 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 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。 您可以使用 來設定預設組織 az devops configure -d organization=<ORG_URL> 。 如果未設定為預設,或透過 git 組態挑選,則為必要 專案。範例: 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 命令。
強制執行合併策略
在提取要求完成時強制執行合併策略,以維護一致的分支歷程記錄。
選取 [ 強制執行合併策略 ],然後挑選一個選項,要求使用該策略合併提取要求。
![設定合併需求](media/branch-policies/merge-requirements-2018.png?view=azure-devops-2019)
- 沒有快速向前合併 - 此選項會在提取要求關閉並在目標分支中建立合併認可時合併來源分支的認可歷程記錄。
- Squash 合併 - 使用 squash 合併 完成所有提取要求,並在目標分支中建立單一認可,並具有來源分支的變更。 深入瞭解壁球合併 ,以及它如何影響您的分支歷程記錄。
組建驗證
您可以設定原則,要求PR變更才能順利建置,才能完成PR。
建置原則可減少中斷,並讓您的測試結果保持通過。 即使您在 開發分支上使用持續整合 (CI)來提早捕捉問題,建置原則仍可協助。
當建立新的PR或變更推送至以分支為目標的現有PR時,組建驗證原則會將新組建排入佇列。 建置原則會評估組建結果,以判斷是否可以完成PR。
重要
指定組建驗證原則之前,您必須有組建管線。 如果您沒有管線,請參閱 建立組建管線。 選擇符合專案類型的組建類型。
若要新增組建驗證原則
+選取 [建置驗證] 旁的按鈕。
填寫 [ 設定組建原則 ] 表單:
選取 [建置 管線]。
選擇性地設定 路徑篩選條件。 深入瞭解分支原則中的路徑篩選 。
在 [觸發程式] 底下,選取 [自動] 或 [每當來源分支更新時] 或 [手動]。
在 [原則需求] 底下,選取 [必要] 或 [選擇性]。 如果您選擇 [ 必要],組建必須順利完成才能完成 PR。 選擇 [ 選擇性 ] 提供建置失敗的通知,但仍允許PR完成。
設定組建到期,以確保受保護分支的更新不會中斷開啟PR的變更。
在更新分支名稱>時<立即:此選項會將每當更新分支時PR建置原則狀態設定為失敗,並重新排入組建佇列。 此設定可確保即使受保護的分支變更,PR 變更也會成功建置。
此選項最適合重要分支很少變更的小組。 在忙碌開發分支中工作的小組,在每次分支更新時,都可能會造成干擾,等待組建。
更新<分支名稱>的 n> 小時之後<:如果通過的組建比您輸入的臨界值還舊,則當受保護的分支更新時,此選項會過期目前的原則狀態。 此選項是受保護分支更新時一律或永遠不需要組建之間的妥協。 當您的受保護分支經常更新時,此選項可減少組建數目。
永不:受保護分支的更新不會變更原則狀態。 此值會減少組建數目,但在完成最近未更新的PR時,可能會導致問題。
輸入此組建原則的選擇性 顯示名稱 。 此名稱會 識別 [分支原則 ] 頁面上的原則。 如果您未指定顯示名稱,原則會使用組建管線名稱。
選取 [儲存]。
當PR擁有者推送成功建置的變更時,原則狀態會更新。
如果您在更新分支名稱時<立即有 ,或如果分支名稱>>已更新組建原則,<>則<原則狀態會在受保護的分支更新時更新,如果先前的組建不再有效,則此原則狀態會更新。
注意
此功能適用於 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 |
組建定義標識碼。 必要。 |
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 組態挑選,則為必要 專案。範例: 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 組態挑選,則為必要 專案。範例: 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 命令。
設定原則,要求提取要求中的變更,才能使用受保護的分支成功建置,才能完成提取要求。
建置原則可減少中斷,並讓您的測試結果保持通過。 即使您在 開發分支上使用持續整合 (CI)來提早捕捉問題,建置原則仍可協助。
如果啟用組建驗證原則,當建立新的提取要求或將變更推送至以分支為目標的現有提取要求時,就會將新的組建排入佇列。 然後,建置原則會評估組建的結果,以判斷是否可以完成提取要求。
重要
指定組建驗證原則之前,您必須有組建定義。 如果您沒有組建定義,請參閱 建立組建定義 ,然後選擇符合專案類型的組建類型。
![新增建置原則](media/branch-policies/add-build-policy-2018.png?view=azure-devops-2019)
選擇 [新增建置原則],然後在 [新增建置原則] 中設定您的選項。
![建置原則設定](media/branch-policies/build-policy-settings-2018.png?view=azure-devops-2019)
選取 [建置 定義]。
選擇 [觸發程式] 的類型。 選取 [自動] 或 [ 每當來源分支更新時] 或 [手動]。
選取 [原則 需求]。 如果您選擇 [ 必要],組建必須成功完成才能完成提取要求。 選擇 [ 選擇性 ] 提供建置失敗的通知,但仍允許提取要求完成。
設定組建到期日,以確保受保護分支的更新不會中斷開啟提取要求的變更。
- 更新時
branch name
立即:此選項會將提取要求中的建置原則狀態設定為在受保護分支更新時失敗。 重新排入組建佇列以重新整理組建狀態。 此設定可確保即使受保護的分支變更,提取要求中的變更也會成功建置。 此選項最適合具有較少變更量重要分支的小組。 在忙碌開發分支中工作的小組可能會發現每次更新受保護分支時,等候組建完成可能會造成干擾。
n
更新branch name
數小時后:如果通過的組建比輸入的臨界值還舊,此選項會在受保護的分支更新時過期目前的原則狀態。 此選項在受保護分支更新時一律要求組建,且永遠不需要組建之間有妥協。 當您的受保護分支經常更新時,這個選擇非常適合減少組建數目。
- 永不:受保護分支的更新不會變更原則狀態。 此值會減少分支的組建數目。 關閉最近未更新的提取要求時,可能會造成問題。
輸入此組建原則的選擇性 顯示名稱 。 此名稱會 識別 [分支原則 ] 頁面上的原則。 如果您未指定顯示名稱,原則會使用組建定義名稱。
選取 [儲存]。
當擁有者成功推送建置的變更時,原則狀態會更新。 如果您已立即更新時branch name
,或branch name
n
選擇更新組建原則的後小時,則原則狀態會在最新組建不再有效時更新受保護的分支時更新。
狀態檢查
外部服務可以使用 PR 狀態 API ,將詳細狀態張貼到您的 PR。 其他服務的分支原則可讓這些外部服務參與PR工作流程,並建立原則需求。
如需設定此原則的指示,請參閱 設定外部服務的分支原則。
需要外部服務的核准
外部服務可以使用 PR 狀態 API ,將詳細狀態張貼到您的 PR。 其他服務的分支原則可讓這些外部服務參與PR工作流程,並建立原則需求。
![要求外部服務核准](media/branch-policies/require-approval-from-additional-services-2018.png?view=azure-devops-2019)
如需設定此原則的指示,請參閱 設定外部服務的分支原則。
自動包含程式代碼檢閱者
您可以自動新增檢閱者來提取要求,以變更特定目錄和檔案中的檔案,或提取存放庫中的所有提取要求。
選取 [+自動包含的檢閱者] 旁的按鈕。
填寫 [ 新增檢閱者原則 ] 畫面。
將人員和群組新增至檢 閱者。
如果您想要自動新增檢閱者,但不需要核准才能完成提取要求,請 選取 [選擇性 ]。
或者,如果提取要求無法完成,請選取 [必要 ],直到:
- 以檢閱者身分新增的每個人員都會核准變更。
- 在檢閱者身分新增的每個群組中,至少有一個人核准變更。
- 如果只需要一個群組,您指定核准變更的成員數目下限。
指定需要自動包含檢閱者的檔案和資料夾。 將此欄位保留空白,以要求檢閱者取得分支中的所有提取要求。
如果提取要求擁有者可以投票核准自己的提取要求,以滿足此原則,請 選取 [允許要求者核准自己的變更 ]。
您可以指定 出現在提取要求中的活動摘要訊息 。
選取 [儲存]。
注意
此功能適用於 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 |
要依完全相符專案篩選結果的存放庫標識碼。 例如: --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 組態挑選,則為必要 專案。範例: 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 組態挑選,則為必要 專案。範例: 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 命令。
選取存放庫中特定目錄和檔案的檢閱者。
![輸入路徑和必要的檢閱者](media/branch-policies/require-specific-reviewers-2018.png?view=azure-devops-2019)
這些檢閱者會自動新增至提取要求,這些要求會沿著這些路徑變更檔案。 您也可以指定 活動摘要訊息。
![新增自動檢閱者](media/branch-policies/automatically-include-reviewers-for-pull-requests-2018.png?view=azure-devops-2019)
如果您選取 [ 必要],則提取要求必須等到下列時間才能完成:
- 每位新增為路徑檢閱者的用戶都會核准變更。
- 每個新增至路徑的群組中至少有一個人核准變更。
- 針對新增至路徑的每個群組所指定的檢閱者數目會核准變更。
![會自動新增必要的檢閱者](media/branch-policies/required-reviewer-added.png?view=azure-devops-2019)
如果您想要自動新增檢閱者,但不需要核准才能完成提取要求,請 選取 [選擇性 ]。
您可以選取 [ 要求者可以核准自己的變更]。
當所有必要的檢閱者核准程序代碼時,您可以完成提取要求。
![提取要求狀態顯示檢閱者已核准](media/branch-policies/required-reviewer-approved.png?view=azure-devops-2019)
略過分支原則
在某些情況下,您可能需要略過原則需求。 略過許可權可讓您直接將變更推送至分支,或完成不符合分支原則的提取要求。 您可以將略過許可權授與使用者或群組。 您可以將略過許可權的範圍設定為整個專案、存放庫或單一分支。
兩個許可權可讓使用者以不同的方式略過分支原則:
![顯示略過原則強制執行許可權的螢幕快照。](media/branch-policies/policy-exempt-permission.png?view=azure-devops-2019)
如需管理這些許可權的詳細資訊,請參閱 Git 許可權。
在 TFS 2015 到 TFS 2018 Update 2 中, 豁免原則強制執行 許可權可讓具有此許可權的使用者執行下列動作:
- 選擇加入覆寫原則並完成提取要求,即使目前的分支原則集未滿足也一樣。
- 即使該分支已設定分支原則,仍直接推送至分支。 當具有此許可權的用戶進行會覆寫分支原則的推送時,推送會自動略過沒有選擇加入步驟或警告的分支原則。
重要
授與略過原則的能力時請小心,特別是在存放庫和專案層級。 原則是安全且相容的原始程式碼管理的基石。
路徑篩選
數個分支原則提供路徑篩選。 如果設定路徑篩選條件,原則只會套用至符合路徑篩選條件的檔案。 將此欄位保留空白表示原則會套用至分支中的所有檔案。
您可以指定絕對路徑(路徑必須以 /
或通配符開頭)和通配符。
範例:
/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 檔案。
必要的程式代碼檢閱者路徑是否區分大小寫?
否,分支原則不會區分大小寫。
您可以將 使用者新增至群組,然後將群組新增為檢閱者。 然後,群組的任何成員都可以核准以符合原則需求。
我有略過原則許可權。 為什麼我仍然會在提取要求狀態中看到原則失敗?
一律會評估已設定的原則以進行提取要求變更。 對於具有略過原則許可權的使用者,報告的原則狀態僅為諮詢。 如果具有略過許可權的使用者核准,失敗狀態不會封鎖提取要求完成。
為什麼「允許要求者核准自己的變更已設定」時,無法完成自己的提取要求?
[需要最少數目的檢閱者] 原則和 [自動包含的檢閱者] 原則都有 [允許要求者核准自己的變更] 選項。 在每個原則中,此設定僅適用於該原則。 此設定不會影響其他原則。
例如,您的提取要求已設定下列原則:
- 需要至少一個檢閱者 數目的檢閱者。
- 自動包含的檢閱者 會要求您或身為檢閱者的小組。
- 自動包含的檢閱者 已 允許要求者核准啟用自己的變更 。
- 需要最少數目的檢閱者 沒有 [允許要求者核准自己的變更 ] 啟用。
在此情況下,您的核准會 滿足自動包含的檢閱者,但不需要 最少的檢閱者數目,因此您無法完成提取要求。
還有其他原則,例如禁止最新的推播者核准自己的變更,讓您無法核准自己的變更,即使已設定 [允許要求者核准自己的變更] 也一樣。
當路徑篩選中的路徑不是以 /
通配符開頭或以通配符開頭時,會發生什麼事?
路徑篩選中未以 或 通配符開頭 /
的路徑沒有作用,且路徑篩選條件會評估為未指定該路徑。 這類路徑與絕對檔案路徑開頭不符 /
。
相關文章