版本控制的分支策略及初步实践

这几天在网上查询了一些资料,了解到比较常见的版本控制分支策略有三种:不稳定主干策略、稳定主干策略、敏捷发布策略。

  下面是对这几种策略的摘录:

  不稳定主干策略

  使用用主干作为新功能开发主线,分支用作发布。

  被广泛的应用于开源项目。

  比较适合诸如传统软件产品的开发模式,比如微软的office等。

  bug修改需要在各个分支中合并。

  新代码在主干上开发,因此如果主干不能达到稳定的标准,就不可以进行发布。

  这种策略的好处是没有分支合并的工作量,因此比较简单。

  稳定主干策略

  使用主干作为稳定版的发布。

  bug的修改和新功能的增加,全部在分支上进行。

  不同的修改或新功能开发以分支隔离。

  分支上的开发和测试完毕以后才合并到主干。

  主干上的每一次发布都做一个标签而不是分支。

  每次发布的内容调整起来比较容易。

  缺点是分支合并所增加的成本。

  敏捷发布策略

  敏捷开发模式的项目中广泛采用,敏捷开发的项目具有固定的发布周期。

  为每个task建立分支。

  为每个发布建立分支,每个周期内的task分支需要合并到发布分支发布。

  在完成发布后,发布分支的功能合并到主干和尚在进行的任务分支中。

  一种稳定主干策略的变体。

  团队成员要求较高。

  团队当前情况

  负责互联网产品的开发,发布更新较为频繁。

  有固定的发布周期,同时也存在比较多的hotfix。

  修改任务通常比较小,改动范围通常不大,时间通常较短。

  不同的功能页面有不同的小组负责,耦合度相对较低。

  团队目前没有采用分支策略,开发人员协商进行增量更新,出现错误的几率较高。

  已使用微软TFS做为版本控制工具,可以更充分的挖掘使用TFS的分支功能。

  我的初步实践

  参考上述策略,结合当前团队的现状,我初步设计了下面的版本控制解决方案。

  此方案已稳定主干策略为主结合了一些敏捷发布策略的思路,具体实施方案如下:

  1、主干时刻处于稳定状态,随时可以发布。设专门人员对主干代码进行管理,普通开发人员只读。

  2、为开发任务建立开发分支。常规的可以以小组为单位建立分支,较大的任务可以建立专门的分支。

  3、在发布日,从主干复制一个测试分支,需要在本发布日发布的各开发分支向此测试分支合并。

  4、对测试分支代码进行测试,出现bug在测试分支上更改,无误后发布。

  5、测试分支代码发布后,合并入主干,并在主干上进行标记。

  6、对紧急修复(Hotfix)的情况,可以从主干复制出测试分支,在测试分支上进行紧急修改,并在测试后发布,发布后同样将代码合并会主干,做标记。

  7、 Hotfix仅限于可以很快解决的小问题,如果更改时间过长,则需采用常规方法完成。

  8、如果在测试分支测试过程中需要hotfix工作,则在复制一个新的测试分支进行hotfix,测试后发布。然后同时合并入原测试分支和主干,并在主干上做标记。此过程未在上图中画出。

  9、测试分支发布后,开发分支可以删除;测试分支合并入主干后,测试分支可以定期删除。

  方案的优缺点

  方案优点

  1、解决了没有实施分支策略时,代码不能经常签入的问题。

  2、主干代码始终处于稳定的状态随时可以发布,降低了风险。

  3、可以基于一个完整的测试分支进行测试及发布,而不是以口口相传的方式增量更新。

  方案缺点

  1、建立分支、合并分支增加了工作量。考虑实际情况,以及版本控制工具的辅助,增加的工作量应该可以接受。

  2、如果某些开发分支工期跨越多个发布周期,修改过于剧烈,合并分支时可能工作量较大。可以考虑分解任务,避免过大的任务出现。

  3、在同一时间最好只有一个测试分支,因此建立测试分支的权限需要限制,除hotfix场景外应当避免。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-13 21:07:17

版本控制的分支策略及初步实践的相关文章

React native for Android 初步实践

Facebook 于2015年9月15日推出react native for Android 版本, 加上2014年底已经开源的IOS版本,至此RN (react-native)真正成为跨平台的客户端框架.本篇主要是从分析代码入手,探讨一下RN在安卓平台上是如何构建一套JS的运行框架. 一. 整体架构 RN 这套框架让 JS开发者可以大部分使用JS代码就可以构建一个跨平台APP. Facebook官方说法是learn once, run everywhere, 即在Android . IOS.

阿里云王文彬:阿里云的发展策略和可信实践

7月15日至7月16日,由工业和信息化部指导,工信部电信研究院.中国通信标准化协会主办,数据中心联盟和云计算发展与政策论坛承办的"2014可信云服务大会"在北京国际会议中心盛大召开.本次会议以"可信中国云 未来新生态"为主题,积极推动了国内可信云服务认证体系的建立,促进云计算产业良性发展.工信部总工程师张峰.财政部政府采购管理办公室主任王瑛.中央国家机关政府采购中心主任王力达.工信部电信研究院院长曹淑敏.中国通信标准化协会秘书长杨泽民.工信部通信发展司副司长陈家春等

阿里云的发展策略与可信实践

阿里云的发展策略与可信实践 阿里云  王文彬 由工业和信息化部指导,工信部电信研究院.中国通信标准化协会主办,数据中心联盟和云计算发展与政策论坛承办的"2014可信云服务大会"在北京国际会议中心盛大召开.本次会议以"可信中国云 未来新生态"为主题,积极推动了国内可信云服务认证体系的建立,促进云计算产业良性发展.工信部总工程师张峰.财政部政府采购管理办公室主任王瑛.中央国家机关政府采购中心主任王力达.工信部电信研究院院长曹淑敏.中国通信标准化协会秘书长杨泽民.工信部通

大数据理念的初步实践

大数据理念的初步实践 崔克俊 一 大科学.大数据的基本概念 二 基于RSS的抓取 三 整站下载 四 数据的整合 五 应该注意的其他问题 大数据理念的初步实践

分布式版本控制Git分支管理策略及使用规范流程

Git分支管理策略 目前最流行的"版本管理系统",非Git莫属. 相比同类软件,Git有很多优点.其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便.有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用. 但是,太方便了也会产生副作用.如果你不加注意,很可能会留下一个枝节蔓生.四处开放的版本库,到处都是分支,完全看不出主干发展的脉络. Vincent Dr

C++程序设计-第九周分支结构程序设计上机实践项目

回到课程主页,链接:C++程序设计课程主页-2012级 本次上机对应的教学内容:第3章   C++程序设计初步中分支程序设计的部分. 练习+上机验证 [练习1]阅读下列程序,在准备期写出程序的运行结果.上机时运行程序,与你的预期进行对照.理解. 1. #include <iostream> using namespace std; int main() { int a=1,b=2,c=3; if(a<=c) if(b==c) cout<<"a="<&

Qunar用户画像构建策略及应用实践

1.用户画像的构建原则 我们做用户画像的目的有两个: 必须从业务场景出发,解决实际的业务问题,之所以进行用户画像要么是获取新用户,或者是提升用户体验,或者是挽回流失用户等有明确的业务目标 .根据用户画像的信息做产品设计,必须要清楚知道用户长什么样子,有什么行为特征和属性,这样才能为用户设计产品或开展营销活动.一般常见的错误想法是画像维度的数据越多越好,画像数据越丰富越好,费了很大的力气进行画像后,却发现只剩下了用户画像,和业务相差甚远,没有办法直接支持业务运营,投入精力巨大但是回报微小,可以说得

持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践

简介 在过去 5 到 10 年中,开发人员对企业应用程序中的实体进行持久化的方式发生了根本性变化.早期的企业应用程序使用数据库表和 表之间的外键关系进行实体建模.应用程序被看作查看和查询数据库底层模型的方式.近几年,数据库中的实体建模逐渐向应用程序对象 模型中的实体建模转变.现在大家已经意识到,数据库仅仅是存储对象结构所定义的持久化信息的一种机制.把建模从数据库转移到对象 模型中有许多优点,包括: 持久化实体与对它们执行的操作更紧密地集成 有助于创建松散耦合的应用程序组件 与关系数据库相比,面向

强密码策略的最佳实践

一次性密码(one-time password),客户证书(client certificate),智能卡(smart card),生物识别(biometrics)等技术为帐号安全添加了新的层次.双重身份认证(two-factor authentication)则进一步增强了系统的安全性.越是关键的系统,越应该具有更多的安全认证层次. 然而,传统的密码仍然是用户认证的主要方式.而且,尽管系统具有多层次的安全认证方式,它们都还是依赖于用户名和密码组合.在建立一个密码策略时,企业应该强调以下这三个关