Subversion安装配置维护,尽在我用Subversion - 我用Subversion编辑团队倾力打造
注意:本文档中心已转移至SVN知识库
注册 | 登陆 RSS 2.0 订阅


svnsync:Subversion备份版本库的好工具

« 上一篇 | 下一篇 »

作者:PCplayer

来自:我用Subversion - http://www.iUseSVN.com

时间:2008-1-2


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

要用到两个命令
1、svnsync init
初始化,建立目标库和源库之间的同步关系
命令格式 svnsync init 目标库URL 源库URL
2、svnsync sync
真正的同步
命令格式 svnsync sync 目标库URL
目标:
本次实现的是版本库的远程自动备份,将版本库备份到另一台机器上
假设我们要同步的源版本库为 http://192.168.0.1/svn/proj1 位于机器A,具体路径我们不必理会,因为我们使用http协议
目标库在机器B,file:///svn/proj1,这个为了简单和安全,我们使用file://协议
过程:
1、在机器B上,创建目标库
mkdir /svn
svnadmin create /svn/proj1
2、修改目标库的脚本pre-revprop-change
进入/svn/proj1/hooks/
cd /svn/proj1/hooks/
cp pre-revprop-change.tmpl  pre-revprop-change
vi pre-revprop-change
    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 1
原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1
我们要将它改为允许修改所有的属性,在脚本中直接返回0,新的脚本如下:
    exit 0;
3、初始化
svnsync init file:///svn/proj1 http://192.168.0.1/svn/proj1
会提示输入用户名和密码,这里提供的用户名和密码是可以完全读取http://192.168.0.1/svn/proj1的用户名和密码
4、同步
svnsync sync file:///svn/proj1

依然会提示输入用户名和密码,不过,你可以在这个命令之后加上 username 、password参数,
例如svnsync sync file:///svn/proj1 --username username --password password

转帖请包含作者等版权信息、并注明来自:我用Subversion - svnsync:Subversion备份版本库的好工具


Tags: svnsync, 备份 编辑: admin

« 上一篇 | 下一篇 »

7条记录访客评论

我做了,再运行初始化的时候出现如下的错误是什么原因呢?:
D:\Program Files\Subversion\bin>svnsync init file:///e:/svn/Huigu-JXZHX http://1
92.168.1.164/svn/Huigu-JXZHX
svnsync: 钩子“pre-revprop-change”失败,错误输出是:
'REPOS' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'REV' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'PROPNAME' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'ACTION' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
此时不应有 "$ACTION"。

请问这是什么原因呢?

Post by shiyufang on 2008, January 4, 4:15 PM 引用此文发表评论 #1

另外,用论坛的会员帐号为什么不能登录这个Subversion中文文档中心,难道还有其它要求?

Post by shiyufang on 2008, January 4, 4:16 PM 引用此文发表评论 #2

会不会是因为我的目标库所在PC机上只安装了svn-1.4.3-setup.exe 的原因

Post by shiyufang on 2008, January 4, 4:19 PM 引用此文发表评论 #3

我来结束我的提问,是我自己错了,我只是把原来文件中的最后一行   exit 1  替换成了  exit 0.所以出问题了。

原来是整个文件就剩下  exit 0  而已

Post by shiyufang on 2008, January 4, 5:12 PM 引用此文发表评论 #4

补充:Linux下还需设置脚本文件pre-revprop-change的属性为可执行,即
    chmod  +x  pre-revprop-change
Windows下所有文件默认即为可执行,不用设置

另外:在Linux下脚本的第一行应保留  #!/bin/sh

Post by liuqun on 2009, February 26, 11:46 AM 引用此文发表评论 #5

very good

Post by 华宇物流公司 on 2010, May 25, 2:38 PM 引用此文发表评论 #6

非商业应用的转载

Post by 接吻 on 2010, August 18, 4:58 PM 引用此文发表评论 #7


发表评论

评论内容 (必填):