windows下SVN版本庫遷移小結

SVN需求:搬遷至異地上雲環境,遷移過程將影響用戶的時間減小至最小。
windows

 

SVN常見的幾種遷移方案:服務器

第一種:整個SVN庫目錄打包遷移,原庫大小17G,打包加遷移時間預估時間約5小時以上,中斷不符合要求。ide

第二種:svnadmin 自帶的dump導出load導入方式遷移 :全部版本導出大小超過了磁盤剩餘空間(不小於40G),中斷不符合要求。svn

第三種:經過svnsync鉤子腳本同步方式進行第一次全量同步,遷移時增量同步(預計最快時間十分鐘左右)。測試

利用svnsync同步過程:ui

1. 原SVN服務器與目標SVN服務器url

兩邊開設用於同步的賬號(最好賬號密碼一致)spa

 

2.目標SVN服務器上:orm

利用SVN自帶的鉤子腳本更改以下:server

路徑: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 


svnsync: Destination HEAD (13713) is not the last merged revision (13711); have

you committed to the destination without using svnsync?

因爲目標庫在測試時新增了版本庫,因此致使原庫同步過來出錯。

解決方案:

C:\Users\Administrator>svn propset --revprop -r0 svn:sync-last-merged-revision 13713 svn://127.0.0.1/ 

property 'svn:sync-last-merged-revision' set on repository revision 0

C:\Users\Administrator>svn propset --revprop -r0 svn:sync-last-merged-rev 13713  svn://127.0.0.1/ 

property 'svn:sync-last-merged-rev' set on repository revision 0

C:\Users\Administrator>svnsync sync svn://127.0.0.1/

再次查看,源庫與目標庫版本已經一致:

C:\Users\Administrator>svn proplist -v --revprop -r0 svn://127.0.0.1/

Unversioned properties on revision 0:

  svn:sync-from-uuid

    1024ede3-db12-4f4b-a8b4-28f755881912

  svn:sync-last-merged-rev

    13713

  svn:sync-last-merged-revision

    13713

  svn:date

    2009-08-19T02:21:19.281250Z

  svn:sync-from-url

    svn://61.x.x.x

相關文章
相關標籤/搜索