分支管理
創建項目時,會針對不同環境創建兩個常設分支(也可以算主分支,永久不會刪除):
- master :生產環境的穩定分支,生產環境基於該分支構建。僅用來發布新版本,除了從 release 測試分支或 hotfix-* Bug修復分支進行merge,不接受任何其它修改。
master 分支上存放的應該是隨時可供在生產環境中部署的代碼(Production Ready state)。當開發活動告一段落,產生了一份新的可供部署的代碼時, master 分支上的代碼會被更新。同時,每一次更新,最好添加對應的版本號標簽。
- develop :開發環境的穩定分支,公共開發環境基於該分支構建, develop 分支是保存當前最新開發成果的分支。也就是說develop分支來源於feature、release、hotfix-*分支。
平時開發工作中,會根據需要由開發人員創建四類臨時分支(也可以算輔助分支,用完立即刪除):
- feature-* :功能分支,是為了開發某個特定功能,從 develop 分支上面分出來的。開發完成后,要merge到 develop 分支。功能分支的命名,采用 feature-* 的形式命名(*為任務單號)
- release :測試環境的穩定分支,本分支是從develop分支派生出來的,測試人員在該分支進行測試並提交Bug,開發人員基於該分支派生的bugfix-*分支進行bug修復,最終再合並回release分支,待測試完成,該分支必須合並回develop分支和master分支。
- bugfix-* :測試階段修復Bug用此類分支命名,該分支是為了修復某個bug,從 release 分支上面分出來的。修復完成后,再合並回 release 分支。Bug修復分支的命名,采用 bugfix-* 的形式命名(*為bug單號)
- hotfix-* :線上出現的緊急Bug,需要及時修復用此類分支命名,從 master 分支切換出來的分支,修復之后合並回 master 和 develop 。
流程規范
正常開發流程
- 從 develop 分支切出多個命名為 feature-* 分支開發新功能。
- 開發者完成開發,提交分支到遠程倉庫。
- 開發者發起merge請求(可在gitlab頁面“New merge request”),將新分支請求merge到 develop 分支,並提醒code reviewer進行review
- code reviewer對代碼review之后,若無問題,則接受merge請求,新分支merge到 develop 分支,同時可刪除新建分支;若有問題,則不能進行merge,可close該請求,同時通知開發者在新分支上進行相應調整。調整完后提交代碼重復review流程。
- 轉測時,直接從當前 develop 分支merge到 release 分支,重新構建測試環境完成轉測。
- 測試完成后,從release分支merge到 master 分支,基於 master 分支構建生產環境完成上線。並對 master 分支打tag,tag名可為v1.0.0_2019032115(即版本號_上線時間)
生產環境Bug修復流程
生產環境的Bug分兩種情況:
- 緊急Bug:嚴重影響用戶使用的為緊急Bug,需立即進行修復。如關鍵業務流程存在問題,影響用戶正常的業務行為。
- 非緊急Bug或優化:非關鍵業務流程問題,僅影響用戶使用體驗,或出現頻率較小等,為非緊急Bug,可規划到后續版本進行修復。
第二種情況非緊急Bug修復參考“正常開發流程”。
第一種緊急Bug修復,需要從 master 分支切出一個bug修復分支,完成之后需要同時merge到 master 分支與 develop 分支(如果需要測試介入驗證,則可先merge到 release 分支,驗證通過后再merge到 master 分支上線)。merge時參考“正常開發流程”。流程示意圖如下