最近想把公司原來用軟件測試的配置管理-CVS管理的代碼遷移到SVN中去。主要是因為SVN是整個版本庫共享一個版本歷史,比較方便完整的Checkout某個工程。而且SVN還有一些CVS所不具有的良好特性,比如支持對目錄版本進行管理,支持重命名和移動等。
上網查了下,大部分人用cvs2svn來將CVS版本庫遷移到SVN中。但是cvs2svn似乎要用Python來運行,我向來對這個日本人發明的腳本不感興趣,所以希望能找到其它方案。最后發現SVN Importer。SVN Importer不僅可以進行CVS版本庫到SVN版本庫的遷移,而且還可以遷移PVCS、VSS、ClearCase、MKS、StarTeam等VCS(Version Control System,版本管理系統)的版本庫到SVN。
大家去Subversion主頁的時候,通常都是直接去的www.subversion.org(subversion.tigris.org)。其實Subversion還有另一個主頁www.subversion.com。.COM站我去得少,卻沒想到一進去最明顯的那個位置就是SVN Importer。這個工具是用Java實現的,需要JRE來運行。而且,由于SVN Importer幾乎都是使用源VCS自帶的命令行工具來導出數據,所以需要安裝源VCS。另外,SVN Importer向SVN導入數據的時候,用的是Subversion的svnadmin,所以還需要安裝Subversion。
SVN Importer有兩種方案來遷移CVS的版本庫。
1. 使用SVN Importer內置的Java CVS通過pserver協議來導出數據;
2. 使用RCS直接從CVS版本庫文件系統中導出數據。
數據遷移過程分三步。和其它工具類似,都是讀數據、生成DUMP、導入DUMP。整個過程及參數配置都在文檔里寫得比較詳細。文檔目前只有英文的,不過目前Subversion中文站(www.subversion.org.cn)正在翻譯SVN Importer的文檔,相信中文文檔不久就會面世。順便打個廣告——請有興趣翻譯的朋友與subversion.org.cn站長聯系(http://www.subversion.org.cn/index.php?option=com_contact&Itemid=3),申請加入翻譯隊伍。
中文文檔出臺之前,總不能就不用SVN Importer吧,所以我就根據個人經驗簡單的介紹下吧。
SVN Importer的安裝和運行很簡單。下載之后解壓到某個目錄即完成安裝。安裝目錄下有一個run.bat文件。運行run.bat的時候要帶2-3個參數。第一個參數是操作模式;第二個參數是配置文件;第三個參數指定一個日期,表示僅遷移這個日期之后的數據。
SVN Importer有3種操作模式:完整、增量和列表。完整模式用于將源VCS的版本庫數據全部導出;增量模式則用在第一次的完整模式之后,導出新增加的數據;列表模式只將要導出的數據顯示出來,不實際導出。
至于配置文件,在安裝目錄下已經有一個config.properties作為示例。使用SVN Importer的時候只需要復制一份這個文件,再稍做修改即可。
配置文件中主要分四個部分:
第一部分,常規配置,這里選擇源版本庫,設置臨時目錄,以及中間文件的位置等。重要的一些設置如下:
srcprovider=源VCS,可以是cvs、cvsrcs、pvcs、vss、cc、mks等
import_dump_into_svn=yes或no,是否在生成DUMP文件之后立即導入SVN中(選否則不導入)
full.dump.file=完整模式時生成的DUMP文件路徑
文章來源于領測軟件測試網 http://www.kjueaiud.com/