利于集成的分支策略

简介: 利于集成的分支策略

版本控制系统的使用目的

版本控制系统主要用于存储及追踪目录和文件的修订历史(修订操作包括 3 类:新增、修改和删除),从而让你能够回溯那些被纳入其管理范围之内的任意对象的任意一次修订。其最本质的作用是回答 “4个W”:

  • 在什么时间(When
  • 修改了什么内容(What
  • 是谁修改的(Who
  • 为什么要修改(Why

其中最后一个 “W” 是通过用户提交代码变更时书写提交注释的方式提供的。

集中式版本控制系统

这种类型版本控制系统的典型代表是 Subversion,简称为 SVN。集中式版本控制系统,有一个单一的集中管理的版本控制管理服务器,保存所有文件的历史修订版本记录。团队成员之间的代码交换必须通过客户端连接到这台服务器,获取自己需要的文件。每个人如果想获得其他人最新提交的修订记录,就必须从集中式版本控制系统中获得。集中式版本控制系统有两点劣势:

  1. 在网络环境不佳的情况下,同步大量文件时会经常失败。
  2. 具有单点故障风险。

分布式版本控制系统

目前主流的分布式版本控制系统是 Git。分布式版本控制系统与集中式版本控制系统的区别在于多个服务器共存,每个人的节点都是一个代码仓库,所有的节点都是平等的。分布式控制系统的特点是:提交(commit)操作都是在本地进行而无须经过服务器,因此提交速度也更快。只有当需要向其他人或远程服务器做文件提交或同步时,才通过网络将其推送到远程仓库或从远程仓库拉取。因此,即使在没有网络环境的情况下,你也可以非常愉快地频繁提交更新。当有了网络环境的时候,再推送到远程的团队代码仓库。

常见分支开发模式

  • 主干开发,主干发布
  • 主干开发,分支发布
  • 分支开发,主干发布

分支模式的演化

  • 三驾马车分支模式
  • Gitflow 分支模式
  • GitHubFlow 分支模式

分支策略的选择

企业需要根据开发或维护的软件产品类型,结合发布频率,并考虑自身团队成员能力和基础设施水平如自动化测试程度、程序运行环境的管理水平、团队纪律性等,来确定适合自己的分支方式。

版本发布模式

版本发布的基本模式有 3 种:

  • 项目制发布模式(Project Release Mode)
  • 发布火车模式(Release Train Mode)
  • 城际快线模式(IntercityExpress Mode)

无论哪种发布模式,都有相同的 3 个约束变量,即交付时间点(schedule)、特性数量(features)和交付质量(quality),在团队资源相对固定的情况下,只能对其中的两个因素提出固定的要求。例如,对发布的交付时间点和交付质量提出固定要求后,那么该版本的特性数量也就相对固定了。

分支策略与发布周期的关系

通常,软件开发周期极长的 “项目制” 团队和软件发布频率极高的 “城际快线式” 团队会使用 “主干开发,主干发布” 的分支策略。而次之的团队会使用 “主干开发,分支发布” 的分支策略。它们之间的团队会使用 “分支开发、主干发布” 的分支策略。当然,这并不是绝对的,其中会有很大的重叠部分,通常会受团队成员人数、产品架构和质量保障基础设施状况的影响。每种分支策略都有其各自的优点和挑战。并且,它对发布频率和每次发布的效率也有较大的影响。目前的发展趋势是:软件发布频率越来越高,发布周期越来越短。硅谷顶级互联网公司多采用 “主干开发” 或高频的GitHubFlow分支模式。一个企业到底选择哪种分支策略,需要根据团队的具体情况来决定。如果相关的配套条件(如软件架构、 人员能力和工具平台的成熟度)不足,那么,盲目提高发布频率、缩短发布周期会造成不必要的损失。“持续交付2.0” 提倡鼓励持续集成的分支策略,因此,选择分支模式的原则有以下几条:

  • 分支越少越好,最好只有一条主干;
  • 分支生存周期越短越好,最好在3天以内;
  • 在业务允许的前提下,发布周期越短越好;

了解更多:https://t.zsxq.com/07zEl88nH

推荐阅读

  1. 持续交付 2.0
  2. 价值探索环
  3. 快速验证环
  4. 组织文化
  5. 软件系统架构
  6. 需求协作管理
  7. 部署流水线原则
目录
相关文章
|
19天前
|
数据采集 安全 数据管理
深度解析:DataHub的数据集成与管理策略
【10月更文挑战第23天】DataHub 是阿里云推出的一款数据集成与管理平台,旨在帮助企业高效地处理和管理多源异构数据。作为一名已经有一定 DataHub 使用经验的技术人员,我深知其在数据集成与管理方面的强大功能。本文将从个人的角度出发,深入探讨 DataHub 的核心技术、工作原理,以及如何实现多源异构数据的高效集成、数据清洗与转换、数据权限管理和安全控制措施。通过具体的案例分析,展示 DataHub 在解决复杂数据管理问题上的优势。
82 1
|
3月前
|
监控 测试技术 持续交付
|
4月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
95 2
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
67 0
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
136 0
|
3月前
|
人工智能 iOS开发 UED
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
|
3月前
|
消息中间件 Java 网络架构
AMQP与微服务架构的集成策略
【8月更文第28天】在微服务架构中,各个服务通常通过HTTP/REST、gRPC等协议进行交互。虽然这些方法在很多场景下工作得很好,但在需要高并发、低延迟或需要处理大量消息的情况下,传统的同步调用方式可能无法满足需求。此时,AMQP作为异步通信的一种标准协议,可以提供一种更为灵活和高效的消息传递机制。
34 1
|
3月前
|
测试技术 Java
全面保障Struts 2应用质量:掌握单元测试与集成测试的关键策略
【8月更文挑战第31天】Struts 2 的测试策略结合了单元测试与集成测试。单元测试聚焦于单个组件(如 Action 类)的功能验证,常用 Mockito 模拟依赖项;集成测试则关注组件间的交互,利用 Cactus 等框架确保框架拦截器和 Action 映射等按预期工作。通过确保高测试覆盖率并定期更新测试用例,可以提升应用的整体稳定性和质量。
74 0
|
4月前
|
测试技术 微服务
单元测试策略问题之单元测试和集成测试之间的分工是什么
单元测试策略问题之单元测试和集成测试之间的分工是什么
|
4月前
|
Java 测试技术 Spring
单元测试策略问题之平衡单元测试和集成测试的问题如何解决
单元测试策略问题之平衡单元测试和集成测试的问题如何解决