分支策略

參考極客時(shí)間甥材,持續(xù)交付36講

一切的源頭顷窒,代碼分支策略的選擇

采用不同的代碼分支策略常挚,意味著實(shí)施不同的代碼集成與上線流程作谭,這會(huì)影響整個(gè)研發(fā)團(tuán)隊(duì)每日的協(xié)作方式,因此研發(fā)團(tuán)隊(duì)通常會(huì)很認(rèn)真地選擇自己的策略奄毡。

主干開發(fā)

主干開發(fā)是一個(gè)源代碼控制的分支模型折欠,開發(fā)者在一個(gè)稱為 “trunk” 的分支(Git 稱 master) 中對代碼進(jìn)行協(xié)作,除了發(fā)布分支外沒有其他開發(fā)分支吼过。

大多數(shù)時(shí)候锐秦,發(fā)布分支是主干某個(gè)時(shí)點(diǎn)的快照。以后的改 Bug 和功能增強(qiáng)盗忱,都是提交到主干酱床,必要時(shí) cherry-pick (選擇部分變更集合并到其他分支)到發(fā)布分支。與主干長期并行的特性分支極為少見趟佃。為了保證主干上線后的有效性扇谣,一般會(huì)使用特性切換(feature toggle,灰度放量控制)闲昭。特性切換就像一個(gè)開關(guān)可以在運(yùn)行期間隱藏罐寨、啟用或禁用特定功能,項(xiàng)目團(tuán)隊(duì)可以借助這種方式加速開發(fā)過程序矩。

特性切換在大型項(xiàng)目持續(xù)交付中變得越來越重要鸯绿,因?yàn)樗兄趯⒉渴饛陌l(fā)布中解耦出來。特性切換會(huì)導(dǎo)致代碼更脆弱贮泞、更難測試楞慈、更難理解和維護(hù)、更難提供技術(shù)支持啃擦,而且更不安全囊蓝。越來越多的特性切換會(huì)使得邏輯越來越混亂。

特性切換需要健壯的工程過程令蛉、可靠的技術(shù)設(shè)計(jì)和成熟的特性切換生命周期管理聚霜,如果不具備這三個(gè)關(guān)鍵的條件狡恬,使用特性切換反而會(huì)降低生產(chǎn)力。

優(yōu)點(diǎn):1蝎宇、頻繁集成弟劲,每次集成沖突少,集成效率高 2姥芥、享受持續(xù)交付帶來的好處 3兔乞、無需在分支間切換

缺點(diǎn):1、太多人工作在主干上凉唐,bug代碼是災(zāi)難 2庸追、借助特性切換保證線上運(yùn)行正確性,引入新問題

特性分支開發(fā)

git flow


git flow

線上部署使用master分支台囱,develop分支用來集成淡溯,feature分支用來開發(fā)。

github flow

GitHub Flow 是 GitHub 所使用的一種簡單流程簿训。該流程只使用 master 和特性分支咱娶,并借助 GitHub 的 pull request 功能。

在 GitHub Flow 中强品,master 分支中包含穩(wěn)定的代碼膘侮,它已經(jīng)或即將被部署到生產(chǎn)環(huán)境。任何開發(fā)人員都不允許把未測試或未審查的代碼直接提交到 master 分支的榛。對代碼的任何修改喻喳,包括 Bug 修復(fù)、熱修復(fù)困曙、新功能開發(fā)等都在單獨(dú)的分支中進(jìn)行。不管是一行代碼的小改動(dòng)谦去,還是需要幾個(gè)星期開發(fā)的新功能慷丽,都采用同樣的方式來管理。

當(dāng)需要修改時(shí)鳄哭,從 master 分支創(chuàng)建一個(gè)新的分支要糊,所有相關(guān)的代碼修改都在新分支中進(jìn)行。開發(fā)人員可以自由地提交代碼和提交到遠(yuǎn)程倉庫妆丘。當(dāng)新分支中的代碼全部完成之后锄俄,通過 GitHub 提交一個(gè)新的 pull request。團(tuán)隊(duì)中的其他人員會(huì)對代碼進(jìn)行審查勺拣,提出相關(guān)的修改意見奶赠。由持續(xù)集成服務(wù)器(如 Jenkins)對新分支進(jìn)行自動(dòng)化測試。當(dāng)代碼通過自動(dòng)化測試和代碼審查之后药有,該分支的代碼被合并到 master 分支毅戈。再從 master 分支部署到生產(chǎn)環(huán)境苹丸。GitHub Flow 的好處在于非常簡單實(shí)用,開發(fā)人員需要注意的事項(xiàng)非常少苇经,很容易形成習(xí)慣赘理。當(dāng)需要修改時(shí),只要從 master 分支創(chuàng)建新分支扇单,完成之后通過 pull request 和相關(guān)的代碼審查商模,合并回 master 分支就可以了。

GitLab Flow

GitLab Flow 針對不同的發(fā)布場景蜘澜,在 GitHub Flow(特性分支加 master 分支)的基礎(chǔ)上做了改良施流,額外衍生出了三個(gè)子類模型。

1兼都、帶生產(chǎn)分支嫂沉。無法控制準(zhǔn)確的發(fā)布時(shí)間,又要不停集成扮碧。2創(chuàng)建一個(gè)production分支方式發(fā)布代碼

2趟章、帶環(huán)境分支。要求所有代碼都在逐個(gè)環(huán)境中測試通過慎王,為不同環(huán)境創(chuàng)建不同分支

3蚓土、帶發(fā)布分支。用戶對外界發(fā)布軟件的項(xiàng)目赖淤,同時(shí)需要維護(hù)多個(gè)發(fā)布版本(android發(fā)版)蜀漆,盡可能晚從master拉取發(fā)布分支,bug修改先提交到master咱旱,cherr-pick到release分支

分支開發(fā)的的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):1确丢、不同功能在獨(dú)立分支開發(fā),消除了功能穩(wěn)定前彼此干擾的問題 2吐限、容易保證主干分支的質(zhì)量鲜侥,只要不把沒有開發(fā)的特征分支合并入主干分支,主干分支就不會(huì)有問題的功能

缺點(diǎn):1诸典、不及時(shí)merge描函,特性分支合并到主干分支會(huì)比較麻煩 2、如果做CI/CD狐粱,需要對不同分支配備不同的構(gòu)建環(huán)境

選擇分支策略


不同情況適用的代碼分支策略
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舀寓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肌蜻,更是在濱河造成了極大的恐慌互墓,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宋欺,死亡現(xiàn)場離奇詭異轰豆,居然都是意外死亡胰伍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門酸休,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骂租,“玉大人,你說我怎么就攤上這事斑司∩” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵宿刮,是天一觀的道長互站。 經(jīng)常有香客問我,道長僵缺,這世上最難降的妖魔是什么胡桃? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮磕潮,結(jié)果婚禮上翠胰,老公的妹妹穿的比我還像新娘。我一直安慰自己自脯,他們只是感情好之景,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膏潮,像睡著了一般锻狗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焕参,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天轻纪,我揣著相機(jī)與錄音,去河邊找鬼叠纷。 笑死桐磁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讲岁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衬以,長吁一口氣:“原來是場噩夢啊……” “哼缓艳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起看峻,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阶淘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后互妓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪窒,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坤塞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澈蚌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摹芙。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宛瞄,靈堂內(nèi)的尸體忽然破棺而出浮禾,到底是詐尸還是另有隱情,我是刑警寧澤份汗,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布盈电,位于F島的核電站,受9級特大地震影響杯活,放射性物質(zhì)發(fā)生泄漏匆帚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一旁钧、第九天 我趴在偏房一處隱蔽的房頂上張望吸重。 院中可真熱鬧,春花似錦均践、人聲如沸晤锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞭铆。三九已至,卻和暖如春焦影,著一層夾襖步出監(jiān)牢的瞬間车遂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工斯辰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舶担,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓彬呻,卻偏偏與公主長得像衣陶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子闸氮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354