本节和大家一起学习一下VSStoSVN代码库迁移方案,和大家分享一下,看完本文你肯定有不少收获,希望本文VSStoSVN代码库迁移内容讲解能教会你更多东西。
 最近想把在VisualSourceSafe(VSS)上管理的代码库迁移到Subversion(SVN)中。但是不想丢弃VSS代码库上的历史,并且VSS代码库中有一部分目录和文件是中文的文件名。在经过大量的实验后终于把VSS代码库迁移到SVN了,并且中文目录、中文文件名还有历史版本信息能大部保留下来。在此把迁移心得分享出来,以免少走弯路。
 市面上能进行VSStoSVN代码库迁移的工具有VSStoSVN和SVN-Importer,以下对两种工具进行介绍。
 一、VSStoSVN
 是一个perl语言编写的转移工具,其编译成exe的转移程序基本不支持中文目录和中文文件名。网上很多介绍,还有什么拷贝一个*.dll文件到system32目录下后就可以支持中文目录和中文文件名也是没有可进行性的。但是从理论上说如你您对perl语言比较了解,说不定在一个perl语言下,地VSStoSVN进行初基的改造就可以支持中文目录和中文文件名。但如果您的vss代码库中没有中文目录和中文文件名,这个工具是一个不错的选择。
 二、SVN-Importer
 本人使用此工具成功的把含有中文目录和中文文件名的vss代码库转换到svn代码库中,并且现在已正常使用,除了部分含中文文件名的*.doc文件没有完全的代码过来(中文文件名中有个别字还是乱码)。以下是使用SVN-Importer的必须条件,只能完全按照以下配置,才有把含有中文目录和中文文件名的VSS代码库迁移到SVN中的可能性。
 2.1、必须使用JavaJDK1.4或IBMJAVASDK5.0作为SVN-Importer的Java运行环境。JavaJDK5.0、JavaJDK6.0作为Java运行环境时迁移出来的代码库中的中文基本就是乱码,具体原因没有研究。
 2.2、如果Windows是中文版的操作系统,那恭喜你需要修改“控制面板”中的“区域和语言选项”。在vss版本库中,时间格式一般是hh:mm:ss,日期格式一般是MM/dd/yy。所以如果系统时间格式和日期格式与vss的不一致会导致SVN-Importer不工作。
 2.3、svn版本库管理工具需要使用svn1.4或svn1.5版本。使用svn1.6时使用svnadminload导入damp文件时异常退出,原因不详。
 三、配置SVN-Importer的config.properties
 操作模式:SVNImporter有3种操作模式:完整、增量和列表。
 (1)、完整模式用于将源VCS的版本库数据全部导出。
 (2)、增量模式则用在第一次的完整模式之后,导出新增加的数据。
 (3)、列表模式只将要导出的数据显示出来,不实际导出。
 操作步骤:
 1、修改配置文件
 SVN-Importer是通过读取配置文件来决定执行方式的,能否成功的关键就是配置文件是否正确,下面我结合自己的实际过程说一下主要需要注意的配置参数

为伊吾等地区用户提供了全套网页设计制作服务,及伊吾网站建设行业解决方案。主营业务为网站设计、成都网站制作、伊吾网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
#Providersettings
 srcprovider=vss设置源vcs是什么系统,可以是cvs、cvsrcs、pvcs、vss、cc、mks等,我此处是vss
#Importoptions
 import_dump_into_svn=no是否将第三步和前两步连起来,我这里选择no
 existing_svnrepos=no当import_dump_into_svn设置为yes时,如果这个选项也设置为yes,那么只有svn的仓库已经存在,数据才能导入到svn的仓库中
 clear_svn_parent_dir=no如果这个被设为yes,并且import_dump_into_svn也设为yes,在导入数据之前,程序会删除所有在svn仓库父目录下的东东(只在完整模式下才有用)
 use_only_last_revision_content=no如果设为yes,则只导出源VCS的最后一个版本的内容,请看VSStoSVN代码库迁移介绍中的其他内容。
#Fileoptions下面这些文件,都既可以是以相对路径指定的,又可以是以绝对路径指定的
 full.dump.file=/data/cvs/full_dump.txt选择full方式dump,这个参数就会起作用,表示dump的结果文件
 incr.dump.file=incr_dump.txt增量模式时生成的DUMP文件路径
 incr.history.file=incr_history.txt历史文件路径,这个文件在第一次完整模式时生成,以后使用增量模式时需要读取其内容
 list.files.to=src_type_file.txt列表模式,这个是指定第一步从源VCS系统取出的内容,还转化成svn的dump文件前的东东
 dump.file.sizelimit.mb=0dump文件大小限制,0表示无文件大小限制
#Debugoptions
 disable_cleanup=no如果这个设置为yes,则从源VCS系统导出的临时文件不会被删除
#SVNdumpoptions
 trunk_path=trunk
 branches_path=branches
 tags_path=tags
 svnimporter_user_name=SvnImporter产生第一个版本的用户
 only_trunk=no是否只有trunk,如果选是,则只有trunk文件夹被导出到dump文件,branches和tags目录会被忽略
#SVNoptionssvn环境,只有import_dump_into_svn为yes的时候才起作用
 svnadmin.executable=c:/svn/svnadmin.exesvnadmin工具的位置
 svnadmin.repository_path=c:/SVN将被导入的目的仓库的路径
 svnadmin.parent_dir=.dump出来的文件将被导入的目录,相对于仓库内的路径,.表示仓库的根目录,其他值则为相对于仓库根目录的子目录,该目录将作为导入内容的父目录
 svnadmin.tempdir=c:/temp/local临时目录
 svnclient.executable=c:/svn/svn.exesvn客户端工具的位置
 svnadmin.verbose_exec=no如果设置为yes,则所有执行的svnadmin命令将被显示到终端。VSStoSVN代码库迁移介绍中SVNoptionssvn环境讲解完毕,下面看一下vssoptions。
#vssoptions
 vss.class=org.polarion.svnimporter.vssprovider.VssProvider
 vss.executable=c:\\VSS\\win32\\SS.exeVSS安装目录中的SS.exe命令程序
 vss.path=c:/software/FS_Draft_VssDatabaseVSS版本库位置
 vss.project=$/选择要导出的VSS版本库的相对路径
 vss.username=adminVSS版本库的登录用户
 vss.password=adminVSS版本库的登录密码
 vss.tempdir=c:/temp/vsstemp临时目录
 vss.log.dateformat=M/dd/yyHH:mm时间格式,这个特别要注意,设置错误后,将不能导出成功。
 vss.log.datelocale=en时间对应的语言
 vss.log.encoding=GB18030想成功导出含有中文目录和文件名必须设置成GB18030
#ifenabled-dumpoutputofvss.executablecommandtostdout
 vss.verbose_exec=yes
 #Logoptions日志记录,一般无需修改
 log4j.rootLogger=DEBUG,stdout
 本节关于VSStoSVN代码库迁移方案介绍完毕,请关注本节其他相关报道。
【编辑推荐】