Jin最近负责的英语学习产品就快要上线了,这款新产品是公司的主产品。按照公司规定,必须通过测试部门的最终测试才能正式发布!按照以往的经验,Jin填写了一份测试申请,上面很详细的写出如何更新数据库,如何从SVN中更新代码到服务器,还有如何复制图片和声音文件。对于新产品的上线,Jin还是很重视的。
Jin把测试申请提交到小宋那里,小宋回复说测试申请审核通过,就可以测试和发布。小宋是一个个子不算高,很年轻的阳光男孩。他刚刚当上测试部经理不久,能在20岁冒头就当部门经理,Jin觉得他很幸运。新官上任三把火,小宋最近经常被更高级的领导训斥,真是阳光遇挫折,猛虎遇群狼。小宋告诉Jin,测试申请不合格,被打回!听完这话,Jin就是一愣。测试申请按照规定格式填写的,怎么会不合格呢?小宋给Jin看了高级领导老陈的谈话记录,老陈说:“任何需要测试和发布的内容,都必须有版本控制!而Jin提交的测试申请中,图片和声音文件根本没有进行版本控制”。看到这里,Jin心想,看来图片和声音文件也要签入到SVN。继续往下看老陈的说的:“使用SVN管理二进制文件是错误的!而且图片和声音文件足有好几个G,全部放到SVN进行管理,会笑死人”。按照常理,Jin肯定会开始抓狂,脾气就像山洪暴发一样……不过这次Jin没有这样。
老陈,据传说是一个超级牛人,在某大公司做过高级主管,还参与过Linux内核开发。这次是和公司老总一起出来创业,掌握着产品质量关。老陈平时不苟言笑,带着一副很深的眼镜,看起来是个知识分子。另外据说,老陈对Jin赞赏尤佳,所以应该不是在刁难自己。基于以上两点,Jin心里还保持着一种平和。再怎么说也不能得罪一个自己的牛人粉丝。
即要对声音和图片进行版本管理,但又不能使用SVN!这简直就是一对矛盾。Jin怎么也想不明白,最后实在没招了,只好鼓起勇气当面去问老陈。老陈的答复倒也挺简单,他说自己只要结果,不管我怎么进行版本控制。只要能进行版本演算,能回朔就可以!Jin听到这里,还是感觉不理解,但是也不好再多问什么了。回到自己座位上,Jin思来想去,渐渐觉得版本演算和回朔,应该是版本控制的一个关键。不使用SVN,应该也可以达到同样的目的。于是Jin写出了以下文字:
概述
为了能够回朔每次修改的内容,单词图片和声音文件也需要进行版本控制!但是使用SVN进行版本控制,并不合适。原因有两个:一是图片和声音文件都属于二进制文件,无法比较也没有必要比较版本之间的差异;二是图片和声音文件数量很多且体积也很庞大,全部加在一起有2G多,签入或签出到SVN会非常耗时;
解决方法
介于以上两个原因,采用目录结构来进行版本控制。具体目录结构如下:
* 基础版本目录
用于存放最原始版本的文件。该目录命名为base;
* 版本列表目录
用于存放每次修改时添加的新文件和删除的旧文件。该目录以日期格式命名,例如20100310。添加的新文件将被放置在insert目录中,例如20100310/insert,删除的旧文件将被放置在delete目录中,例如20100310/delete;
* 结果目录
用于存放演化结果文件。该目录命名为result;
整体目录结构形式如下:
root/
|
+-- base/
|
+-- 20100310/
| |
| +-- delete/
| |
| +-- insert/
|
+-- 20100311/
| |
| +-- delete/
| |
| +-- insert/
|
+-- result/
举个例子:
在base目录中存放着A.jpg、B.mp3、C.flv,那么演化结果如图1所示:
(图1)从基本版演变结果
在2010年3月10日,更新了A.jpg并添加了D.gif,那么演化结果如图2所示:
(图2)从20100310版本演变结果
注意,更新操作被认为是删除和插入的组合操作!先删除后插入。
在2010年3月11日,删除了C.flv并添加了E.flv,那么演化结果如图3所示:
(图3)从20100311版本演变结果
从基础版本演变
我们可以从基本版本开始,以向下迭代的方式演变到任何指定的版本!其算法过程是:
- 读取基本版数据,作为演算基础;
- 遍历第1个版本,读取delete目录中的内容,将这些内容从基本版数据中删除;读取insert目录中的内容,将这些内容插入到基本版数据中;
- 重复第2步,遍历第2、3、4……、N版本;
- 最终结果将存放在result目录中;
从结果回朔
我们可以从结果开始,以向上迭代的方式回朔到任何指定的版本!其算法过程是:
- 读取结果数据,作为回朔基础;
- 遍历最后版本,读取insert目录中的内容,将这些内容从基本版数据中删除;读取delete目录中的内容,将这些内容插入到基本版数据中;
- 重复第2步,遍历倒数第2、倒数第3、倒数第4……、倒数第N版本;
- 最终结果将存放在result目录中;
Jin重新填写了一份测试申请,在说明如何复制图片和声音文件的地方标准了版本号,这回顺利通过。Jin有了一个总结,工作中领导并不是要有意为难自己,和作风严谨的领导交谈,必须保持头脑清醒。如果领导真的是有意为难自己,那么也要顶住!因为这正是自己成长的机会。
用目录结构解决版本控制的方法有了,下周还要给老陈写一个小工具代码……
相关推荐
对svn日常使用、代码管理、版本管理、命名规范等做了说明。
SVN版本控制原理SVN版本控制原SVN版本控制SVN版本控制原理原理理SVN版本控制原理
svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本
利用SVN和AltiumDesigner进行PCB版本控制设计
pySvnManager 是群英汇开发的一个 开源版本控制Subversion 的管理后台,是用 Python 写的一个 Web 应用,用于管理 SVN 授权文件,只需要一个 SVN 授权文件即可工作,并且使用扩展的 SVN 授权文件进行 pySvnManager ...
这个批处理工具放到当前目录下,双击就会删除当前目录以及子目录下的所有svn 版本控制信息。
版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中, 确保由不同人所编辑的同一档案都得到更新。 版本控制透过文档控制(documentation control)记录程序各个模组的改 动,并为每次改动编上序号。...
SVN版本控制 SVN版本控制 SVN版本控制 SVN版本控制 SVN版本控制
svn版本控制工具 windows版本 安装版
最新SVN版本控制
ubuntu 版本控制器svn搭建,确认可以使用
SVN版本控制工具以及SVN集成Eclipse安装文件.
SVN版本控制器,方便代码管理
学习总结,这是一篇关于版本控制知识 与 SVN 软件操作的学习总结
svn之——linux下清除svn的用户名和密码.rar
版本控制svn_video 版本控制是视频教程;版本控制svn_video 版本控制是视频教程
svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制svn和myeclispe链接的版本控制
WINDOWS 批处理文件,能有效解除SVN版本控制,去掉对有SVN标志文件夹的操作限制。使用时把它放在你要解除SVN控制的文件夹下面,点击运行一下即可
了解开源软件配置工具SVN的安装、配置和使用。 二、实验内容 本实验需要完成以下任务: 1,安装SVN服务器端软件Visual SVN Server及配置。 2,安装SVN客户端软件TortoiseSVN及配置。 三、实验步骤 1,安装服务器端...