標籤:svn遷移
SVN需求:搬遷至異地上雲環境,遷移過程將影響使用者的時間減少至最小。
SVN常見的幾種遷移方案:
第一種:整個SVN庫目錄打包遷移,原庫大小17G,打包加遷移時間預估時間約5小時以上,中斷不符合要求。
第二種:svnadmin 內建的dump匯出load匯入方式遷移 :所有版本匯出大小超過了磁碟剩餘空間(不小於40G),中斷不符合要求。
第三種:通過svnsync鉤子指令碼同步方式進行第一次全量同步,遷移時增量同步處理(預計最快時間十分鐘左右)。
利用svnsync同步過程:
1. 原SVN伺服器與目標SVN伺服器
兩邊開設用於同步的帳號(最好帳號密碼一致)
2.目標SVN伺服器上:
利用SVN內建的鉤子指令碼更改如下:
路徑:D:\svn_repository\hooks\pre-revprop-change.tmpl
將最後三行刪除改成exit 0 如下:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
#if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
#echo "Changing revision properties other than svn:log is prohibited" >&2
exit 0
建立pre-revprop-change.bat檔案,將pre-revprop-change的最後兩行拷過來即可或者直接輸入exit 0。
exit 0
重啟SVN服務。
接下來進行同步前的初始化,格式 svnsync init 目標庫路徑 源庫路徑
svnsync init svn://127.0.0.1/ svn://61.174.30.194/
如報錯:Repository has not been enabled to accept revision propchanges;ask the administrator to create a pre-revprop-change hook .
pre-revprop-change.bat檢查此指令檔是否存在,如存在檢查檔案格式是否正確。我這邊在windows server2008下通過文字文件建立了pre-revprop-change.bat檔案後實際上通過屬性查看它並不是一個可執行檔,而是一個txt檔案類型。在此問題排查上浪費了很多時間,一直初始化不成功。從自己win7機器上建立可執行檔格式pre-revprop-change.bat再傳至服務端測試OK。
開始同步:
svnsync sync svn://127.0.0.1/
3.SVN遷移後更改網域名稱指向測試svn update時報錯:
Repository UUID ‘60f49f27-8aaa-164f-9098-701db8904462‘ doesn‘t match expected
原因為:
原來Repository建立者的UUID是前者,而現在所操作的是後者的UUID。因此,目前的解決辦法是:使用相關命令更新Repository的UUID。
查看原SVN的UUID:
D:\svnrepository>svnlook uuid D:\svnrepository
1024ede3-db12-4f4b-a8b4-28f755881912
查看新SVN的UUID:
C:\Users\Administrator>svnlook uuid D:\svn_repository
60f49f27-8aaa-164f-9098-701db8904462
將新SVN的UUID更改成跟原SVN一樣:
C:\Users\Administrator>svnadmin setuuid D:\svn_repository 1024ede3-db12-4f4b-a8b 4-28f755881912
再次svn update測試OK。
同步後查看兩端的版本號碼是否一致svnlook youngest D:\svnrepository
本文出自 “E人空間” 部落格,請務必保留此出處http://iceeggplant.blog.51cto.com/1446843/1595591
windows下SVN版本庫遷移小結