所谓的patch strategy,就是软件发布后出现bug时打补丁的方式 - 主要是关于源代码branch如何组织的方式

针对项目的开发阶段、开发状态、维护方式不同,可以有不同的patching strategy

一、trunk - release

  • 新版本从release branch发布
  • 适合只需维护最新版本的情况 - 一般工具类型的项目
  • 适合有较多的开发者在trunk上check-in代码的情况,因为trunk可能不太稳定,而且包含一些不想release的代码
  • 需要release时,从trunk分支选择需要的feature,integrate到release分支并发布
  • 同时,开发者继续在trunk上开发新feature
  • 如果新的发布版本有bug,在release分支上fix并重新发布,然后将fix integrate回trunk
  • 每次release,都要折腾release分支

二、trunk - patch

  • 新版本从trunk分支发布
  • 适合只需维护最新版本的情况 - 一般工具类型的项目
  • 适合开发者较少,代码改变不太大的情况,trunk的状态相对比较稳定。
  • 需要release时,直接从trunk分支release出去,最好打个label
  • 同时,开发者继续在trunk上开发新feature
  • 如果新的发布版本有bug,将代码从trunk分支integrate到patch分支,以上次发布的label为准,在patch分支fix并发布,然后将fix integrate回trunk
  • 如果没有production breakage,你无需关心patch分支

三、trunk - trunk_<version>s

  • 新版本从一个新的branch出去
  • 适合需要维护多个版本的情况 - 你可能需要在之前发布的几个版本上fix不同的bug - 一般为library类型的项目
  • 需要release时,从trunk分支integrate到trunk-<version>,并从trunk-<version>分支发布
  • 同时,开发者继续在trunk上开发新feature
  • 如果某个版本有bug,在该特定分支上fix并发布,然后将fix integrate回trunk
  • 需要操心多个分支

谈谈patch strategy的更多相关文章

  1. Oracle RAC环境下如何更新patch(Rolling Patch)

    Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情 ...

  2. Oracle RAC环境下怎样更新patch(Rolling Patch)

        Oracle RAC数据库环境与单实例数据库环境有非常多共性,也有非常多异性.对于数据库补丁的更新相同如此.都能够通过opatch来完毕.但RAC环境的补丁更新有几种不同的更新方式,甚至于能够 ...

  3. Python mock 的使用

    使用 mock 对象替换系统的一部分并且能获取它们的使用情况. 具体的说,你可以获取方法/属性的使用情况以及它们的调用参数.也可以指定返回值和设置属性. 思路是将对象设置为 mock 对象,然后根据需 ...

  4. 为什么你需要在用 Vue 渲染列表数据时指定 key

    本文改写整理自一篇博文,原文链接如下: Why you should use the key directive in Vue.js with v-for Application state and ...

  5. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  6. [ASP.NET]谈谈REST与ASP.NET Web API

    13天的假期结束,赶紧回来充电了 本节目录 Web API简介 自我寄宿 IIS寄宿 调用Web API Web API原理 Web API简介 REST REST是“REpresentational ...

  7. 基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

    1.前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版API网关,其它像Token身 ...

  8. 谈谈Vue.js——vue-resource全攻略

    本篇文章主要介绍了谈谈Vue.js——vue-resource全攻略,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧   概述 上一篇我们介绍了如何将$.ajax和Vue. ...

  9. opatch on-line patch and standby-fisrt patch

    opatch on-line patch and standby-fisrt patch on-line patch 有缺陷,不建议使用,standby-fisrt patch 可以考虑使用 #### ...

随机推荐

  1. php示例代码之 使用PHP的MySQL标准函数

    <?php //连接参数 $host="localhost"; $user="root"; $pwd="111111"; $db=&q ...

  2. Mongodb Manual阅读笔记:MongoDB教程

    Mongodb教程的说明,可以当手册用 Getting Started Install MongoDB on Linux Systems Install MongoDB on Red Hat Ente ...

  3. spring mvc基础配置

    web.xml 配置: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> ...

  4. java 的常用设计模式--大话设计模式

    设计模式:一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把 ...

  5. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  6. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项 解决方法

    在webconfig中加入这段话就可以了 <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:as ...

  7. Unknown class in Interface Builder file 解决方案

    在用swift项目打包Framework时,在项目中使用包时,报错: Unknown class in Interface Builder file... 网上很多解决方案,都不适合我的场景 最终解决 ...

  8. Linux信号类型说明

    说明 在Linux系统开发中经常要使用到信号来实现异步通知机制.而在Linux系统中信号有很多种,也不用全部记住,学习几种常见的信号,学会使用即可:当然也要知道用哪种方式能够发送这样的信号. 查看li ...

  9. http状态码详细说明

    100     客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完 ...

  10. android 设置布局横屏竖屏

    只要在AndroidManifest.xml里面配置一下就可以了.在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入android:screenOr ...