最近做一个项目,因为网速的原因,SVN在我机器上架设。开始时是每天弄完之后打个包扔在服务器上备份,后来想是不是可以两个SVN服务器间同步呢?说干就干,有请度娘,谷哥登场。。。
终于找到一篇介绍SVN同步的,照着做吧。
参考:http://wowking.blog.51cto.com/blog/1638252/847510
我的环境:(环境不必与我相同,视实际而这定,我试过其它版本的SVN Server同步,也成功了)
主SVN Server(Windows Server XP + VisualSVN Server Manager V2.56)
备用SVN Server(Windows Server 2003 + VisualSVN Server Manager V2.1.10)
目标:
实现的是版本库的远程自动备份,将版本库备份到另一台机器上。当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性。
源版本库本地机器A ,路径为:”http://192.168.0.125:8080/svn/SVNSyncSample”
目标版本库服务器B ,路径为:”https://123.123.123.123/svn/SVNSyncSampleBak/” (因为用的公司服务器演示,IP隐藏哈) ,亦可为路径”file:///D:/SVN/Repositories/SVNSyncSampleBak” 这个可以看上边说的参考网站,本文只用IP地址说明。
开始:
Step1:在目标版本库服务器B上创建目标库。
Step2:修改目标版本库服务器B中目标库的脚本“pre-revprop-change.tmpl”
进入“D:\Repositories\SVNSyncSampleBak\hooks”
编辑“pre-revprop-change.tmpl”将其最后一行修改为:”exit 0”;
Step3:在目标版本库服务器B上继续创建“pre-revprop-change.bat”
内容:“echo "Changing revision properties other than svn:log is prohibited" >&2
exit 0”
Step4:初始化(据说是最重要的一步,睁大眼睛看好啊)
首先需要保证,目标版本库服务器B中,欲同步的SVN路径有访问权限,没有?自行添加吧
a. 在源版本库本地机器A中创建用于同步的用户
b. 打开源版本库本地机器A里的SVN安装目录的BIN文件夹(参考网站是在服务端操作的,有需要,可参考)“D:\Program Files\VisualSVN Server\bin”
c. 输入“svnsync init https://123.123.123.123/SVN/SVNSyncSampleBak/ http://192.168.0.125:8080/SVN/SVNSyncSample/”会提示一个警告,不用管它
Step5:同步
搞完了,开始同步吧,这里会先后要求回答一个问答题,再让输入服务器密码,本地SVN用户名,密码
刚才故意输错密码就是想告诉你记得是刚才在本地创建的那个用户和密码哟
现在开始初始化目标版本库服务器B了。时间稍微有点第,现在开始数点点吧
以后再同步的话就只需要输入svnsync sync https://123.123.123.123/svn/SVNSyncSampleBak 就可以同步了
如果报错的话,就先运行svn propdel svn:sync-lock --revprop -r 0 https:// 123.123.123.123/svn/SVNSyncSampleBak
建议写一个批处理
创建一个同步svn.bat的文件
内容:
cd D:\Program Files\VisualSVN Server\bin
svn propdel svn:sync-lock --revprop -r 0 https:// 123.123.123.123/svn/SVNSyncSampleBak
svnsync sync --username xhch --password xhch https:// 123.123.123.123/svn/SVNSyncSampleBak
(这里的—username xhch –passwork xhch是目标版本库服务器B的SVN用户和密码)
最近一个JAVA项目需要用到SVN,过来取经。
@小迷:到处都是宝贝的说
有时间了好好看看svn备份
@watercity:嗯,欢迎常来
备份是一个很好的习惯啊。
@那沃女包:嗯,是呀,广告也是一个好习惯呢