本文介绍利用svnsync来同步版本库,达到备份版本库的目的。

关于SVN的介绍:http://wowking.blog.51cto.com/1638252/962410


我的环境:(环境不必与我相同,视实际而这定,我试过备用低版本的SVN Server同步,也成功了)

主SVN Server(Windows Server 2008 R2 + VisualSVN Server Manager r2.54)

备用SVN Server(Windows Server 2003 + VisualSVN Server Manager r2.54)

 
目标:
实现的是版本库的远程自动备份,将版本库备份到另一台机器上。当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性。


目标版本库机器A,路径为:"http://192.168.10.42/svn/ivey"(这里主机名对应的是这个IP地址),具体路径不必理会,因为这里使用http协议(主SVN)

 

源版本库机器B,路径为:"file:///D:/SVN_Repositories/ivey",这个为了简单和安全,我们使用file:///协议 (备用SVN) [“D:/SVN_Repositories/ivey”视实际版本库路径而定] 

 

过程: 

1、在源版本库机器B上,创建目标库

a. 


b.

 
2、修改源版本库机器B中目标库的脚本pre-revprop-change.tmpl
进入D:\SVN_Repositories\ivey\hooks” (D:\SVN_Repositories 这个代码库的保存路径,视实际而定)
编辑pre-revprop-change.tmpl”将其最后一行修改为:”exit 0”;
 
 
3、继续创建pre-revprop-change.bat

内容:“echo "Changing revision properties other than svn:log is prohibited" >&2
exit 0

 
 
4、初始化 (最重要的一步)
a.首先需要保证,有访问目标版本库机器A中 欲同步的SVN路径的访问权限,没有的话,自行添加;

 

b.进入SVN安装目录里的BIN文件夹:“cd C:\VisualSVN Server\bin” “视实际安装路径而定”

c.输入”svnsync init file:///D:/SVN_Repositories/ivey http://192.168.10.42:88/svn/ivey/”会提示输入用户名和密码,这里提供的用户名和密码就是刚刚确认的4.a中的用户与密码;(”svnsync init file:///”这个是固定的,"D:/SVN_Repositories/ivey"这是源版本库机器B中SVN目录的路径,"http://192.168.10.42:88/svn/ivey/"这是目标版本库机器A中SVN目录路径。注意空格)

 

5、同步

继续输入"svnsync sync file:///D:/SVN_Repositories/ivey"   [D:/SVN_Repositories/ivey,为同步目录]
 
 
到此完成了一次同步。
PS:以后的同步就只需操作第5步“同步”,不再需要初始化了。Good luck!