日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

為什么我更喜歡基于主干的開發

來源: 責編: 時間:2023-09-18 21:42:18 306觀看
導讀譯者 | 劉汪洋審校 | 重樓如今,分布式版本控制系統,例如 Git,在版本控制領域已然成為主流。有人認為,使用像 Git 這樣的版本控制系統(VCS)進行分支和合并非常便捷。但我更推崇基于主干的開發(TBD),現在我將解釋其中的原因。在

譯者 | 劉汪洋B6C28資訊網——每日最新資訊28at.com

審校 | 重樓B6C28資訊網——每日最新資訊28at.com

如今,分布式版本控制系統,例如 Git,在版本控制領域已然成為主流。有人認為,使用像 Git 這樣的版本控制系統(VCS)進行分支和合并非常便捷。但我更推崇基于主干的開發(TBD),現在我將解釋其中的原因。B6C28資訊網——每日最新資訊28at.com

B6C28資訊網——每日最新資訊28at.com

在基于主干的開發模式中,所有開發人員都在同一個分支(例如 'main')上工作。你可能已經從 Martin Fowler  Dave Farley 那里了解過相關討論。當 Git 迅速成為首選版本控制系統時,通過與 Dave 的合作經歷,我親身體驗到了團隊在持續交付環境中基于主干開發所帶來的優勢。B6C28資訊網——每日最新資訊28at.com

與此不同,分支模型則鼓勵開發人員為每個特性、錯誤修復或增強功能創建獨立的分支。雖然分支在隔離變動和降低風險方面看似合理,但許多因素讓我更傾向于基于主干的開發方式。B6C28資訊網——每日最新資訊28at.com

1. 速度與效率

主干開發模式下,整個團隊在同一分支上協作,從而實現更迅速的集成,并減少合并沖突。這正是持續集成(CI)的核心理念。雖然現在提到 CI 時通常是指“每次提交時在團隊服務器上運行構建和測試”,但CI的本質是確保代碼能夠定期并順利地集成。獨立分支的代碼未集成,且存在時間越長,合并回主代碼庫的難度越大。獨立分支上快速開發的修復和改進似乎很迅速,但最終還是有代價的。定期集成小的更改通常比長時間后進行大型合并更為輕松。B6C28資訊網——每日最新資訊28at.com

2. 代碼穩定性增強

主干開發鼓勵頻繁提交,從而產生小型、易于管理的更改。頻繁拉取其他開發人員的更改,并推送小型、有效的代碼更改,有助于確保代碼庫的穩定性和可用性。如果有 CI 服務器為每次提交運行構建和測試,驗證這種“穩定和可工作”的假設就更方便了。任何時候構建中斷,我們必須暫停提交,專注于修復。在構建中斷時持續推送更改將無益于任何人。B6C28資訊網——每日最新資訊28at.com

在分支模型下,龐大、不頻繁的合并可能會因更改的規模而難以定位和修復錯誤。當他人合并了大型工作后,你是否曾發現自己的代碼不再工作?如果你和他人做了許多不同或重疊的更改,找出導致測試失敗或應用程序工作不正常的原因可能會耗費很長時間,而這還需要你有可靠的測試覆蓋率。B6C28資訊網——每日最新資訊28at.com

3. 加強團隊協作

結對編程是我最喜歡的團隊成員之間的知識共享方式,雖然我知道并不是每個人都能這樣做(有關此方面的更多信息,可以查看 JetBrains 的 Code With Me)。如果沒有配對,至少團隊應該在同一代碼上工作。如果每個人都在自己的分支上工作,那么他們其實是在相互競爭而非協作,還可能會因為擔心被他人的更改壓倒而過于小心翼翼。B6C28資訊網——每日最新資訊28at.com

若團隊都在同一分支上工作,通常會增進對正在進行更改的理解,促進團隊協作和知識共享。相反,分支可能造成孤立的工作環境,導致團隊內部的知識空白。B6C28資訊網——每日最新資訊28at.com

4. 持續集成與交付(CI/CD)實踐的優化

Dave Farley 的書籍 “持續交付”,以及相關博客文章和視頻,都深入強調了“主干開發模式與持續集成和持續交付(CI/CD)實踐的天然相容性”。B6C28資訊網——每日最新資訊28at.com

在主干開發模式下,持續集成的實施更加直接,因為代碼會頻繁提交到主干分支,而這也正是 CI 環境所構建和測試的分支。任何的失敗都能及時發現并解決,從而降低了重大故障的風險。通常,追蹤引起問題的具體更改相對容易。如果某個問題無法立即解決,可以回退導致該問題的具體修改。B6C28資訊網——每日最新資訊28at.com

現在我們應該明白快速反饋循環的價值,因為它能讓我們更快地發現問題、找到原因,并迅速修復,從而提升軟件的質量。B6C28資訊網——每日最新資訊28at.com

在主干開發環境中,持續交付也得以蓬勃發展。成功的持續交付要求始終保持代碼庫可部署的狀態。主干開發方法通過促進頻繁的提交、集成,以及對所有集成的全面測試,確保了這一目標的實現。任何時候引入的細微修改都使得軟件部署和測試更為順暢。B6C28資訊網——每日最新資訊28at.com

相較之下,使用分支模型來實現有效的 CI/CD 往往更復雜、更耗時。雖然有人可能會認為:“我可以在我的分支上運行構建和所有測試”,但實際情況是,并非每次提交都進行了真正的集成。直到合并(或變基)的過程中,你才會開始面對任何集成問題。在分支上運行的所有測試,并沒有對任何類型的集成進行實際檢驗。B6C28資訊網——每日最新資訊28at.com

合并和測試不同分支的代碼可能會引入延遲和潛在錯誤,進而削弱構建流水線的某些優勢。B6C28資訊網——每日最新資訊28at.com

5. 減輕技術債務

長期維護的分支常造成“合并地獄”現象,這是由于主分支(例如 'main')與特性分支之間的差異過大,導致合并過程變得異常困難。這種情況可能引發技術債務的累積,因為解決合并沖突時可能會采用快速但非理想的修復方案,或者接受集成開發環境(IDE)的自動建議而可能對其并未完全理解。相較之下,主干開發、頻繁的合并操作和較小的代碼更改則使技術債務的管理和減少變得更為便捷。B6C28資訊網——每日最新資訊28at.com

總結

我個人確信主干開發具備顯著優勢,并在實際項目中親自體驗了采用此種方法的團隊效益。然而,這需要團隊共同建立一種思維方式和文化氛圍。這其中涉及頻繁合并他人的代碼更改,經常進行小規模的代碼修改,按部就班地進行增量改動。這可能是一種需要適應的開發習慣。整個團隊采用一致的方法和文化,關鍵在于實踐配對編程、全面自動化測試和進行適當的代碼審查。B6C28資訊網——每日最新資訊28at.com

有序、紀律的主干開發能簡化流程,增強協作,提升代碼穩定性,支持CI/CD實踐,并減輕技術債務。如果你一直采用基于分支的模型,轉變可能會面臨挑戰,但從長期來看,優勢是明顯的。若你對此感興趣,還可以參閱Dave的文章,他在其中解釋了主干開發的障礙。B6C28資訊網——每日最新資訊28at.com

版本控制分支、提交、主干開發、持續集成/部署等是軟件開發過程中的關鍵概念。B6C28資訊網——每日最新資訊28at.com

譯者介紹

劉汪洋,51CTO社區編輯,昵稱:明明如月,一個擁有 5 年開發經驗的某大廠高級 Java 工程師,擁有多個主流技術博客平臺博客專家稱號。B6C28資訊網——每日最新資訊28at.com

原文標題:Why I Prefer Trunk-Based Development,作者:Trisha GeeB6C28資訊網——每日最新資訊28at.com


B6C28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-10487-0.html為什么我更喜歡基于主干的開發

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 詳解Spring支持的各種數據類型的注入,你都用過哪些?

下一篇: 企業變革管理能否緩解供應鏈困境?

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 石頭自清潔掃拖機器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經常能看到一個詞叫“縫合怪”,用來形容那些把好多功能或者外觀結合在一起的產品,通常這樣的詞是貶義詞,但如果真的是產品縫合的好、縫合的實用的話,那它就成了中性詞,今
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 分享六款相見恨晚的PPT模版網站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網站旨在為全球Office用戶提供豐富的高品質原創PPT模板、實用文檔、數據圖表及個性化定制服務。優點:OfficePLUS是微軟官方網站,囊括PPT模板、Word模
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式??梢詾閾碛兄付▽傩缘?HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預測小
  • 三翼鳥智能家居亮相電博會,讓用戶體驗更真實

    2021電博會在青島國際會展中心開幕中,三翼鳥直接把“家”搬到了現場,成為了展會的一大看點。這也是三翼鳥繼9月9日發布了行業首個一站式定制智慧家平臺后的
Top 主站蜘蛛池模板: 茶陵县| 庄浪县| 泉州市| 朔州市| 大田县| 界首市| 怀宁县| 武清区| 元氏县| 延庆县| 莒南县| 西吉县| 麻城市| 廉江市| 巍山| 克什克腾旗| 玛曲县| 额济纳旗| 张家口市| 潞西市| 高邑县| 小金县| 昌都县| 新营市| 茶陵县| 周宁县| 陵川县| 茌平县| 汶上县| 宜兰市| 大理市| 江北区| 阳谷县| 曲沃县| 滦平县| 兴文县| 蚌埠市| 汪清县| 阜新市| 泽普县| 河源市|