1、把主svn上的数据同步至从svn上,以备不时之需
主:192.168.9.87
从:192.168.9.88
2、在从机器上做以下操作:
自动同步,在主上post-commit添加
svnsync sync --non-interactive svn://192.168.9.87/usca --username usca --password xxx
1)、创建所需目录,并修改属主属组
sudo mkdir -p /storage/svn/{logs,pids,repository/ops}
sudo chown -R richmail.richmail /storage
cd /storage/svn/repository
2)、创建ops库
svnadmin create ops
cd ops/hooks
3)、复制pre-revprop-change并修改权限和内容
cp pre-revprop-change.tmpl pre-revprop-change
chmod 755 pre-revprop-change
修改 pre-revprop-change
为 echo “Changing revision properties other than svn:log is prohibited” >&2
exit 0(1修改为0)
4)、执行同步初始化操作
svnsync init file:///storage/svn/repository/ops svn://192.168.9.97/ops --username=liulieyin --password=liulieyin
5)、执行同步操作
svnsync sync file:///storage/svn/repository/ops
=================================遇到的问题==========================================
1)、
解决方法:
dbus-uuidgen > /var/lib/dbus/machine-id
2)、
Failed to get lock on destination repos, currently held by 'xxxxx'
解决方法:
svn propdel svn:sync-lock --revprop -r 0 file:///storage/svn/repository/ops
3)、
svnsync: Destination HEAD (29) is not the last merged revision (28);
have you committed to the destination without using svnsync?
当从库同步版本到28时,主库进行了添加文件,删除文件的操作,由于主库的版本变成了29但内容却没有变化,这时从库进行同步时就会报上述错误。
解决方法:
svn propset --revprop -r 0 svn:sync-last-merged-revision 29 file:///storage/svn/repository/ops
svn propset --revprop -r 0 svn:sync-last-merged-rev 29 file:///storage/svn/repository/ops
之后再同步就可以啦。
同步完成之后,可以启动服务登录查看一下:
svnserve -d -r /storage/svn/repository --log-file /storage/svn/logs/svn.log --pid-file