svnadmin.parent_dir=將數據導入版本庫里的哪們目錄。想設置為根目錄,將這個值設置為.(點號)即可;或者可以設置成工程名。trunk、branches和tags都會產生在這個目錄之下。
第三部分是對所選擇的源VCS進行配置,用于導出數據。因為工作中只是為了遷移CVS的數據,所以只用到了導出CVS的兩種配置。稍后說明。
第四部分是對日志文件的一些配置。
第一次是直接使用的srcprovider=cvs,通過pserver來導出數據。想對于cvsrcs來說,這個速度要稍慢一些,但是它不需要安裝第三方的工具,只需要使用內置的Java CVS就行,所以用來導出小項目還是比較好的。而且配置也比較簡單,主要就是CVSROOT中的一些配置。
cvs.class=org.polarion.svnimporter.cvsprovider.CvsProvider
cvs.username=訪問CVS版本庫的用戶名
cvs.password=上面用戶名登錄CVS版本庫時的密碼
cvs.hostname=主機地址
cvs.repository=CVSROOT目錄
cvs.modulename=要導出的工程(或目錄)
cvs.tempdir=存放臨時文件的目錄
后來考慮到CVS里面的工程都比較大,而且可能需要直接從版本庫文件導出數據(不是通過客戶端去訪問CVS版本庫,而直接訪問版庫的文件),所以又嘗試了使用srcprovider=cvsrcs。這個情況下要用GNU RCS來導出CVS數據,所以需要安裝RCS。
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.exe cvsroot\common\common.sln,v
結果報錯
rlog: cvsroot\common\RCS/common.sln,v: No such file or directory
很奇怪,為什么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中,這才算完成遷移過程。
文章來源于領測軟件測試網 http://www.kjueaiud.com/