使用提取要求進行共同作業
提取要求可讓您將您推送至 GitHub 存放庫的變更告訴其他人。
傳送提取要求之後,相關人員就可以檢閱變更集合、討論可能的修改,甚至視需要推送後續認可。
小組和組織經常使用共用存放庫模型,使用提取要求來進行共同作業。
每個人都共用單一存放庫,並會使用主題分支來開發功能和隔離變更。
GitHub 上的許多開放原始碼專案都使用提取要求來管理來自參與者的變更。
其可協助提供一種方式來通知專案維護人員關於已進行的變更。
此外,可在將一組變更合併至主分支之前,先對其進行程式碼檢閱和一般討論。
提取要求會將程式碼的檢閱與合併,結合在單一的共同作業程序內。
當您在分支中修正好錯誤或新功能時,請建立新的提取要求。
將小組成員新增至提取要求,讓他們可以檢閱您的變更並進行投票。
使用提取要求來檢閱進行中的工作,並取得關於變更的早期意見反應。
由於擁有者可以隨時放棄提取要求,因此在合併變更上並不存在任何承諾。
讓您的程式碼接受檢閱
在提取要求中完成程式碼檢閱並不只是要尋找錯誤 (Bug),那主要是測試的工作。
良好的程式碼檢閱能夠攔截到較不明顯的問題,這些問題可能會在未來導致成本高昂的問題。
程式碼檢閱可協助保護您的小組免於發生不良的合併和中斷的組建,進而影響到小組的生產力。
檢閱會在合併之前攔截這些問題,保護您的基本分支免於不必要的變更。
透過在程式碼檢閱中使用各式各樣的檢閱者,來利用跨領域的專業知識及廣泛的問題解決策略。
將技能與知識多元化,可讓您的小組更強固且更具彈性。
提供絕佳的意見反應
高品質的檢閱是從高品質的意見反應開始。 在提取要求中提供絕佳意見反應的關鍵包括:
- 讓適當的人員檢閱提取要求。
- 確定檢閱者知道程式碼的功能。
- 提供可採取動作、具建設性的意見反應。
- 盡快回覆留言。
將檢閱者指派給您的提取要求時,請確定您選取的是一組正確的檢閱者。
檢閱者應該要能明白您程式碼的運作方式;您也應該嘗試包括在其他領域中工作的開發人員,使他們能分享其想法。
此外,檢閱者也應該要能針對您的變更提供清楚的描述,並建置能夠執行您的修正或功能的程式碼。
檢閱者應該嘗試針對他們不同意的變更提供意見反應。 找出問題,並針對您所會採取的不同方式提供確切的建議。
此意見反應應具備清楚的意圖,且能夠讓提取要求的擁有者輕鬆理解。
提取要求擁有者應該要回覆留言、接受建議,或說明建議的變更不理想的原因。
有時候,雖然建議本身是好的,但其變更會超出提取要求的範圍。
若要採納這些建議,請與提取要求分開建立新的工作項目和功能分支以進行那些變更。
使用原則保護分支
您的存放庫通常包含一或多個分支,包括主分支,有鑑於主分支的重要性,因此需要額外保護。 Azure Repos 提供數個原則型機制,為協助您達成此目標應考慮實作。
這些機制的基本前提,是在提取要求套用條件約束。 舉例而言,您可以包含強制執行特定程式碼檢閱原則,例如在合併提取要求之前,要求至少獲得指定檢閱者的核准數下限。 利用集體專業知識,勢必能加強程式碼變更的品質和可靠性。
此外,請考慮實作連結工作項目原則的檢查。 檢查可確認每個提取要求皆與工作項目連結,提供內容並提升可追蹤性。 註解解析原則檢查有助於確保,合併提取要求之前,會先處理所有程式碼檢閱註解。
與自動化程式碼分析、測試和合規性檢查相關的原則,會在整合之前確認變更符合預先定義的標準。 限制合併類型有助於維護控制分支歷程記錄。 例如,您可以選擇只允許向前快轉和壓縮合併。
允許新程式碼版本合併到重要分支之前,也可以先授權全新組建。 這可確保合併的變更不會造成組建失敗或迴歸問題。 狀態檢查可用於根據外部服務產生的訊號完成提取要求。 例如,這類訊號可由執行自動化測試和程式碼分析的 Azure Pipelines 產生。
任何已設定必要原則的分支都會自動封鎖直接推送,有效強制執行所有變更的提取要求。 此外,這類分支無法刪除。