“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

更多的特性分支意味着更少的持续集成

  • 2015-10-27
  • 本文字数:2186 字

    阅读完需:约 7 分钟

很多团队现在都默默地放弃了持续集成,原因是进行特性分支更容易,基于主干的开发欠升值, 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,我强烈地给所有人推荐 - 同事,家人,朋友,甚至大街上的陌生人。

在 2000 年代中期分布式版本控制系统(DVCS)成为主流,而基于主干开发也同样适用于 VCS 和 DVCS。在 DVCS 里创建分支成本更低,导致出现更加轻便功能分支策略。一个变种叫集成功能分支,跟如Git 和Mercurial 这些工具一起使用。开发人员在私人分支上进行一天的开发, 然后合并到一个长生命周期的集成分支进行测试,之后集成分支将并入主干,或在并主干前并入 Git Flow 功能发布分支。我使用 Git Flow 做了 6 个月集成功能分支开发,并不推荐它。

最后,由于 2000 年代后期编译功能分支横空出世,由于Git,Mercurial,特别是 GitHub Flow 。开发者在个人功能分支进行一天的工作之后合并到主干,用于测试和产品发布。我使用 GitHub Flow 在编译功能分支上进行了为期一年的开发,我推荐它 - 尽管很谨慎。

InfoQ:你能否详细说明这些不同的分支方法将如何与持续集成相结合?

Steve Smith:首先,持续集成不是一个工具 - 它是一种实践,团队的每一个成员提交到主干,一天至少一次,可由编译服务器如 Jenkins 或 TeamCity 验证。因此,我们可以评估一个版本控制策略,基于它能够方便进行日常提交,到主干中(叫 Master 也可以)。首先,发布功能分支和集成功能分支都与持续集成明显不兼容,因为前者在共享分支上经历了数月的开发,后者在之前的主干上包含过多的分支。

基于主干开发是持续集成的代名词,并有很好的理由 - 当每一个团队成员每天数次提交到主干,持续集成就实现了。也有其他优点,如推动团队成员分解代码库,成为一个较小的,模块化的演化架构,功能切换为使用 Canary Release Dark Launching

编译功能分支是非常有趣的。表面看,私人功能分支审查后合并到主干,似乎与持续集成兼容,但左思右想,我得出的结论是编译功能分支可能与持续集成不兼容 - 由于开发者更多的修改,功能分支最终会被超过一天,由于开发商的工作量审查需要一天以上,而因为开发人员以异步方式进行主干合并和编译,编译变得更慢更破碎。

InfoQ:你会在 Agile Tour London 上谈“持续集成之死”,为什么?

Steve Smith:在 2014 年的#IsTDDDead 辩论,我环顾我的团队,看到大家都在利用 GitHub Flow 练习测试驱动开发,“测试驱动开发生命力旺盛,但持续集成是真正的麻烦”。

编译功能分支现在惊人流行,我猜想是由于 a)Git 和 GitHub 是好工具和 b)企业为了创意和灵感越来越多地转向了开源社区。在 Stack Overflow 2015 survey 上指出,16694 名开发者中有 11519 人(69%)在使用 Git 作为他们的源代码管理工具。2015 年七月的 Git Press 报告说有 1000 万用户和 2600 万个版本库。现在,Git 是一个非常好的工具,GitHub 同样也是。但是,持续集成是惊人重要 - 这是持续交付的基础 - 我相信很多团队将很难实现长期的,可持续的持续交付程序,如果他们盲目地采用编译功能分支的话。

InfoQ:您能分享一些资源让 InfoQ 的读者可以用它来了解更多关于分支和持续集成吗?

Steve Smith:关于持续集成的信息,我建议 Martin Fowler 的持续集成的原创文章和James Shore 和Shane Warden 的敏捷开发的艺术。有关分支模型和源代码管理, Paul Hammant 的博客是信息的重要来源。

InfoQ 将覆盖 Agile Tour London 2015 的新闻,Q&As 和文章:

第三届 Agile Tour London 将 2015 年 10 月 23 日星期五举行,将为所有对敏捷开发感兴趣的人开放:从敏捷新手到敏捷实践者。

查看英文原文: More Feature Branching Means Less Continuous Integration


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-27 19:001882
用户头像
Tina InfoQ高级编辑

发布了 1218 篇内容, 共 806.2 次阅读, 收获喜欢 3475 次。

关注

评论

发布
暂无评论
发现更多内容

便捷、高并发、高可用 揭秘搭建校园云平台的理由

青椒云云电脑

云平台

国内低代码开发平台有哪些?低代码真的好用吗?

高端章鱼哥

低代码 低代码开发平台 JNPF

新老用户看过来~最实用的 Milvus 迁移手册来啦!

Zilliz

数据迁移 Milvus Zilliz 向量数据库

亚马逊 CodeWhisperer 初体验

亚马逊云科技 (Amazon Web Services)

JavaScript typescript 人工智能

深势科技基于 Serverless 容器为科研人员打造高效的开发平台

阿里巴巴云原生

阿里云 Serverless Kubernetes 容器 云原生

低代码开发平台的优点和缺点

互联网工科生

低代码 可视化开发 JNPF

数字矿山:智慧煤矿可视化2D组态系统

2D3D前端可视化开发

组态软件 智慧矿山 2D组态 智慧煤矿 智慧矿井

加入华为云AIGC实战营,一起探索AI前沿技术!

科技热闻

语音识别技术:未来人机交互的重要接口

来自四九城儿

语音识别技术的挑战与机遇

来自四九城儿

Maxon QCN9074 industrial 4x4 MIMO Wi-Fi 6 module

wifi6module

QCN9074

几分钟搞定Java程序CPU飙升场景

HelloGeek

Java Docker 容器 解决方案

从“作坊模式”到“平台科研”,和鲸聚焦 AI4S 项目全生命周期管理

ModelWhale

AI for Science 可复现性 科研协同 全生命周期 科研

zone.js由入门到放弃之五——NgZone & ApplicationRef源码分析

OpenTiny社区

前端 angular

Go语言进化之路:泛型的崛起与复用的新篇章

这我可不懂

泛型 Go 语言

【活动回顾】Rust:构建新时代基础设施的首选语言 @Qcon

Databend

ByConity 0.2.0 版本发布

字节跳动开源

数据库 大数据 开源 开源社区 数仓

GitHub超60K的“亿级高并发系统设计手册”被疯传

小小怪下士

Java 程序员 系统设计 高并发

企业用户需要什么样的私有云

青椒云云电脑

云桌面

征服数据宇宙,新华三存储护卫队早有准备?

脑极体

存储

Arrays.asList():使用指南

越长大越悲伤

Java

语音识别技术:原理、应用与未来

来自四九城儿

科技快讯丨浪潮海岳PaaS平台重磅升级,筑牢企业数字化创新底座

inBuilder低代码平台

低代码平台:解决开发中的重复“造轮子”

树上有只程序猿

低代码 造轮子

英特尔FPGA系列再扩容,打造完美产品矩阵

E科讯

Apache IoTDB v1.2.0/v1.2.1 发布|增加流处理框架、动态模板等新功能

Apache IoTDB

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

“昇腾万里•齐聚津门”昇腾AI创新大赛2023 天津区域赛暨第十期“津英汇”活动成功举办

彭飞

云桌面如何助力校园云办公 老师这么说

青椒云云电脑

云桌面

WorkPlus局域网聊天软件,打造高效沟通与协作的完美选择

WorkPlus

WorkPlus打造企业移动门户,实现高效协作与便捷访问

WorkPlus

更多的特性分支意味着更少的持续集成_DevOps & 平台工程_Ben Linders_InfoQ精选文章