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