天天看點

産品開發中的一種Git分支工作方法

雲和安全管理服務專家新钛雲服 王洧濱原創

一、前言

Git作為版本控制管理工具中的優秀代表,其分支管理功能使得團隊協同開發成為一件非常簡單的事情。本文介紹一種産品開發中的Git分支工作方法,以供探讨。

二、産品的軟體版本号定義

軟體版本号定義,分四項:主版本号.子版本号.修訂号.Build号,如:V1.3.2.123

軟體hotfix版本号定義,分四項:主版本号.子版本号.修訂号.修補号,如:V1.3.2.125

版本号 說明 備注
主版本号 系統業務重構或架構重構時增加;重大功能或方向改變時增加;大範圍不相容之前的接口時增加。
子版本号 增加新的業務功能時增加。
修訂号 有改動就增加。 從0開始
修補号 hostfix版本号基于所修複的版本的Build号,取釋出版本的最大的Build号往上增加如果修複基于V1.3.2.1,則hotfix版本為V1.3.2.2如果目前釋出版本的Build版本是V1.3.2.101,目前最大Build号為105,則修補版本号為V1.3.2.106 從1開始
Build号 編譯号,有編譯就增加。 從1開始

三、Git分支命名

1、基本分支

分支命名 說明 生命周期
master 記錄上線版本的疊代,該分支代碼與線上代碼是完全一緻的主分支 項目存在期間存續,項目下線之後歸檔
dev 記錄開發代碼活動曆史 同master
test 記錄測試活動曆史 同master
feature-(ver)-(name) 屬于開發個人的代碼活動曆史記錄,如David正在開發1.0.1版本,則分支名為:feature-v1.0.1-david 版本開始開發至版本釋出,版本釋出後結束

2、擴充分支

分支命名 說明 生命周期
hostfix-(ver) 線上版本的緊急修複代碼分支,開發與測試都采用同一分支 版本開始開發至版本釋出
dev-(company) 記錄針對特定需求的定制化版本的開發代碼活動曆史 項目存在期間存續,項目下線之後歸檔
test-(company) 記錄針對特定需求的定制化版本的測試代碼活動曆史 同dev-(company)
feature-(company)-v1.0.2-(name) 屬于開發個人的定制化版本的開發代碼活動曆史記錄,如David正在開發的定制化阿裡公司的1.0.1版本,則分支名為:feature-ali-v1.0.1-david 版本開始開發至版本釋出,版本釋出後結束
dev-v1.0.2 多分支并發開發時,記錄特定版本的開發代碼活動曆史 版本開始開發至版本釋出
test-v1.0.2 多分支并發開發時,記錄特定版本的測試代碼活動曆史 版本開始開發至版本釋出

3、tags

tag命名 說明 生命周期
tag-v(ver) 僅針對釋出版本打tag,如:tag-v1.0.0.1 項目存在期間存續,項目下線之後歸檔

四、Git分支工作規範

1、分支工作基本原則

  • master:系統版本的準線,版本通過測試并處于可釋出狀态時,才可合并入master,一直維持可建構狀态。
  • dev*:協同開發分支,不可直接送出,僅可通過其他分支合并進入。
  • test*:測試分支,不可直接送出,僅可通過dev*分支合并進入。
  • feature*:個人開發分支,個人開發完成需要合并入dev分之前,先push至遠端feature分支。

2、一般項目開發

工作流程如上圖:

1、項目負責人從master的基線check out,初始化dev分支;

2、開發者從dev分支check out,建立本地個人開發分支feature*;

3、開發者完成功能開發後,commit個人feature*分支,并push至遠端個人feature*分支;

4、開發者在gitlab上送出個人的代碼和并請求至dev分支;

4、代碼審查人負責代碼審查,合并合理代碼;

6、代碼提測時,開發負責人送出dev分支到test的合并請求;

7、項目負責人合并dev分支至test分支;

8、版本測試完成後,開發負責人送出test分支至master分支的合并請求;

9、項目負責人合并代碼至master;

10、項目負責人以目前代碼為基線,在master分支上tag目前版本号。

3、hostfix版本開發

hostfix為緊急修複的版本,不同于正常需求的版本流程。工作流程如下圖。

産品開發中的一種Git分支工作方法

4、定制化版本開發

定制化版本出現在給某些特定使用者提供特殊定制的功能,而又與主幹分支存在不同業務邏輯的情況下。工作流程如下圖。

5、多版本并行

版本測試的時候,可能存在開發團隊眼巴巴等待測試回報bug的時候。配合默契的多版本并行開發,可以合理利用時間,加速版本疊代。工作流程如下圖。

産品開發中的一種Git分支工作方法

繼續閱讀