
1. 什麼是 Azure Repos
Azure Repos 是一組版本控制工具,可用于管理代碼。無論您的軟體項目是大型項目還是小型項目,都應盡快使用版本控制。
版本控制系統是可幫助您跟蹤随時間變化對代碼所做的更改的軟體。在編輯代碼時,您告訴版本控制系統對檔案進行快照。版本控制系統會永久儲存該快照,以便以後需要時可以重新調用它。使用版本控制來儲存您的工作并協調整個團隊中的代碼更改。
即使您隻是一個開發人員,版本控制也可以幫助您在修複錯誤和開發新功能時保持井井有條。版本控制保留了您的開發曆史,是以您可以輕松檢視甚至復原到任何版本的代碼。
Azure Repos提供兩種類型的版本控制:
- Git:分布式版本控制
- Team Foundation版本控制(TFVC):集中式版本控制
上面是官方文檔的内容。雖然給出了兩個選項,但現在大部分人都對 Git 比較熟悉,我也假設讀者對 Git 有一定了解而無需多做解釋。
2. 建立項目
在上一篇文章裡我已經建立了一個項目并且選擇了 Git 作為版本控制方式,在 Azure Devops 左邊菜單選中 “Files” 進入檔案頁面,首先看到的就是上圖這樣的畫面。可以看到除了剛建立的存儲庫,還可以添加新的存儲庫或導入其它存儲庫。這篇文章我将配合最新版本的 Visual Studio 16.9 從頭開始建立項目并介紹 Azure Repos 的基本功能。
因為現有的視訊和教程幾乎都是圍繞 Azure 和 Asp.net 講解 Azure Repos 和 Pipelines,是以我特地選擇 WPF 應用來實作同樣的功能。
首先複制下面這個連結,然後打開 Visual Studio,随便建立一個 WPF .Net Framework 項目。
建立項目後在 Visual Studio 右下角找到“添加到源代碼管理器”按鈕,選擇“Git”。
在彈出的建立Git存儲庫對話框選擇“現有遠端”,在 Remote URL 中粘貼剛剛複制的連結。點選建立并推送。
完成後,Visual Studio 右下角應該是這個樣子,代表現在是 wpf 存儲庫的 master 分支。
重新整理 Files 頁面,可以看到剛剛建立的項目已經上傳到 master 分支了。
3. 使用政策保護分支
建立好分支後,代碼就已經在團隊裡共享。通常來說團隊中的人都需要修改代碼,但将代碼送出到 master 分之前需要先通過 CodeReview。接下來将介紹如何在 Azure Repos 中通過 Branch Policies(分治政策)保護代碼安全性。
在左側菜單中選中 Branches,進入 Branches 頁面後可以看到剛剛建立的 master 分支。點選右側的”More… “按鈕,然後選擇”Brance policies“進入 master 分支的分支政策頁面。
如下圖所示,在 Branch Policies,打開“Require a minimum number of reviewers”選項,将“Minimum number of reviewers”這是為 1,打開“When new changes are pushed:”并選中“Reset all code reviewer votes”。
這樣設定完以後,master 分支就不能删除,并且隻能通過 Pull Request 修改;最少需要一個 Code reviewer;PR 每次發生更改都重置代碼審閱者的投票。
下面還可以選中“Check for linked work items”,避免無緣無故的代碼送出。
“Build Validation”涉及到 Pipelines 的内容,下一篇再解釋。
最後添加一些 Code reviewer,Optional 辨別可選的,即如果有多個 Code reviewer,隻需要其中一個通過就可以簽入到 master 分支。最好取消“Allow requestors to approve their own changes”。
4. 通過 Pull Request 修改代碼
假設項目裡有一個“添加單元測試”的 PBI 及它的 Task,現在我需要添加單元測試并修改一些代碼後送出到 master 分支。但之前修改了分支政策後就不可以直接修改代碼,而需要通過 Pull Request。
首先我需要建立分支,然後随便更新些代碼。然後在 Visual Studio 右下角點選這個按鈕。
在 “Git 更改” 頁面輸入送出的消息,并且輸入 #1 #2,關聯 ID 号為 1 和 2 的工作項。然後選中“全部送出并推送”。
然後回到 Azure Devops,在左側菜單選中 Pull requests,在 Pull requests 頁面可以看到系統貼心地提示我要不要建立一個 Pull request,從了它,點選“Create a pull request”。
在建立 Pull request 的頁面可以看到這個 PR 有 1 個送出并修改了 9 個檔案,系統已經貼心幫我填好 Title,并關聯了兩個工作項。點選“Create”建立完成 Pull request 的建立。
順便一提,如果标題有“[WIP]”,右下角的按鈕會預設選中“建立為草稿”。
Pull request 建立後,在 PR 的詳細頁面可以看到它的内容、是否沖突、關聯的工作項、曆史記錄等。這時候隻需要等待一個 code reviewer 稽核通過,通過後右上角的藍色按鈕會變成“Complete”,點選即可完成這個 PR 并将代碼合并到 master 分支。
也可以點選右上角的“Set auto-complete”按鈕,設定為當稽核通過後馬上自動完成。可以選中“Complete associated work items after merging”,這樣 Pull request 完成後管理的 work item (在這裡隻有 Task 會自動完成,PBI 還是需要人手操作)也會被自動完成。