VSSExtractor的使用
该工具可以把VSS的工程转化为CVS的工程转换需要两个程序,一个是VSS端的VSSExtractor.exe,基于window的平台,一个是CVS端的cserver,基于linux.版本。
我使用的是0.7.2版本的,本来他的cserver程序需要做cvs的补丁才可以的,这个版本已经直接patch过了, 而且带了他要求的cvs1.11.1p1,省
去了自己下载cvs在patch的过程了。直接编译就好。window下的VSSExtractor.exe直接使用就好了。
配置方法:
cserver只要配置cserver.conf文件就好
#
# Cserver configuration file
#
# Ports 默认的就挺好
[CommandPort] 4555
# WARNING : data port MUST be command port + 1 默认的就挺好
[DataPort] 4556
# CVS repository 改为自己想要生成的cvs工程的目录,不需要是cvs的仓库(CVSROOT目录)
[Cvsroot] /root/software/cvs/src
# tmp directory
[TempDir] /tmp
# logfile 文件的路径要存在,否则提示不能打开logfile,同时会发生一起奇怪的错误。
[logFile] /root/software/cvs/cserver.log
VSSExtractor.exe只要配置VSSExtractor.ini就好
#
# VSSExtractor configuration file
#
# SourceSafe server repository 你的仓库路径,也就是srcsafe.ini文件所在位置
[SSDir] E:\VSS仓库
# Login and password for the SourceSafe server
# data format is -Ylogin,pass 好象不起作用,必须win系统建立一个同名帐号
[VSSLOGINPASS] -Ylogin, pass
# Sourcesafe language, supprted languages are English, Freanch
and German
[VSSLANG] english
# Local computer parameters 设置VSS的执行程序信息
[VSSPath] E:\VSS仓库\win32
[VSSExec] ss.exe
[Tempdir] c:\temp
# Conversion server name & port 服务器名字和端口
[Server] www.redhat24.com
[Port] 4555
# Projects to convert - there can be more than one 想要转换的工程,可以多个
[Project] $/test1
[Project] $/test2
# Conversion mode - Toggle to No when you want to use an existing
XML file
[GenerateXML] Yes
# Edition mode - Toggle to No when you want standard conversion
[EditXML] Yes
# Recurse through the project tree ?
[Recursion] Yes
# Names for the output files
[XMLfile] tree.xml
[Logfile] logfile.txt
配置好后,先运行cserver,在运行VSSExtractor.exe就行了,剩下的事情会自动完成的。
注意事项:
必须在VSS建立一个和windows的系统用户同名的帐号,VSSExtractor.exe是用当前登陆用户来操作VSS仓库的。
linux的机器并不需要cvs的服务器就可以,cserver做了所有的事情。
中间碰到一些奇怪的现象:
服务器的名字要用dns解析出来的,我是自己安装了一个dns服务器,把www.redhat24.com指向我自己的linux机器,查看代码发现,VSSExtractor.exe是用gethostbyname查找server的name,然后在通过找到的IP连接服务器。我不知道这个函数是否还用其他的方法找地址。
我测试过修改hosts文件是不行的。当然也可以通过修改程序在编译解决。记得是NetInterface类的函数ConnectServer里面调用的。
我开始转的时候,老是提示什么DOS路径无效的提示,后来我把vss用户下的ss.ini文件删除就好了。他可能通过ss.ini里面的信息checkout文件,ss.ini里面记录了我工程的checkout路径。我的工程路径带中文,可能不支持。
在VSSExtractor.exe分析VSS工程的时候,有些工程老是提示什么parse event[2]的错误,工程应该没有问题,我后来是通过把有问题的工程先share为另外一个工程名,在转新的工程就没有问题了,照道理他们的历史记录是一样的,比较奇怪。