Git-flow 讓 Dev Team 步上穩健開發之路
A successful Git branching model 點圖放大 |
從去年開始我認識了 Git 這套新一代版本控管,最大不同是,它採取了分散式的控管,每一個開發人員都可以當作 branch,當然會有中樞在定義 master 或者主要開發幹線,當開發完畢要彙整回主要中樞位置,幾乎採取是 merge 的指令,光談 Git 使用,它已經強化了 merge 的功能,而且因為分散式的管理,每一位開發人員都可以自己做版本控管 (commit, reset 等) 當要跟中樞控管溝通才使用 (push, pull 等) 這些種種新的功能特色,讓 open source project 在開發上可以更為的順利與方便。
既然 Git 在 branch 開設與事後 merge 這方面強化,在開發上是否有更好的開發模式,來協助我們軟體開發呢?
Git-flow 是一套成功 Branch model 開發經驗而設計出來的協助工具,當安裝好之後,在 command line 下 git-flow 即可知道它的功能樣貌。
主要分為幾個主要幹線和分支之間做交互轉換。接下來以開發一個從 0.2 進入 0.3 版本階段為例,這個開發里程碑裡面,需要完成三個主要 features:為軟體的 UI 做動線改善、UI 元素的修正、需要將物件導向的 data model 做翻修調整,套用在此 git-flow 上,作為一個使用 git-flow 生命週期介紹。
首先準備好 master 和 develop 這兩個主要線,master 是做為最穩定可以交付出去的版本路線,develop 是開發人員的開發路線,這邊是有最新功能的路線。
Day 1~2 將 UI 做動線改善,採用這樣指令 git-flow feature start uiNavigationArrange,於是幫在 feature 類別裡面,開設了 uiNavigationArrange 的 branch,於是任何程式開發都在這裡做 commit,如果需要同仁協助,就 push 到中樞管理位置,讓同仁可以一起開發。當完成後,下達 git-flow feature finish uiNavigationArrange。於是 git-flow 幫忙把此 local branch delete 掉,merge 回 develop 路線,再將 develop 路線 push 到最新位置,讓同仁可以做同步。
Day 3 將 UI 元素修正,採用 git-flow feature start uiElementsEdit,於是在 feature 開設了新的 branch,將畫面需要各種元素控制項做些調整之後,下達 git-flow feature finish uiElementsEdit,於是 git-flow 幫忙把 local branch 移除掉, merge 回 develop 開發路線。
Day 4 將 Data model 調整,採用 git-flow feature start refactorDataModel,於是在 feature 開設了新的 branch,將物件彼此間做些調整與擴充之後,修改完成後,下達 git-flow feature finish refactorDataModel,於是 git-flow 幫忙把 local branch 移除掉, merge 回 develop 開發路線。
Day 5 要做版本 Release,採用 git-flow release start 0.3,於是從原來 0.2 的進展到本次新版本 0.3 的路線,進入測試階段,過程如果發現想要些微調整都在此 commit,完成確定此版沒有問題,採用 git-flow release finish 0.3,這時候就是 git-flow 幫忙,它會砍掉此 release/0.3,幫忙下 tag v0.3 (如果當初開始 git-flow 有為 tag 做 prefix 'v' 命名,這邊會自動加上去),且 merge 到 master 和 develop 路線,於是範例產品 0.3 版誕生了,此版功能有改善 UI 動線、變更 UI 元素控制項、後面 data model 的修正。
如果上線發現有問題要修,就可以採用 hotfix 的方式來做些調整與修正,回饋到 develop 路線,也作為 master 的修正。
以上是一個套用在開發專案或者產品所採用的開發範例,git-flow 讓開發過程站對腳步,又能將過程做個完整紀錄,不論開發團隊人數有多少,相信套用此模式開發,能讓 Dev Team 步上穩健的開發之路。最後要感謝 ihower 的部落格文章 Git flow 開發流程 介紹,以及圖片來自 A successful Git branching model 的文章。
Comments
Post a Comment