svnsync可以方便的把另一个源svn版本同步到指定版本库中,为多版本库应用提供方便。


示例: (版本库所存目录  /svn/  下)

    源版本库:  svn://196.168.0.1/testA      同步用户:sync_source 密码:123456

    目标版本库: svn://196.168.0.2/testB    同步用户:sync 密码:123456


源版本库用于开发编辑提交等应用,目标版本库只能可读用于上线备份等应用。

两边版本库均需要修改配置文件

conf/svnserve.conf 文件的访问权限,必需打开:auth-access 、password-db 、authz-db 、anon-access = none

conf/authz 增加访问账号,权限在源版本库只需要读,目标版本库里需要读写

conf/passwd 账号对应密码


进入目标服务器testB目录

编辑sync同步必要hooks脚本pre-revprop-change,(进入版本库hooks目录) 

cp pre-revprop-change.tmpl pre-revprop-change


修改权限,允许执行  

chmod a+x pre-revprop-change


编辑(注释所有可用代码)

vi pre-revprop-change


追加如下代码(注释代码为同步过来能自动更新到站点中,如果没有站点可去掉)

#svn up /www/testB/ --username=sync --password=123456
exit 0


同步配置初始化

   

svnsync init file:///svn/testB svn://196.168.0.1/testA --source-username sync_source --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cache


执行同步

svnsync sync svn://196.168.0.1/testB --source-username sync_source --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cache


进入源服务器testA目录

修改权限,允许执行

chmod a+x post-commit


编辑提交使用的post-commit脚本(进入版本库hooks目录)

vim post-commit


最后面追加内容 (每次提交过来自动同步)

svnsync sync svn://196.168.0.2/testB --source-username sync_source --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cache

注意,在提交勾子中使用直接命令会影响提交速度,可以使用

(svnsync sync svn://196.168.0.2/testB --source-username sync_source --source-password 123456 --sync-username sync --sync-password 123456 --no-auth-cache &)


现在可以测试提交下文件,然后查看两个版本库是否同步。