1.什么是 Azure Repos
Azure Repos 是一組版本控制工具,可用于管理代碼。無(wú)論您的軟件項(xiàng)目是大型項(xiàng)目還是小型項(xiàng)目,都應(yīng)盡快使用版本控制。
版本控制系統(tǒng)是可幫助您跟蹤隨時(shí)間變化對(duì)代碼所做的更改的軟件。在編輯代碼時(shí),您告訴版本控制系統(tǒng)對(duì)文件進(jìn)行快照。版本控制系統(tǒng)會(huì)永久保存該快照,以便以后需要時(shí)可以重新調(diào)用它。使用版本控制來(lái)保存您的工作并協(xié)調(diào)整個(gè)團(tuán)隊(duì)中的代碼更改。
即使您只是一個(gè)開(kāi)發(fā)人員,版本控制也可以幫助您在修復(fù)錯(cuò)誤和開(kāi)發(fā)新功能時(shí)保持井井有條。版本控制保留了您的開(kāi)發(fā)歷史,因此您可以輕松查看甚至回滾到任何版本的代碼。
Azure Repos提供兩種類型的版本控制:
Git:分布式版本控制
Team Foundation版本控制(TFVC):集中式版本控制
上面是官方文檔的內(nèi)容。雖然給出了兩個(gè)選項(xiàng),但現(xiàn)在大部分人都對(duì) Git 比較熟悉,我也假設(shè)讀者對(duì) Git 有一定了解而無(wú)需多做解釋。
在上一篇文章里我已經(jīng)創(chuàng)建了一個(gè)項(xiàng)目并且選擇了 Git 作為版本控制方式,在 Azure Devops 左邊菜單選中 “Files” 進(jìn)入文件頁(yè)面,首先看到的就是上圖這樣的畫(huà)面。可以看到除了剛創(chuàng)建的存儲(chǔ)庫(kù),還可以添加新的存儲(chǔ)庫(kù)或?qū)肫渌鎯?chǔ)庫(kù)。這篇文章我將配合最新版本的 Visual Studio 16.9 從頭開(kāi)始創(chuàng)建項(xiàng)目并介紹 Azure Repos 的基本功能。
因?yàn)楝F(xiàn)有的視頻和教程幾乎都是圍繞 Azure 和 Asp.net 講解 Azure Repos 和 Pipelines,所以我特地選擇 WPF 應(yīng)用來(lái)實(shí)現(xiàn)同樣的功能。
首先復(fù)制下面這個(gè)鏈接,然后打開(kāi) Visual Studio,隨便創(chuàng)建一個(gè) WPF .Net Framework 項(xiàng)目。
創(chuàng)建項(xiàng)目后在 Visual Studio 右下角找到“添加到源代碼管理器”按鈕,選擇“Git”。
在彈出的創(chuàng)建Git存儲(chǔ)庫(kù)對(duì)話框選擇“現(xiàn)有遠(yuǎn)程”,在 Remote URL 中粘貼剛剛復(fù)制的鏈接。點(diǎn)擊創(chuàng)建并推送。
完成后,Visual Studio 右下角應(yīng)該是這個(gè)樣子,代表現(xiàn)在是 wpf 存儲(chǔ)庫(kù)的 master 分支。
刷新 Files 頁(yè)面,可以看到剛剛創(chuàng)建的項(xiàng)目已經(jīng)上傳到 master 分支了。
創(chuàng)建好分支后,代碼就已經(jīng)在團(tuán)隊(duì)里共享。通常來(lái)說(shuō)團(tuán)隊(duì)中的人都需要修改代碼,但將代碼提交到 master 分之前需要先通過(guò) CodeReview。接下來(lái)將介紹如何在 Azure Repos 中通過(guò) Branch Policies(分治策略)保護(hù)代碼安全性。
在左側(cè)菜單中選中 Branches,進(jìn)入 Branches 頁(yè)面后可以看到剛剛創(chuàng)建的 master 分支。點(diǎn)擊右側(cè)的”More… “按鈕,然后選擇”Brance policies“進(jìn)入 master 分支的分支策略頁(yè)面。
如下圖所示,在 Branch Policies,打開(kāi)“Require a minimum number of reviewers”選項(xiàng),將“Minimum number of reviewers”這是為 1,打開(kāi)“When new changes are pushed:”并選中“Reset all code reviewer votes”。
這樣設(shè)置完以后,master 分支就不能刪除,并且只能通過(guò) Pull Request 修改;最少需要一個(gè) Code reviewer;PR 每次發(fā)生更改都重置代碼審閱者的投票。
下面還可以選中“Check for linked work items”,避免無(wú)緣無(wú)故的代碼提交。
“Build Validation”涉及到 Pipelines 的內(nèi)容,下一篇再解釋。
最后添加一些 Code reviewer,Optional 標(biāo)識(shí)可選的,即如果有多個(gè) Code reviewer,只需要其中一個(gè)通過(guò)就可以簽入到 master 分支。最好取消“Allow requestors to approve their own changes”。
假設(shè)項(xiàng)目里有一個(gè)“添加單元測(cè)試”的 PBI 及它的 Task,現(xiàn)在我需要添加單元測(cè)試并修改一些代碼后提交到 master 分支。但之前修改了分支策略后就不可以直接修改代碼,而需要通過(guò) Pull Request。
首先我需要新建分支,然后隨便更新些代碼。然后在 Visual Studio 右下角點(diǎn)擊這個(gè)按鈕。
在 “Git 更改” 頁(yè)面輸入提交的消息,并且輸入 #1 #2,關(guān)聯(lián) ID 號(hào)為 1 和 2 的工作項(xiàng)。然后選中“全部提交并推送”。
然后回到 Azure Devops,在左側(cè)菜單選中 Pull requests,在 Pull requests 頁(yè)面可以看到系統(tǒng)貼心地提示我要不要?jiǎng)?chuàng)建一個(gè) Pull request,從了它,點(diǎn)擊“Create a pull request”。
在創(chuàng)建 Pull request 的頁(yè)面可以看到這個(gè) PR 有 1 個(gè)提交并修改了 9 個(gè)文件,系統(tǒng)已經(jīng)貼心幫我填好 Title,并關(guān)聯(lián)了兩個(gè)工作項(xiàng)。點(diǎn)擊“Create”創(chuàng)建完成 Pull request 的創(chuàng)建。
順便一提,如果標(biāo)題有“[WIP]”,右下角的按鈕會(huì)默認(rèn)選中“創(chuàng)建為草稿”。
Pull request 創(chuàng)建后,在 PR 的詳細(xì)頁(yè)面可以看到它的內(nèi)容、是否沖突、關(guān)聯(lián)的工作項(xiàng)、歷史記錄等。這時(shí)候只需要等待一個(gè) code reviewer 審核通過(guò),通過(guò)后右上角的藍(lán)色按鈕會(huì)變成“Complete”,點(diǎn)擊即可完成這個(gè) PR 并將代碼合并到 master 分支。
也可以點(diǎn)擊右上角的“Set auto-complete”按鈕,設(shè)置為當(dāng)審核通過(guò)后馬上自動(dòng)完成??梢赃x中“Complete associated work items after merging”,這樣 Pull request 完成后管理的 work item (在這里只有 Task 會(huì)自動(dòng)完成,PBI 還是需要人手操作)也會(huì)被自動(dòng)完成。
這時(shí)候 reviewer 會(huì)收到通知要做 review,然后他就可以來(lái)看看這個(gè) Pull request 做了些什么,沒(méi)問(wèn)題的話他就可以 Approve 這個(gè) Pull request。