VSStoSVN代碼庫遷移
本節(jié)和大家一起學(xué)習(xí)一下VSStoSVN代碼庫遷移方案,和大家分享一下,看完本文你肯定有不少收獲,希望本文VSStoSVN代碼庫遷移內(nèi)容講解能教會你更多東西。
最近想把在VisualSourceSafe(VSS)上管理的代碼庫遷移到Subversion(SVN)中。但是不想丟棄VSS代碼庫上的歷史,并且VSS代碼庫中有一部分目錄和文件是中文的文件名。在經(jīng)過大量的實驗后終于把VSS代碼庫遷移到SVN了,并且中文目錄、中文文件名還有歷史版本信息能大部保留下來。在此把遷移心得分享出來,以免少走彎路。
市面上能進行VSStoSVN代碼庫遷移的工具有VSStoSVN和SVN-Importer,以下對兩種工具進行介紹。
一、VSStoSVN
是一個perl語言編寫的轉(zhuǎn)移工具,其編譯成exe的轉(zhuǎn)移程序基本不支持中文目錄和中文文件名。網(wǎng)上很多介紹,還有什么拷貝一個*.dll文件到system32目錄下后就可以支持中文目錄和中文文件名也是沒有可進行性的。但是從理論上說如你您對perl語言比較了解,說不定在一個perl語言下,地VSStoSVN進行初基的改造就可以支持中文目錄和中文文件名。但如果您的vss代碼庫中沒有中文目錄和中文文件名,這個工具是一個不錯的選擇。
二、SVN-Importer
本人使用此工具成功的把含有中文目錄和中文文件名的vss代碼庫轉(zhuǎn)換到svn代碼庫中,并且現(xiàn)在已正常使用,除了部分含中文文件名的*.doc文件沒有完全的代碼過來(中文文件名中有個別字還是亂碼)。以下是使用SVN-Importer的必須條件,只能完全按照以下配置,才有把含有中文目錄和中文文件名的VSS代碼庫遷移到SVN中的可能性。
2.1、必須使用JavaJDK1.4或IBMJAVASDK5.0作為SVN-Importer的Java運行環(huán)境。JavaJDK5.0、JavaJDK6.0作為Java運行環(huán)境時遷移出來的代碼庫中的中文基本就是亂碼,具體原因沒有研究。
2.2、如果Windows是中文版的操作系統(tǒng),那恭喜你需要修改“控制面板”中的“區(qū)域和語言選項”。在vss版本庫中,時間格式一般是hh:mm:ss,日期格式一般是MM/dd/yy。所以如果系統(tǒng)時間格式和日期格式與vss的不一致會導(dǎo)致SVN-Importer不工作。
2.3、svn版本庫管理工具需要使用svn1.4或svn1.5版本。使用svn1.6時使用svnadminload導(dǎo)入damp文件時異常退出,原因不詳。
三、配置SVN-Importer的config.properties
操作模式:SVNImporter有3種操作模式:完整、增量和列表。
(1)、完整模式用于將源VCS的版本庫數(shù)據(jù)全部導(dǎo)出。
(2)、增量模式則用在第一次的完整模式之后,導(dǎo)出新增加的數(shù)據(jù)。
(3)、列表模式只將要導(dǎo)出的數(shù)據(jù)顯示出來,不實際導(dǎo)出。
操作步驟:
1、修改配置文件
SVN-Importer是通過讀取配置文件來決定執(zhí)行方式的,能否成功的關(guān)鍵就是配置文件是否正確,下面我結(jié)合自己的實際過程說一下主要需要注意的配置參數(shù)
#Providersettings
srcprovider=vss設(shè)置源vcs是什么系統(tǒng),可以是cvs、cvsrcs、pvcs、vss、cc、mks等,我此處是vss
#Importoptions
import_dump_into_svn=no是否將第三步和前兩步連起來,我這里選擇no
existing_svnrepos=no當(dāng)import_dump_into_svn設(shè)置為yes時,如果這個選項也設(shè)置為yes,那么只有svn的倉庫已經(jīng)存在,數(shù)據(jù)才能導(dǎo)入到svn的倉庫中
clear_svn_parent_dir=no如果這個被設(shè)為yes,并且import_dump_into_svn也設(shè)為yes,在導(dǎo)入數(shù)據(jù)之前,程序會刪除所有在svn倉庫父目錄下的東東(只在完整模式下才有用)
use_only_last_revision_content=no如果設(shè)為yes,則只導(dǎo)出源VCS的最后一個版本的內(nèi)容,請看VSStoSVN代碼庫遷移介紹中的其他內(nèi)容。
#Fileoptions下面這些文件,都既可以是以相對路徑指定的,又可以是以絕對路徑指定的
full.dump.file=/data/cvs/full_dump.txt選擇full方式dump,這個參數(shù)就會起作用,表示dump的結(jié)果文件
incr.dump.file=incr_dump.txt增量模式時生成的DUMP文件路徑
incr.history.file=incr_history.txt歷史文件路徑,這個文件在第一次完整模式時生成,以后使用增量模式時需要讀取其內(nèi)容
list.files.to=src_type_file.txt列表模式,這個是指定第一步從源VCS系統(tǒng)取出的內(nèi)容,還轉(zhuǎn)化成svn的dump文件前的東東
dump.file.sizelimit.mb=0dump文件大小限制,0表示無文件大小限制
#Debugoptions
disable_cleanup=no如果這個設(shè)置為yes,則從源VCS系統(tǒng)導(dǎo)出的臨時文件不會被刪除
#SVNdumpoptions
trunk_path=trunk
branches_path=branches
tags_path=tags
svnimporter_user_name=SvnImporter產(chǎn)生第一個版本的用戶
only_trunk=no是否只有trunk,如果選是,則只有trunk文件夾被導(dǎo)出到dump文件,branches和tags目錄會被忽略
#SVNoptionssvn環(huán)境,只有import_dump_into_svn為yes的時候才起作用
svnadmin.executable=c:/svn/svnadmin.exesvnadmin工具的位置
svnadmin.repository_path=c:/SVN將被導(dǎo)入的目的倉庫的路徑
svnadmin.parent_dir=.dump出來的文件將被導(dǎo)入的目錄,相對于倉庫內(nèi)的路徑,.表示倉庫的根目錄,其他值則為相對于倉庫根目錄的子目錄,該目錄將作為導(dǎo)入內(nèi)容的父目錄
svnadmin.tempdir=c:/temp/local臨時目錄
svnclient.executable=c:/svn/svn.exesvn客戶端工具的位置
svnadmin.verbose_exec=no如果設(shè)置為yes,則所有執(zhí)行的svnadmin命令將被顯示到終端。VSStoSVN代碼庫遷移介紹中SVNoptionssvn環(huán)境講解完畢,下面看一下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=$/選擇要導(dǎo)出的VSS版本庫的相對路徑
vss.username=adminVSS版本庫的登錄用戶
vss.password=adminVSS版本庫的登錄密碼
vss.tempdir=c:/temp/vsstemp臨時目錄
vss.log.dateformat=M/dd/yyHH:mm時間格式,這個特別要注意,設(shè)置錯誤后,將不能導(dǎo)出成功。
vss.log.datelocale=en時間對應(yīng)的語言
vss.log.encoding=GB18030想成功導(dǎo)出含有中文目錄和文件名必須設(shè)置成GB18030
#ifenabled-dumpoutputofvss.executablecommandtostdout
vss.verbose_exec=yes
#Logoptions日志記錄,一般無需修改
log4j.rootLogger=DEBUG,stdout
本節(jié)關(guān)于VSStoSVN代碼庫遷移方案介紹完畢,請關(guān)注本節(jié)其他相關(guān)報道。
【編輯推薦】
- 術(shù)語匯編 SVN代碼庫簡介
- 通過Apache訪問SVN代碼庫配置專家講解
- 配置本地SVN服務(wù)器簡明步驟詳解
- 專家在線指導(dǎo)如何搭建SVN服務(wù)
- 常用SVN目錄結(jié)構(gòu)使用的兩大方法詳解