SVN-Importer轻松实现CVS到SVN迁移

本节和大家学习一下用SVN-Importer把CVS迁移到SVN解决方案,通过在学习SVN过程中遇到的一个实例来介绍,希望通过本节的学习,大家能够掌握用SVN-Importer把CVS迁移到SVN的方法。

最近有一个case,就是要将代码库从原先的cvs服务器,迁移到svn服务器。
原先使用过cvs2svn,但需要安装Python的支持,感觉不那么方便。发现原来还有另一个强大的工具,就是SVNImporter。
SVN-Importer不但支持cvstosvn,而且还支持cvsrcs、pvcs、vss、cc、mks等转移到svn服务器。此外,SVNImport是纯java编写的小软件,只要你机子上有jdk,那就可以直接使用了。
SVN-Importer有两种方案来迁移CVS的版本库。
1.使用SVN-Importer内置的JavaCVS通过pserver协议来导出数据;
2.使用RCS直接从CVS版本库文件系统中导出数据。
数据迁移过程分三步。和其它工具类似,都是读数据、生成DUMP、导入DUMP。整个过程及参数配置都在文档里写得比较详细。
SVN-Importer的安装和运行很简单。下载之后解压到某个目录即完成安装。安装目录下有一个run.bat文件。运行run.bat的时候要带2-3个参数。第一个参数是操作模式;第二个参数是配置文件;第三个参数指定一个日期,表示仅迁移这个日期之后的数据。
SVN-Importer有3种操作模式:完整、增量和列表。完整模式用于将源VCS的版本库数据全部导出;增量模式则用在第一次的完整模式之后,导出新增加的数据;列表模式只将要导出的数据显示出来,不实际导出。
至于配置文件,在安装目录下已经有一个config.properties作为示例。使用SVNImporter的时候只需要复制一份这个文件,再稍做修改即可。
配置文件中主要分四个部分:
第一部分,常规配置,这里选择源版本库,设置临时目录,以及中间文件的位置等。重要的一些设置如下:
srcprovider=源VCS,可以是cvs、cvsrcs、pvcs、vss、cc、mks等
import_dump_into_svn=yes或no,是否在生成DUMP文件之后立即导入SVN中(选否则不导入)
full.dump.file=完整模式时生成的DUMP文件路径
incr.dump.file=增量模式时生成的DUMP文件路径
incr.history.file=历史文件路径,这个文件在第一次完整模式时生成,以后使用增量模式时需要读取其内容。
第二部分是SVN相关的设置,主要包括svnadmin的位置和版本库中的一些设置。关键设置如下:
trunk_path=/trunk,主分支所在目录
branches_path=/branches,分支目录
tags_path=/tags,标签保存目录
svnimporter_user_name=SVN-Importer,创建版本库的用户名
svnadmin.executable=svnadmin的路径
svnadmin.repository_path=产生的SVN版本库路径
svnadmin.parent_dir=将数据导入版本库里的哪们目录。想设置为根目录,将这个值设置为.(点号)即可;或者可以设置成工程名。trunk、branches和tags都会产生在这个目录之下。
第三部分是对所选择的源VCS进行配置,用于导出数据。因为工作中只是为了迁移CVS的数据,所以只用到了导出CVS的两种配置。稍后说明。
第四部分是对日志文件的一些配置。
第一次是直接使用的srcprovider=cvs,通过pserver来导出数据。想对于cvsrcs来说,这个速度要稍慢一些,但是它不需要安装第三方的工具,只需要使用内置的JavaCVS就行,所以用来导出小项目还是比较好的。而且配置也比较简单,主要就是CVSROOT中的一些配置。
cvs.class=org.polarion.svnimporter.cvsprovider.CvsProvider
cvs.username=访问CVS版本库的用户名
cvs.password=上面用户名登录CVS版本库时的密码
cvs.hostname=主机地址
cvs.repository=CVSROOT目录
cvs.modulename=要导出的工程(或目录)
cvs.tempdir=存放临时文件的目录
用SVN-Importer把CVS迁移到SVN后来考虑到CVS里面的工程都比较大,而且可能需要直接从版本库文件导出数据(不是通过客户端去访问CVS版本库,而直接访问版库的文件),所以又尝试了使用srcprovider=cvsrcs。这个情况下要用GNURCS来导出CVS数据,所以需要安装RCS(http://www.gnu.org/software/rcs/rcs.html)。
RCS目前最新是5.7版,分3个包下载,分别是rcs57pc1、rcs57pc2和rcs57pc3。这3个文件包分别是编译好的二进制文件、文档和源码。其实只需要下载第一个包就行了,需要用到的也只是bin目录下的rlog和co两个命令而已。相关配置大概有:
cvsrcs.class=org.polarion.svnimporter.cvsprovider.CvsRcsProvider
cvsrcs.repository_path=CVS版库文件目录
cvsrcs.rlog_command=rlog命令的路径
cvsrcs.co_command=co命令的路径
cvsrcs.tempdir=保存临时文件的目录
配置好之后,一开始每次运行都失败,看日志也不知所云。大概是说某个文件没找到。于是决定手工运行rlog.exe来试试看。
rlog.execvsroot\common\common.sln,v
结果报错
rlog:cvsroot\common\RCS/common.sln,v:Nosuchfileordirectory
很奇怪,为什么rlog非要塞一个RCS/目录进去呢?后来在论坛上查到,使用cvsrcs的时候,需要设置环境变量RCSINIT=-x,v/,虽然看不明白是啥意思,不过设置了这个环境变量之后SVN-Importer跑成功了。
为了搞明白这个设置,所以只好去下载了RCS的文档来查看。在文档里搜索-x,v/,发现原来是配置RCS处理的文件后缀。未设置的情况下会去RCS子目录中查找文件。-x是设置后缀的参数,v是CVS版本库文件的后缀,而/是分隔符,其后没有东西表示为空。所以这个设置是兼顾,v文件和RCS/两种情况。
最后,由于CVS不能记录目录的更改历史,最后导入到SVN后,从HEAD里取出来的数据中有许多原来删除掉的目录和文件。感觉多冒出来的那些都应该是些空目录才对,搞不明白为什么还有一些删除掉的文件也冒出来了,还不太好找规律。所以,只好先对照从CVS里Checkout出来的最新版,删除掉多余的目录和文件之后,再Checkin到SVN中,这才算完成迁移过程。本节关于用SVN-Importer把CVS迁移到SVN解决方案介绍完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值