1、背景

随着公司业务拓展,各业务部门频繁的需求变更,导致系统集成冲突的问题日益突出。

2、现状

基于SVN版本管理模式,多分支版本并行,分支合并主干交付。多分支开发存在依赖关系且有交付的先后顺序, 导致了合并主干冲突。

3、解决方案

业务版本号(4位主干版本号)与SVN版本号的映射关系

+

主干版本号与分支版本号的映射关系

3.1名词解释:

3.1.1业务版本号:提测版本号,即当前的主干版本号,由四位数字组成,如: DUPFJ V1.0.1.1 。

3.1.2 SVN版本号:SVN每次提交操作后自动生成且末位数字+1

3.1.3主干版本号:主干版本号(即业务版本号)与SVN版本号的映射关系

3.1.4分支版本号:不限制,分支可有可无,分支数量无要求

3.1.5 SVN实现方式

实现方式:

①拉分支记录主干当前业务版本号(同最后一轮转测版本号)

②合主干记录提测主干版本(这里说的版本号统一是业务版本号,业务版

本号映射svn版本)

③回滚版本,根据源码交付操作记录获取当时主干版本号进行回滚版本

3.2解决方案

存在的问题:

1、  主干回滚频率高;

2、  技术能力(SVN操作、冲突解决的能力)

3、  项目编排(先后顺序、依赖关系)

以上三个问题,均归属于技术风险。

问题1解决方案:SVN合并主干规范化。通过规范SVN合主干描述中的业务版本号,确保频繁回滚主干的规范性。

问题2解决方案:通过持续交付系统实现对SVN的自动化操作。

根据持续交付系统的SVN操作记录,实现多项目并行交付。

持续交付系统会记录SVN上每次的操作记录(log信息),记录项目、主干版本号、分支版本号和归档版本号的映射关系。

合并主干时:

待提测主干版本号末位-1是否与映射关系记录中当前主干版本号一致;

1、  一致:直接合并主干;

2、  不一致:

1)主干版本号末位-1在映射关系记录中有记录,但并不是当前主干版本号时

实现方式:先回滚再合并主干

①先回滚至主干版本号末位-1的主干版本;

②再合并主干;

示例:待测主干版本号2.0.2.4,末位-1为2.0.2.3,在映射关系记录中有记录,但并不是当前主干版本号

①先回滚至2.0.2.3

②回滚成功后再合并主干

2)主干版本号末位-1在映射关系记录中没有记录时

实现方式:先回滚再合并主干

①主干版本号前三位为分支版本号,通过分支版本号找到与最初主干版本号的映射关系(即第一个分支与主干版本号的映射关系),先回滚至该主干版本;

②再合并主干;

示例:待测主干版本号2.0.2.1,末位-1为2.0.2.0,在映射关系记录中没有记录

①主干版本号2.0.2.1,由此可以确定分支版本号为2.0.2,分支版本号可以确定该分支与最初主干版本号2.0.1.3存在映射关系。先回滚至最初主干版本号2.0.1.3。

②回滚成功后再合并主干;

问题3解决方案:通过项目上线的优先级解决。优先级高的项目优先编排,优先合主干。

4 总结

技术风险是可控的风险,可以通过持续交付系统规避或降低,将技术风险控制在可控的低风险范围。

业务风险不可控,业务风险不可预测且随着对业务覆盖率的要求和业务节点的增加,将会导致,风险越来越大,这种业务风险是不可控制的。

业务覆盖:由于节点增多,测试疲劳导致业务覆盖率降低

业务节点:交付节点由一个变成了两个,交付节点出现问题的概率就会增加。

技术风险比业务风险低且可控。

综合分析,方案一更合适。

SVN多项目并行版本管理解决方案的更多相关文章

  1. IntelliJ IDEA项目断开版本管理解决方案

    今天使用idea时打开项目突然发现项目不受svn管理(项目目录依然受svn管理,只是idea脱管了),如遇到可用以下方法: 图片示例: 1. 2. 希望能帮到你

  2. 使用SVN进行项目版本管理

    1.摘要 本文描述了利用SVN进行项目版本管理的方法,涉及项目版本号命名规则.SVN目录结构.第三方代码库的管理.版本创建.发布.修订.合并等行为的方法和原则. 2.版本号命名规则 版本号采用主版本号 ...

  3. [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)

    [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...

  4. svn导入项目和部署方面的相关问题

    前一阵子忙于部署项目的事情,在这个过程之中遇到了一些问题,查阅了相关资料解决了问题于是就决定分享给大家,可能会对大家有一定的帮助.我在下面中可能会提到dubbo的一些问题,dubbo是用于分布式的系统 ...

  5. 用好Git 和 SVN,轻松驾驭版本管理

    用好Git 和 SVN,轻松驾驭版本管理 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令. 一.Git vs S ...

  6. vs出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案

    经过本人测试,这种问题一般出现在装了svn的项目. 其实删除了删除sln和csproj文件中的SVN配置信息就行了 需要删除的信息 sln文件中: GlobalSection(SubversionSc ...

  7. ZendStudio 解决svn导出项目乱码问题

    从svn导出项目往往会出现乱码,可以右击项目,点击properties(或者选中项目alt+enter键进入)直接修改项目编码为utf-8,但是html文件还是乱码. 下面的方法可以解决: windo ...

  8. Linux - SVN下载项目

    SVN下载项目 本文地址:http://blog.csdn.net/caroline_wendy 使用SVN.在Git上下载项目. $ mkdir chunyu_trunk //创建目录 $ ls / ...

  9. svn部署项目

    svn部署项目 在svn服务器上文件夹拷入项目文件~然后直接检出文件夹~即可

随机推荐

  1. A - 饭卡

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家 ...

  2. Android-Java-静态变量

    描述Person对象: package android.java.oop09; // 描述Person对象 public class Person { private String name; pri ...

  3. linq转载

    在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...

  4. WeexSDK之注册Handlers

    先看代码: + (void)_registerDefaultHandlers { [self registerHandler:[WXResourceRequestHandlerDefaultImpl ...

  5. 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图

    [源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...

  6. DOM扩展:DOM API的进一步增强[总结篇-上]

    DOM1级主要定义了文档的底层结构,并提供了基本的查询操作的API,总体而言这些API已经比较完善,我们可以通过这些API完成大部分的DOM操作.然而,为了扩展DOM API的功能,同时进一步提高DO ...

  7. Android数据存储之SQLite使用

    SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行. 在Android中创建的SQLite数据库存储在:/d ...

  8. Spring Boot 单元测试详解+实战教程

    Spring Boot 的测试类库 Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块. spring-boot-test:支持测试的核心内容. spring-b ...

  9. Create and Embed an Application Manifest (UAC)

    http://msdn.microsoft.com/en-us/library/bb756929.aspx 可以在VS2008中设置当执行exe时弹出提升管理员权限对话框:xx Property-&g ...

  10. 829. 连续整数求和-leetcode

    题目:给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N? 示例 1: 输入: 5 输出: 2 解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5. ...