比较常见的版本控制分支策略有三种:不稳定主干策略、稳定主干策略、敏捷发布策略。

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

  不稳定主干策略

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

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

  比较适合诸如传统软件产品的开发模式,比如微软的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场景外应当避免。

[0] TFS 分支/标签的更多相关文章

  1. git入门 创建版本库, 版本管理 分支 标签

    参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...

  2. 使用TotoriseSVN的分支/标签功能

    使用TotoriseSVN的分支/标签功能 http://blog.sina.com.cn/s/blog_5383588c0100o1oo.html 原来在新建一个项目文件夹后,再把Trunk.Bra ...

  3. GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...

  4. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...

  5. git分支/标签操作

    git分支类似于某一个模块,等到所有模块开发完毕时,最后聚合在一起形成一个项目.而分支之间一般是不会受影响的. git 分支的基本操作: git branch branchname 表示创建分支,新建 ...

  6. TFS 分支导致nuget项目依赖丢失

    问题: 项目的代码 在tfs上分支后,签出项目.编译时发现无法编译,原有的nuget来的包的dll都丢失了(项目签入时,默认会忽略dll) 在网上找了下,发现一个简单的解决方法: 在"程序包 ...

  7. jsp2.0+中的标签文件,JSP Fragment技术

    刚进新公司不久,今天在看到项目中用到了.tag文件.刚开始我还以为这个是第三方类似freemarker的模板技术.问了下项目组的其他人员,原来这是jsp2.0以来就有的JSP Fragment技术.以 ...

  8. 红米3 TWRP-3.0.2(android_6.0.1_r72分支)中文版Recovery更新于20161018

    TWRP3.0.2更新简介 TWRP是TeamWin团队https://github.com/TeamWin/Team-Win-Recovery-Project的开源项目,也是Omnirom系统默认的 ...

  9. tfs 分支

    集团-IT部张强 11:15:211.主干时刻处于稳定状态,随时可以发布.设专门人员对主干代码进行管理,普通开发人员只读. 2.为开发任务建立开发分支.常规的可以以小组为单位建立分支,较大的任务可以建 ...

随机推荐

  1. Apache网站服务源码安装与站点部署

    简介: 在Internet 网络环境中,Web服务无疑是最为主流的应用系统,有了WEB站点,企业可以充分展示自己的产品,公司,宣传自己的企业形象,提供各种网上交流,业务平台等. Apache起源:源于 ...

  2. javascript 函数和作用域(闭包、作用域)(七)

    一.闭包 JavaScript中允许嵌套函数,允许函数用作数据(可以把函数赋值给变量,存储在对象属性中,存储在数组元素中),并且使用词法作用域,这些因素相互交互,创造了惊人的,强大的闭包效果.[upd ...

  3. JS第二弹:用Jquery组装html标签,输出到页面

    用Ajax从服务端获取数据,遍历到表格中(其实将表格替换了),中间发现不能为新增的元素绑定事件,原来是没有将其作为JQ对象

  4. 深入分析 Java I/O 的工作机制

    I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动.这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 ...

  5. C语言解析17monipdb.dat(http://www.ipip.net/)免费数据库

    官方给的链接打不开,而且里面的逻辑,每次都会打开文件,所以自己做了点个修改,发上来,借大家参考: #include <stdio.h> #include <stdlib.h> ...

  6. jQuery选择器的的优点

    jQuery选择器的的优点 选择器想必大家都不陌生,今天呢,我就给大家介绍一下jQuery选择器的优点: jQuery选择器更简洁的写法: jQuery完善的处理机制: jQuery选择器判断dom节 ...

  7. yii2 resetful 授权验证

    什么是restful风格的api呢?我们之前有写过大篇的文章来介绍其概念以及基本操作. 既然写过了,那今天是要说点什么吗? 这篇文章主要针对实际场景中api的部署来写. 我们今天就来大大的侃侃那些年a ...

  8. [开源] 基于ABP,Hangfire的开源Sharepoint文件同步程序----SuperRocket.SPSync

    (一)项目背景 Sharepoint是微软的一个产品,很多公司都在使用它,也有很多公司以前使用它,现在可能需要移植到别的平台,也可能只是移植其中的文件存储,比如说移植到微软云,或者亚马逊云存储.Sup ...

  9. idea 控制台输出 中文乱码 解决方法

    使用intellij idea 14.1时,console 会输出中文乱码.下面分两种情况解决这种问题:一种是maven构建项目.一种是tomcat(不以maven构建)构建项目. 1.tomcat输 ...

  10. Longest Substring Without Repeating Characters2015年6月9日

    Given a string, find the length of the longest substring without repeating characters. For example, ...