「若要實現愈高強度的CI/CD,分支的數量得要愈少愈好,分支的生命週期則是愈短愈好。」——《Azure DevOps 顧問實戰》
在這個時代,我們很難看到有軟體開發團隊不使用 Git 或其他版本控制系統。
既然大家都在用 Git,都會開 Brnach,那麼你有思考過 Branch 到底代表了什麼意思?
Branch 其實意味著『隔離』,這個 Branch 是我小天地,那個 Branch 是你的小天地,透過這個開發空間的隔離,讓團隊在同時並行開發時,不會互相干擾。
這個『隔離』,不只是『空間』,也包含了『時間』,因為它讓『變更』這件事可以被延後發生。
因此乍看之下,Branch 為我們提供了一個保護機制,讓開發工程師可以安心的開發,但實際上它也帶來了風險;
就如我們都聽過的故事,當其他分 Branch 合併回 Main Branch 時,總是會發生各式各樣的程式碼衝突與炸鍋。
讓我們再思考一次,Branch 帶來的『隔離』真的是一件好事情嗎?
在什麼樣的情境下,我們適合用多個 Branch?
以及在什麼樣的前提下,我們適合用較少的 Branch,甚至是採用 Trunk-based development?
今天的金句就是其中一個答案,你們 CI/CD 的頻率及強度如何?以及你們交付軟體的頻率又是如何?這些都會是團隊需要考量的議題。