微软的 SourceSafe 使用简单,而且与 Visual C++ 开发环境结合得非常好,所以许多人一开始进行版本控制时往往选
择 SourceSafe。但是 SourceSafe 不具备许多关键的特性,比如:不能建分枝,不能建标记等等,而且还有安全方面
的问题。所以在使用了一段时间以后,对版本控制的概念熟悉了以后,可能想转移到其他的版本控制软件。许多商业的版
本控制软件(比如:ClearCase)都提供了从SourceSafe到自己的转换工具,开放源码的CVS也有两个这样的转换工具。
一个是 vss2cvs.pl,这是一个 perl 脚本,我曾经试用过,但是没有成功。另外一个是 VSSExtractor,经过一天的
摸索,终于成功地用VSSExtractor 把我以前的 SourceSafe 数据转换到 CVS 中。我现在把我转换的过程写下来,希
望对大家有所帮助。
一、需要的软件
1、从http://sourceforge.net/projects/vssextractor/ 下载 VSSExtractor,需要两个文件
cserver-0.7.1.tar.gz 和 VSSExtractor-0.7.1.zip
2、下载CVS 源码http://ftp.cvshome.org/cvs-1.11.1/cvs-1.11.1p1.tar.gz,VSSExtractor 只能使用这个版
本的CVS。
3、如果需要自己编译 VSSExtractor,还需要 xml-xerces-1.4.0的源文件,在 apache 网站上没有打包好的,我是
用CVS得到的。用如下命令:
set CVSROOT=:pserver:[email protected]:/home/cvspublic
cvs login
(密码:anoncvs)
cvs co -r Xerces-C_1_4_0 xml-xerces
二、编译和运行cserver
为了叙述方便,假定cvs-1.11.1p1.tar.gz和cserver-0.7.1.tar.gz都放在~/cserver目录下。
1、 开cvs-1.11.1p1.tar.gz和cserver-0.7.1.tar.gz。在 ~/cserver 目录下用如下命令:
tar –xzvf cvs-1.11.1p1.tar.gz
tar –xzvf cserver-0.7.1.tar.gz
2、打补丁。在~/cserver/cvs-1.11.1p1目录下,输入如下命令:
patch -p1 < ../cserver/patch/cserver-0.7.1.patch
3、编译。在~/cserver/cvs-1.11.1p1目录下,输入如下命令:
./configure
make
4、编辑~/cserver/cvs-1.11.1p1/src 目录下的cserver.conf。主要是Cvsroot项,改成真正的CVS Repository的
路径,建议新建一个Repository,不要使用有重要数据的,转换弯成以后再把目录复制到生产环境里。cserver.conf的
其他的项可以不动。
4、运行cserver。在~/cserver/cvs-1.11.1p1/src目录下,输入如下命令:
./cserver
三、编译和运行VSSExtractor
解开VSSExtractor-0.7.1.zip,根据自己的配置修改 VSSExtractor.ini 文件,需要修改的选项有:
1、SSDir SourceSafe 数据库的位置。
2、VSSPath ss.exe 可执行文件的位置,一般为 visual studio安装目录\common\vss\win32
3、TempDir 临时目录
4、Server 运行 cserver 的Linux 机器的 IP 地址或机器名。
5、Project 要转换的 SourceSafe Project
修改完这些选项以后,就可以运行 VSSExtractor 来进行转换了。但是还有两个问题需要注意:
1、VSSExtractor 使用当前用户登录系统时的用户名来登录SourceSafe,所以需要在SourceSafe中建立一个与当前登
录名相同的用户,没有密码,该用户要对需要转换的工程有读权限。
2、由于VSSExtractor是老外开发的,而老外显示日期的格式与中国人不一样,所以在转换以前使用控制面板中的“区域
选项”,把“您的区域设置(位置)”暂时改为“英语(美国)”。或者修改VSSExtractor的源代码,修正这个错误,重新编
译。