Git代碼版本控制流程

我們的項目使用Git作爲代碼倉庫、和版本控制工具。

Git有幾種Workflow,來管理代碼版本變更流程,我們採用Gitflow Workflow流程。

 

 

Gitflow Workflow,採用了master、develop、release、feature、hotfix等幾個分支。master、develop分支的生命週期是永久的,release、feature、hotfix分支都是輔助分支,其生命週期是短暫的。

各個分支的作用及意義,見下。 

master分支

master分支用於保存官方發佈歷史,與線上的版本一致。要確保任何時候從master分支都可以拿到處於可發佈狀態的代碼。

一個工程只有一個master分支,創建Git工程後自動創建,生命週期爲永久。

跟master分支打交道的分支有release分支、hotfix分支:

  • 測試通過後,“配置管理員”(以下簡稱爲“配管”)將release分支合併到master分支。
  • 線上緊急修復後,“配管”將hotfix分支合併回master分支。

release分支合併到master分支後,需要在master分支上打Tag(記錄里程碑),標記官方發佈的版本號。

版本號的命名規則

命名規則:vx.y.z

  • x: 大版本號,有重大功能發佈時升位。
  • y:中版本號,增加新功能或功能優化改進時升位。
  • z:小版本號,有hotfix時升位。

 

“配管”負責在master分支上打Tag。

 

develop分支

develop是開發集成的分支,所有開發完成的代碼提交到此分支。功能累積到一定程度或者週期性發佈需要提測時,從此分支遷出代碼到release分支,進行測試。要確保任何時候都可以從develop分支拿到最新開發進展的代碼。

一個工程只有一個develop分支,最初由“配管”創建,生命週期爲永久。

跟develop分支打交道的分支有release分支、hotfix分支、feature分支:

  • “開發主管”提測時,“配管”從develop分支遷出代碼到release分支。
  • release分支測試通過後,“配管”將release分支合併回develop分支。
  • 線上緊急修復後,“配管”將hotfix分支合併到develop分支。
  • 功能開發完成後,“開發主管”(需要多人協作開發的feature)或各個開發(獨立開發的feature)將feature分支合併到develop分支。

 

release分支

release是測試分支,用於測試某個待發布的版本。從develop分支遷出代碼到release分支,凍結代碼(除了修改bug),進行測試。測試通過後合併到master分支,正式發佈。

release分支使得待發布版本的測試與新版本的開發活動可以並行,互不干擾。

一個工程有多個release分支,一個待測試的、準備發佈的版本一個分支。release分支的生命週期不是永久的,最初起源於develop分支,最終歸於master和develop分支。提測時,“配管”創建一個release分支;測試通過、合併到master分支及develop分支後,“配管”刪除該分支。

跟release分支打交道的分支有develop分支、master分支:

  • “開發主管”提測時,“配管”從develop分支遷出代碼、創建一個release分支。
  • release分支測試通過後,“配管”將release分支合併到master分支,同時合併回develop分支。

release分支的命名規則

命名規則:release_x.y.z

x、y、z的意義,同master的Tag。因爲release分支一般用於發佈新功能或功能優化改進,所以x、y會有升位,z取0。

測試、開發修改bug,都是在release分支上進行。在此期間,應嚴禁新功能的代碼併入release分支,應合併到develop分支。

 

feature分支

feature分支是各個功能的開發分支,開發完成後合併到develop分支。

feature分支使得多個人可以並行開發,互不干擾。

一個工程有多個feature分支,一個feature一個分支。feature分支的生命週期不是永久的,最初起源於develop分支,最終也歸於develop分支。開始開發一個新功能時,由“開發主管”或開發自己創建一個feature分支;功能開發完成、合併到develop分支後,“開發主管”或開發自己刪除該分支。

跟feature分支打交道的分支只有develop分支:

  • 對於需要多人協作開發的feature:“開發主管”從develop分支遷出代碼、創建一個feature分支,然後通知給需要協作的各個開發;各個開發在此分支上提交代碼。各個開發的代碼都提交後,“開發主管”將該feature分支合併到develop分支,然後刪除該分支。
  • 對於不需協作、開發可獨立完成的feature:可以由開發自己從develop分支遷出代碼、創建一個feature分支;開發完成後,開發自己將該feature分支合併到develop分支,然後刪除該分支。

feature分支的命名規則

命名規則:feature_xxx
xxx爲功能的名稱,如notification(通知)、circle(圈子)等。

hotfix分支

hotfix分支用於緊急修復線上的bug。

hotfix分支使得線上bug的緊急修復,與待發布版本的測試、以及新版本的開發活動可以並行,互不干擾。

一個工程有多個hotfix分支,一次hotfix創建一個分支。hotfix分支的生命週期不是永久的,最初起源於master分支,最終歸於master和develop分支。提出hotfix時,“配管”創建一個hotfix分支;bug修改完成、合併回master分支以及develop分支後,“配管”刪除該分支。

跟hotfix分支打交道的分支有master分支、develop分支:

    • 需要緊急修復線上bug時,“配管”從master分支的某個Tag(一般是最新的)遷出代碼、創建一個hotfix分支。
    • bug修改完成、測試通過後,“配管”將該hotfix分支合併回master分支,同時合併到develop分支。 

hotfix分支的命名規則

命名規則:hotfix_yyyymmmdd

yyyymmdd爲提出hotfix的日期,一般情況下hotfix的bug必須當天修復、發佈。

 hotfix分支合併回master分支後,需要在master分支上打一個Tag,標記當前版本,小版本號升位。

 

 具體到一個工程中,各個階段的具體流程爲:

項目啓動

 

準備開發環境

 

 

測試流程

 發佈流程:

 

 

hotfix流程:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章