维护多个软件版本的问题

来源:互联网 发布:爱奇艺2017出品网络剧 编辑:程序博客网 时间:2024/05/07 01:09

场景是这样的:

某个软件工程使用svn做版本控制,目前线上跑的版本是v1.0,并且这个版本已经打好tag,记为tag1,此时对应的数据库状态记为oracle1(o1);

目前正在开发v2.0,也就是trunk版,这个版本比v1.0增加了许多功能,此时的数据库状态是o2,o2比o1增加了一些表并且有些表增加了字段,此字段可能是非空的;

数据库环境有两套,一套是正式环境(线上),一套是测试环境(trunk);

v2.0版本开发大概需要4个月,现在已经完成了一半。

 

现在需求方提出要在线上版本v1.0的基础上增加一个功能,要求两个周上线,这个要实现的版本记为v1.1,并且该功能在v2.0中也要加上;

实现v1.1的过程中增加了几张表,但是没有对以前的表结构做改动(如果做了改动将是一个悲剧),此时的数据库状态为o3(o1上加了几张表);

我们把当前的工作环境切换为tag版v1.0,在v1.0的基础上实现了所需要的功能,但是我们由于直接在tag1上改的,所以tag1版(v1.0)已经不存在了;

做完了功能上线之前要做测试,发现数据库测试环境是o2,而o2版要改为o3版基本上是不划算的(因为某些表增加了非空字段,且已经产生了大量的测试数据,这些测试数据对开发v2.0版是非常有用的),所以要找到测试v1.1的数据库环境很困难,只能再建一个数据库(可以复制o1,然后改为o3)。。。。

测试完之后要上线,上线之前一定得备份线上版本(v1.0),因为这个可用版本已经在svn中不存在了,万一v1.1有问题,恢复就困难了;

还有一个麻烦的问题就是v1.1比v1.0增加的这些功能还要体现在v2.0中,这样还要对比v1.1对v1.0到底做了哪些改动,突然发现v1.0在svn上是没有的。。。

 

真是一个悲剧。