概述:
拉取請求(Pull Request)是Azure DevOps Server (之前稱為TFS)系統中用於代碼評審和分支合並的管理流程。使用拉取請求,代碼評審人員可以記錄記錄代碼評審過程中發現的問題、潛在的漏洞、創造性的亮點等。
在代碼評審過程中,創建一個具有指導性的描述文檔,可以幫助評審人員更好的了解評審過程中需要注意的事項,以便提高代碼評審的效率和質量,提高評審人員和程序員之間的溝通效率。
在Azure DevOps Server 中,系統提供了一種自動生成拉取請求描述文檔的機制。本文主要介紹如何使用拉取請求的模板功能實現自動生成描述文件(如下圖)。
圖一:拉取請求描述文檔
拉取請求模板
拉取請求模板實際上是一個文本(.txt)或者markdown(.md)文件。當開發人員創建拉取請求的時候,Azure DevOps Server 會自動將這個文件的內容添加到拉取請求描述文字中,從而實現描述文檔的標准話,並大幅提高拉取請求的創建速度。
例如下表中的內容是我們項目組定義的拉取請求標准文檔,在后續的示例中,我們將為你介紹如何將這些Markdown文字添加到拉取請求中。
感謝您參與代碼評審工作,請注意:
# 代碼創建者需要:
- [ ] 確保代碼通過了自動編譯流水線,並沒有任何錯誤和警告.
- [ ] 為新增的代碼添加單元測試用例
- [ ] 在本地使用CodeCC和安全掃描工具時,確保通過所有質量控制門禁
#代碼評審者需要:
- [ ] 在代碼評審過程中,使用團隊成員認可的專業術語
- [ ] 在代碼評審過程中,對開發人員的亮點成果和存在的問題創建備注;
- [ ] 在代碼評審完成后,對本次評審做出批准或拒絕的結論;
目前最新的Azure DevOps Server (2019.1.1)支持三種拉取請求模板:
- 默認模板:在創建拉取請求過程中,系統會按照特定的規則,自動將默認模板內容添加到拉取請求中。
- 分支模板:在創建拉取請求過程中,系統會為目標分支指定模板文件,並自動添加到拉取請求的的說明文檔中。
- 自選模板:在創建拉取請求過程中,用戶可以自由選擇拉取請求模板,並將其添加到拉取請求的的說明文檔中。
無論是使用模板模板、分支模板,還是自選模板,實際上都取決於模板文檔的存放位置和命名。模板文件和存放目錄的名稱不區分大小寫,但是必須存放在默認分支中。
默認模板
默認模板文件中的內容會自動添加到拉取請求中,下面是默認模板的幾個規則:
- 存放分支:拉取請求模板文檔必須保存在默認分支中
- 文件命名:可以使用這兩個文件命名,pull_request_template.md或pull_request_template.txt
- 存放目錄和順序:可以存放在根目錄中,也可以存放在這幾個文件夾中,系統按照下面的順序使用文檔內容
- /.azuredevops/pull_request_template.md
- /.vsts/pull_request_template.md
- /docs/pull_request_template.md
- /pull_request_template.md
微軟設計可以在多個文件夾中存放模板文件,主要是為了考慮文檔的便捷性,並適應不同系統、不同開發團隊的文檔組織習慣。
如果我們已經在默認分支中創建了上面的拉取請求模板文件,但我們創建一個拉取請求的時候,系統會自動將文檔中的內容添加到拉取請求描述文檔中,如下圖:
圖二:模板文件存放在默認分支中
圖三:系統自動添加拉取請求模板文件中的內容
分支模板
分支模板,是指只應用與特定目標分支的拉取請求模板文檔。例如我們在創建一個拉取請求,目標分支dev,那么系統會自動將拉取請求文檔dev.md中的內容添加到拉取請求描述文檔中。
分支模板的同樣需要存儲在默認分支中,但是文檔的命名規則和默認模板有區別。分支模板必須以目標分支的名稱命名,例如dev.md、release.md、dev.txt等。
例如我們創建一個模板文件/pull_request_template/branches/release.md,當創建拉取請求的目標分支為release/*時(release目錄下的分支),系統自動將文件的內容添加到拉取請求中。如下圖:
圖四:分支模板的存放路徑
圖五:創建目標分支為release/V1.0.0.0的分支時,系統自動將release.md中的內容添加到拉取請求中
自選模板
我們按照上面的規則創建了拉取請求模板文檔,Azure DevOps Server 會自動添加拉取請求模板文檔中的內容。開發人員也可以在創建拉取請求時,自助選擇使用哪個模板文件中的內容。
在拉取請求創建頁面中,你可以點擊“添加模板”按鈕,並從下拉框中選擇模板分支中的模板文件,並將其中的內容添加到說明文字中(如下圖)
圖六:自助選擇拉取請求模板
------------------------------------------------------------
http://www.cnblogs.com/danzhang/ DevOps MVP 張洪君
------------------------------------------------------------