SVN多项目并行版本管理解决方案

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解决方案:通过项目上线的优先级解决。优先级高的项目优先编排,优先合主干。

方案二

存在的问题:

1、  拉长了周期、增加了节点

2、  重复的测试内容(分支测试+合主干测试)

3、  冲突转嫁(分支1和分支1测试,节点增加,造成冲突转嫁更节点增多,且冲突转嫁至质控,质控处理冲突的效率可能会低于研发处理完成的效率)

以上三个问题,均归属于业务风险。

4 总结

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

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

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

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

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

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

时间: 2024-10-29 19:06:36

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

使用SVN进行项目版本管理

1.摘要 本文描述了利用SVN进行项目版本管理的方法,涉及项目版本号命名规则.SVN目录结构.第三方代码库的管理.版本创建.发布.修订.合并等行为的方法和原则. 2.版本号命名规则 版本号采用主版本号.次版本号.修订号组成.版本的重大变化主版本号增1,次版本号和修订号归零.版本的相对较小的变化主版本号维持不变,次版本号增1,修订号归零.当一个版本发布后出现了bug需要修订,此时,主.次版本号不变,修订号增1. 注意:对于主动性的程序功能性的变化,应该增加主或次版本号,不应该通过修订号来反映.修订

新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法

新建空白解决方案的步骤:文件--新建项目--其他项目类型--Visual Studio 解决方案 这样就建立出了一个空白解决方案. 然后在资源管理器中可以添加项目,但是添加项目的时候会发现,解决方案消失了,解决办法  工具--选项--项目和解决方案(如果看不到这个,在下方有一个显示所有设置打勾),然后右边有一个 总是显示解决方案.勾上,解决方案就出现了 记录一下. 新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法,布布扣,bubuko.com

SVN更新项目&vs2015编译项目批处理文件

SVN更新项目批处理文件代码: 新建批处理文件(xxx.bat)内容如下: @echo off @echo 项目名称"svn运行目录" update "项目文件目录" --username svn帐号 --password svn密码pause 例: @echo off @echo XXXX"c:\Program Files (x86)\VisualSVN\bin\svn.exe" update "X:\X\X" --user

Work - SVN下载项目

SVN下载项目 本文地址:http://blog.csdn.net/caroline_wendy 使用SVN,在Git上下载项目. $ mkdir chunyu_trunk //创建文件夹 $ ls //查看列表 $ svn co https://dev.cxxxyx.mobi/svn/android/SxxxxRxxxDxxxx/branches/recode_60/ . //把路径文件checkout到当前文件夹, 最后一个点".",表示当前目录. //co表示checkout $

怎样使用svn开发项目

那么首先什么是svn呢?官方有很好的解释,我说一下个人简单的理解,svn就是开源的版本控制软件, 那么什么是版本呢?简单的说版本就是标记,比如你买了一本书,同样的书名,但是版本不一定一样, 因为里面可能补充了一点内容,为了区分,就修改了版本号,大家可以这么理解.要想使用svn软件首先就得 安装,在服务器安装svn软件,创建项目文件夹shop,然后(下面是本机安装svn的操作) 创建仓库 dos:> svnadmin create d:/svnServer/myapp/shop 里面会生成一些文件

Linux - SVN下载项目

SVN下载项目 本文地址:http://blog.csdn.net/caroline_wendy 使用SVN.在Git上下载项目. $ mkdir chunyu_trunk //创建目录 $ ls //查看列表 $ svn co https://dev.cxxxyx.mobi/svn/android/SxxxxRxxxDxxxx/branches/recode_60/ . //把路径文件checkout到当前目录, 最后一个点".".表示当前目录. //co表示checkout $ r

svn不能提交静态库解决方案

1用命令行(Terminal)下的svn命令svn add libzbar.asvn commit -m "add static lib libzbar.a"2用第三方svn工具,别用Xcode自带的,比如CornerStone, Versions等 (第三方工具需要进行设置后,才能提交.a文件) svn不能提交静态库解决方案,码迷,mamicode.com

将svn的项目从一台服务器转移到另外一台服务器

前几天在做一个项目的时候,因为需要,需要将Server A 上SVN仓库 repos1中的项目pro1迁移到Server B 上的SVN仓库中,首先想到的是:通过复制,但是仔细一想,这样是不可能的:然后想到的是先把项目pro1 checkout到本地,然后再 将本地的项目 import 到 ServerB的svn仓库中,但这样一来,ServerB上的SVN仓库中 就好比完全是一个新的pro1项目了,也就失去了svn管理的意义了.下面有一种方法可以解决: (在进行下面的操作时,请注意备份仓库数据,

Android: 解决SVN更新项目后报错

解决SVN更新项目后报错 解决方法: 1.查看AndroidManifest.xml 和   project.properties文件是否配置正确,不正确 就修改适合当前开发环境的配置: 2.选择ADT的菜单项Project------------->clean  清理项目: 3.还不行的话,最后就重新打开ADT,基本上就解决了,再报错的话,那就是代码问题了,代码错误. PS: 项目不能生成R.java文件,Clean也不行的话,一定要看控制台输出的错误信息,根据错误信息去更改代码或文件,例如r