業內實踐
git flowgit
![](http://static.javashuo.com/static/loading.gif)
固定遠程分支:github
- master分支: 主分支,和生產環境一致,存放已發佈完成的版本
- develop分支: 主開發分支,用於合併功能分支,維護公共的最新代碼
臨時遠程分支:sql
- release分支: 預發分支,發佈時基於Develop分支建立一個Release分支,完成Release後,咱們合併到master和develop分支
- feature分支: 功能分支,每一個功能對應的分支,合併到develop分支和release分支後刪除
- hotfix分支: bug修復分支,後合併到develop和master分支後刪除
優勢:shell
清晰明瞭,每一個分支都有都本身的做用,有工具或插件幫助操做者使用此流程。數據庫
缺點:工具
更加適合於按版本發佈的項目,不太適合持續發佈。 有的服務更指望代碼變更就發佈一次,每次發佈須要合併develop、release、master三個分支。gitlab
github flow單元測試
![](http://static.javashuo.com/static/loading.gif)
如圖,github flow很是簡單,只有一個固定的遠程分支marter。每一個研發人員fork項目後,在本地用功能分支開發,開發完成後提交PR請求合併master分支。
PR請求經過後,合併至master分支並部署。master分支表明能夠隨時上線的版本,而且能夠經過持續發佈系統,無限發佈到生產環境。測試
但有些時候,PR被合併了以後咱們可能也不會馬上就發佈到生產環境,長此以往,生產環境就會落後master。插件
綜合git flow 和 github flow 的優缺點,在github flow的基礎上,增長一個production分支,用來標識目前已上線的版本。
配置流程
![](http://static.javashuo.com/static/loading.gif)
- 項目管理員建立gitlab倉庫,建立並保護master分支,設立相關權限
- 研發人員fork項目,生成本身的fork庫
- 研發人員clone本身的fork庫至本地
- 研發人員在本地新建功能分支,並提交至本地分支,也能夠push功能分支至遠程fork庫備份
- 研發人員按期與遠程主幹分支同步
- 研發人員推送至本身的fork庫
- 不須要測試人員測試時:
- 研發人員直接發起PR請求合併我的遠程倉庫的開發分支至項目遠程倉庫的master分支
- CI自動執行代碼靜態檢查和單元測試
- 項目管理員審覈PR,合併請求完成開發流程
- 須要測試人員測試時:
- 研發人員通知項目管理員在項目遠程分支中建立功能分支,研發人員發起PR請求合併我的遠程倉庫的開發分支至項目遠程倉庫的對應分支
- CI自動執行代碼靜態檢查和單元測試
- 項目管理員審覈PR,合併至項目庫的遠程功能分支
- 測試人員拉取功能分支測試
- 測試人員提出PR請求,合併遠程功能分支至master分支
- CI自動執行單元測試
- 項目管理員審覈PR,合併請求完成開發流程
- 項目管理員在發佈平臺選擇響應的master提交進行發佈,發佈後自動對master標記tag
Git commit日誌規範
git checkout新分支時,分支名採用 feature_標題_erp#、bugfix_標題_erp#、refactor_標題_erp#
如:feature_batch_save_product_12345
git commit時提交日誌規範以下:
<type>:<subject>
<body>
type 枚舉:
- feat 新增功能
- fix 修復bug
- docs 修改了文檔、readme
- style 不改變代碼邏輯,僅修改代碼樣式
- refactor 非功能性重構
- test 測試用例
subject: 描述主要變動內容
body: 主體內容,更詳細的說明文本,如erp地址等,能夠爲空
Code Review
提交Code Review以前要作什麼?
- 準備或者提交相關需求文檔以備審查者詢問
- 編寫符合規範的代碼和合適的註釋
- 考慮代碼是否有重構的可能
- 單元測試所有經過,測試覆蓋率達標
如何Code Review?
- 瞭解需求:這個提交是爲了解決什麼問題,是需求單、BUG修復、仍是代碼重構,
若是不明確,須要及時和代碼做者溝通和討論
- 檢查代碼業務邏輯是否符合需求
- 代碼是否符合相關代碼規範
- 確認是否有更好的方式方法重構代碼
- 檢查單元測試用例是否考慮全面
- 若是代碼沒有問題,也寫上相似GOOD JOB之類的評論
Code Review以後能夠作什麼?
- 對於代碼審查人表示感謝
- 若是代碼審查沒有經過,不要往內心去,審查的是代碼,不是你
- 嘗試對每個評論作出回覆
- 等待合併分支,等待持續集成告訴你所有經過
項目結構規約
-doc 文檔文件夾,用來存放概要、詳設、API等文檔資料 -src 程序源碼文件夾,用來存放源碼 -db 數據庫文件夾,用來存放可執行的數據庫相關變動DDL腳本文件,如V1__init.sql,V2__feature_batch_save_product_12345.sql -deploy (可選)用來存放部署相關文件,如shell腳本等 -.. 按項目自由配置 README.md 項目說明 Dockerfile