很多團隊現在都默默地放棄了持續整合,原因是進行特性分支更容易,基於主幹的開發欠公升值,steve smith說。在agile tour london 2015上,他將討論持續整合的死亡。
\\ infoq採訪了steve smith,關於不同分支的方法,以及他們如何與持續整合相結合,還有為什麼構建功能分支會妨礙持續整合和持續交付。
\\infoq:您能簡要介紹一些正在使用的不同的分支方法嗎?
\\
\\\steve smith:當然。在過去的一年裡,我已經寫了一系列文章,關於一些不同的版本控制策略,所有的我已經在我的職業生涯中使用過。我想評估歷史背景建立不同風格分支的一種分類方法,評估其與持續整合的相容性 - 並回答乙個同事的問題:「我構造功能分支如此成功,為什麼還要基於主幹進行開發?「
\\ 在20世紀90年代,長生命週期的發布功能分支(release feature branching)以及如clearcase,perforce和mks工具很普遍。開發者在共享功能分支上進行幾個星期,幾個月,甚至可能數年的開發,並在發布產品前測試分支。之後會有乙個痛苦的,耗時的合併到主幹以及回歸測試的過程。我曾在乙個公司裡使用mks做過兩年的發布功能分支開發,我不建議這樣做。
\\ 從21世紀初開始基於幹線的開發已開始使用諸如subversion和perforce的工具。開發者在主幹上工作,每天少量增量多次提交。在主幹上進行測試,用主幹或者短期存在的分支進行發布。並行功能開發在使用如feature toggles和branch by abstraction的工具下完成,支援使用者首選項,執行時配置。在基於主幹開發上,我在三個不同公司裡工作了7年,使用subversion,mercurial,和git,我強烈地給所有人推薦- 同事,家人,朋友,甚至大街上的陌生人。
\\ 在2023年代中期分布式版本控制系統(dvcs)成為主流,而基於主幹開發也同樣適用於vcs和dvcs。在dvcs裡建立分支成本更低,導致出現更加輕便功能分支策略。乙個變種叫整合功能分支,跟如git和mercurial這些工具一起使用。開發人員在私人分支上進行一天的開發, 然後合併到乙個長生命週期的整合分支進行測試,之後整合分支將併入主幹,或在並主幹前併入git flow功能發布分支。我使用git flow做了6個月整合功能分支開發,並不推薦它。
\\ 最後,由於2023年代後期編譯功能分支橫空出世,由於git,mercurial,特別是github flow。開發者在個人功能分支進行一天的工作之後合併到主幹,用於測試和產品發布。我使用github flow在編譯功能分支上進行了為期一年的開發,我推薦它 - 儘管很謹慎。
\
infoq:你能否詳細說明這些不同的分支方法將如何與持續整合相結合?
\\
\\\steve smith:首先,持續整合不是乙個工具 - 它是一種實踐,團隊的每乙個成員提交到主幹,一天至少一次,可由編譯伺服器如jenkins或teamcity驗證。因此,我們可以評估乙個版本控制策略,基於它能夠方便進行日常提交,到主幹中(叫master也可以)。首先,發布功能分支和整合功能分支都與持續整合明顯不相容,因為前者在共享分支上經歷了數月的開發,後者在之前的主幹上包含過多的分支。
\\ 基於主幹開發是持續整合的代名詞,並有很好的理由 - 當每乙個團隊成員每天數次提交到主幹,持續整合就實現了。也有其他優點,如推動團隊成員分解**庫,成為乙個較小的,模組化的演化架構,功能切換為使用canary release和dark launching。
\\ 編譯功能分支是非常有趣的。表面看,私人功能分支審查後合併到主幹,似乎與持續整合相容,但左思右想,我得出的結論是編譯功能分支可能與持續整合不相容 - 由於開發者更多的修改,功能分支最終會被超過一天,由於開發商的工作量審查需要一天以上,而因為開發人員以非同步方式進行主幹合併和編譯,編譯變得更慢更破碎。
\
infoq:你會在agile tour london上談「持續整合之死」,為什麼?
\\
\\\steve smith:在2023年的#istdddead辯論,我環顧我的團隊,看到大家都在利用github flow練習測試驅動開發,「測試驅動開發生命力旺盛,但持續整合是真正的麻煩」。
\\ 編譯功能分支現在驚**行,我猜想是由於a)git和github是好工具和b)企業為了創意和靈感越來越多地轉向了開源社群。在stack overflow 2015 survey上指出,16694名開發者中有11519人(69%)在使用git作為他們的源**管理工具。2023年七月的git press報告說有1000萬使用者和2600萬個版本庫。現在,git是乙個非常好的工具,github同樣也是。但是,持續整合是驚人重要- 這是持續交付的基礎 - 我相信很多團隊將很難實現長期的,可持續的持續交付程式,如果他們盲目地採用編譯功能分支的話。
\
\\
\\\steve smith:關於持續整合的資訊,我建議martin fowler的持續整合的原創文章和james shore和shane warden的敏捷開發的藝術。有關分支模型和源**管理,paul hammant的部落格是資訊的重要**。
\
infoq將覆蓋agile tour london 2015的新聞,q&as和文章:
\\
\\\第三屆agile tour london將2023年10月23日星期五舉行,將為所有對敏捷開發感興趣的人開放:從敏捷新手到敏捷實踐者。
\
檢視英文原文:more feature branching means less continuous integration
\\ 感謝張龍對本文的審校。
\\
5G的到來,意味著什麼?
過去幾年,一直聽到實體店抱怨電商搶生意的聲音,我們把這叫替代和價值的轉移。我們一直也在思考乙個問題,網際網路除了替代別人,能不能創造新的價值?按照經濟學的觀點,網際網路要想創造價值,必須成為社會生產力三大要素 勞動者 勞動物件和勞動工具 中的勞動工具。在2015年3月的全國兩會上提出乙個概念,叫 網...
5G 時代的到來意味著什麼?
不久前,國際通訊標準組織3gpp對外公布了第五代移動通訊技術5g的官方logo 美國通訊運營商verizon宣布今年將在美國11座城市進行5g試驗性運營 中國5g網路第二階段測試也將於今年正式開啟。從晶元廠商 通訊運營商 電信裝置製造商 終端廠商 全球標準化組織似乎今年都鉚足了勁 頻頻出招,關於5g...
良好的IT架構意味著在正確時間適當控制
到底哪種集中管理方式對於it架構來說最理想 答案取決於企業自身的成熟程度。it架構的管理工作到底是以集中為優先,還是以分散為目標?上週的 諮詢專線 欄目曾專門就此展開 最終認為etam 即企業技術架構管理 模式作為一種監管機制,值得廣大企業使用者加以關注。儘管很多人不太清楚,但實際上etam監管模式...