来自:iUseSVN.com
环境:
操作系统 Linux RH AS 4
cvs 1.11.22
repository位置 /data/cvs/cvsrepo
目标:将仓库cvsrepo导入到本机的svn仓库/data/svnrepos/test
采用工具:svn-importer-1.1-M8
下载地址:Importer for SVN by Polarion
操作策略:由于svn-importer采用的导出方式类似于数据仓库中的ETL
即抽取转化装载过程,总体思路分三步走。
抽取的过程是采用jar包封装的cvsclient,协议使用pserver,这样就保证了得到的源数据是准确的
不同于某些直接读取cvs仓库格式的工具,使得抽取过程可以扩展到其他版本控制工具,
事实上svn-importer也已经扩展了N多其他常见的版本控制工具
转换的过程是怎样的,我并不清楚,只知道转换后的结果是一个标准输出的字节流,如果将这个字节流存储为文件的形式,那个这个文件的格式和我们使用svnadmin dump 得到的文件格式是相同的。
事实上,抽取和转换的过程在我们看来是不可分割的。
装载过程其实就是svnadmin load,源是上文说的字节流,也可以是相应的dump文件
目的地就是svn仓库。
装载过程是可以和前两步分开的,也可以合在一起执行。
我采取的策略就是分开执行,先得到dump文件,然后自己手工执行svnadmin load
操作模式: SVN Importer有3种操作模式:完整、增量和列表。
QUOTE:
完整模式用于将源VCS的版本库数据全部导出;
增量模式则用在第一次的完整模式之后,导出新增加的数据;
列表模式只将要导出的数据显示出来,不实际导出。

最新回复
维护者 (2008-9-26 15:51:17)
svn-importer是通过读取配置文件来决定执行方式的,能否成功的关键就是配置文件是否正确
下面我结合自己的实际过程说一下主要需要注意的配置参数,一般是config.properties文件
# Provider settings
QUOTE:
# Import optionsQUOTE:
# Debug optionsQUOTE:
# SVN dump optionsQUOTE:
# SVN options svn环境,只有import_dump_into_svn为yes的时候才起作用QUOTE:
# CVS options 源版本控制系统的参数,必须设置正确,否则将报错,除了第一项和最后一项都要好好设置QUOTE:
# Log options 日志记录,一般无需修改QUOTE:
这些都可以结合自己的实际情况进行修改配置,也可以选择默认。维护者 (2008-9-26 15:52:37)
方式有两种
一是直接在终端输入命令行,参数可以是没有,一个两个或三个
java -jar svnimporter.jar arg1 arg2 arg3
当没有参数时,将显示usage
第一个参数必须是如下几个之一,full,incremental,list;help,version
使用help和veriosn时,只要一个参数就可以了
使用其他三个时,必须使用第二个参数,第二个参数指定配置文件的路径
第三个参数是可选参数,为最后一个版本的时间,如果指定了,则要导出该时间之前的版本
格式为YYYY-MM-DD'T'hh:mm:ss
YYYY - year
MM - month
DD - day in month
hh - hour (1-24)
mm - minutes
ss - seconds
第二种方式是,如果是windows系统,可以直接执行run.bat arg1 arg2 arg3
linux 系统可以自己编写run.sh
内容为
java -jar svnimporter.jar $1 $2 $3
然后chmod 755 run.sh
./run.sh arg1 arg2 arg3
3,svnadmin load SVNREPO_PATH <full_dump.txt
将dump得到的文件load进svn仓库