最近想把公司原来用CVS管理的
代码迁移到SVN中去。主要是因为SVN是整个版本库共享一个版本历史,比较方便完整的Checkout某个工程。而且SVN还有一些CVS所不具有的良好特性,比如支持对目录版本进行
管理,支持重命名和移动等。
TestAge 中国软件测试时代gL*`+pJ!h II8q u[.b l:y 上网查了下,大部分人用cvs2svn来将CVS版本库迁移到SVN中。但是cvs2svn似乎要用Python来运行,我向来对这个日本人发明的脚本不感兴趣,所以希望能找到其它方案。最后发现SVN Importer。SVN Importer不仅可以进行CVS版本库到SVN版本库的迁移,而且还可以迁移PVCS、VSS、ClearCase、MKS、StarTeam等VCS(Version Control System,版本管理系统)的版本库到SVN。
TestAge 中国软件测试时代u D5gg9Q!|(F2z(u"@h8tU,r&P1L3o a 大家去Subversion主页的时候,通常都是直接去的www.subversion.org(subversion.tigris.org)。其实Subversion还有另一个主页www.subversion.com。.COM站我去得少,却没想到一进去最明显的那个位置就是SVN Importer。这个
工具是用Java实现的,需要JRE来运行。而且,由于SVN Importer几乎都是
使用源VCS自带的命令行
工具来导出
数据,所以需要安装源VCS。另外,SVN Importer向SVN导入数据的时候,用的是Subversion的svnadmin,所以还需要安装Subversion。
"d(c+? ~!NTestAge 中国软件测试时代x bbnJ.N#?5cr Q SVN Importer有两种方案来迁移CVS的版本库。
A,H$r D8F.p5O7J9Lj0Rr;v#VeWjW 1. 使用SVN Importer内置的Java CVS通过pserver协议来导出数据;
W;`*zY*Z$y*^r T 2. 使用RCS直接从CVS版本库文件系统中导出数据。
U BbW&Pia4}"QTestAge 中国软件测试时代XPi}R[l7B 数据迁移
过程分三步。和其它工具类似,都是读数据、生成DUMP、导入DUMP。整个过程及参数配置都在文档里写得比较详细。文档目前只有英文的,不过目前Subversion中文站(www.subversion.org.cn)正在翻译SVN Importer的文档,相信中文文档不久就会面世。顺便打个广告——请有兴趣翻译的朋友与subversion.org.cn站长联系(http://www.subversion.org.cn/index.php?option=com_contact&Itemid=3),申请加入翻译队伍。
TestAge 中国软件测试时代6GR^Sv QTestAge 中国软件测试时代#r6SK Q \ Q9A 中文文档出台之前,总不能就不用SVN Importer吧,所以我就根据个人经验简单的介绍下吧。
TestAge 中国软件测试时代o!b8ikJ.z.nGt;N Ad*K)j ? SVN Importer的安装和运行很简单。下载之后解压到某个目录即完成安装。安装目录下有一个run.bat文件。运行run.bat的时候要带2-3个参数。第一个参数是操作模式;第二个参数是配置文件;第三个参数指定一个日期,表示仅迁移这个日期之后的数据。
TestAge 中国软件测试时代2n-[tcuaJ a7douG*O`%@8W,| SVN Importer有3种操作模式:完整、增量和列表。完整模式用于将源VCS的版本库数据全部导出;增量模式则用在第一次的完整模式之后,导出新增加的数据;列表模式只将要导出的数据显示出来,不实际导出。
s&iarh-s7{_5M:`*ny/gP @R6z8lC 至于配置文件,在安装目录下已经有一个config.properties作为示例。使用SVN Importer的时候只需要复制一份这个文件,再稍做修改即可。
.tR b Viq+w#YTestAge 中国软件测试时代l+F` f(J E:C(Xj 配置文件中主要分四个部分:
TestAge 中国软件测试时代'D0`'_q']%PW"sTestAge 中国软件测试时代6R w)gf2i,Z%i(u Q 第一部分,常规配置,这里选择源版本库,设置临时目录,以及中间文件的位置等。重要的一些设置如下:
TestAge 中国软件测试时代3kSQ^G0h+S/|T;b x:I1]4D a'|6j srcprovider=源VCS,可以是cvs、cvsrcs、pvcs、vss、cc、mks等
TestAge 中国软件测试时代}q$g`!o{*Ts.f import_dump_into_svn=yes或no,是否在生成DUMP文件之后立即导入SVN中(选否则不导入)
TestAge 中国软件测试时代/?C'OF5hj-r full.dump.file=完整模式时生成的DUMP文件路径
TestAge 中国软件测试时代a Q2e9P4pj['cI9M4m incr.dump.file=增量模式时生成的DUMP文件路径
TestAge 中国软件测试时代H'[E0Jl7g-x)M incr.history.file=历史文件路径,这个文件在第一次完整模式时生成,以后使用增量模式时需要读取其内容。
TestAge 中国软件测试时代0\T,D~$zl%SH xTestAge 中国软件测试时代K*wl.E&t}6g 第二部分是SVN相关的设置,主要包括svnadmin的位置和版本库
中的一些设置。关键设置如下:
/M5oN&i A|t m;UTestAge 中国软件测试时代7ONj`a/{F.D trunk_path=/trunk,主分支所在目录
TestAge 中国软件测试时代-W}4[/_9T^lH branches_path=/branches,分支目录
)iSe&p5B.R XdT tags_path=/tags,标签保存目录
T:xx O,}&| svnimporter_user_name=SvnImporter,创建版本库的用户名
TestAge 中国软件测试时代)@2?v#i^(? svnadmin.executable=svnadmin的路径
TestAge 中国软件测试时代^b-Nn$iZ`^ y svnadmin.repository_path=产生的SVN版本库路径
2O4R)@;hI5Fx svnadmin.parent_dir=将数据导入版本库里的哪们目录。想设置为根目录,将这个值设置为.(点号)即可;或者可以设置成工程名。trunk、branches和tags都会产生在这个目录之下。
TestAge 中国软件测试时代/{Z*Ztw d7no&?
6iDey gt:E)tVe