svnsync实现svn镜像库同步源库的指定文件夹

情况说明:因控制源码需要将一个大的码库中的部分代码放给外网登陆访问,遂通过镜像库的方式实现,外网用户可直接访问镜像svn或用svn:externals映射访问,操作记录如下

###源库主svn某子目录:
###http://X.X.X.X/svn/repo/a/b/c/d/....../subdir
###镜像svn的路径:
###http://Y.Y.Y.Y/svn/repo/

注:若镜像库要用作日常访问使用的话,这种单向的同步很容易报错,所以要限制镜像库的可写功能

##以下配置均在Y.Y.Y.Y镜像服务器上配置
# 1.最好是在Y.Y.Y.Y服务器新建一个svn:例如:/opt/svn/repo为根目录,若配置了http服务则可设置访问的“根路径”为http://Y.Y.Y.Y/svn/repo,当然svn://ip:port/这种也是可以的
#2.创建钩子
cp /opt/svn/repo/hooks/pre-revprop-change.tmpl  /opt/svn/repo/hooks/pre-revprop-change
# 3.编辑pre-revprop-change钩子,将最后一行的 `exit 1` 改为 `exit 0`
vim /opt/svn/repo/hooks/pre-revprop-change


chmod +x /opt/svn/repo/hooks/pre-revprop-change
# 4.初始化镜像库,注:这里目标镜像库Y.Y.Y.Y服务器的路径必须是根路径,过程中会让你输入源库X.X.X.X服务的密码和其svn用户密码等
svnsync init http://Y.Y.Y.Y/svn/repo/  http://X.X.X.X/svn/repo/a/b/c/d/....../subdir
# 5.同步镜像库:
svnsync sync http://Y.Y.Y.Y/svn/repo/


# 6.自动化同步就靠post-commit或脚本实现了

 

#在X.X.X.X源库服务器中设置post-commit,或任一可访问的svn服务器上配置定时任务脚本

#在/opt/svn/repo/hooks/中建一个post-commit,也可使用原有的,并在最后添加一行同步命令

cp /opt/svn/repo/hooks/post-commit.tmpl  /opt/svn/repo/hooks/post-commit

vi post-commit

svnsync sync  --non-interactive http://Y.Y.Y.Y/svn/repo/ --sync-username svn用户名 --sync-password svn用户密码

 

当报错为:
svnsync: E000022: 目标 HEAD (25)不是最后合并版本(24);你是否使用非 svnsync 方法提交到目标版本库?
解决办法:
更新样本库代码与最后合并版本的源码一致,人为调整至最后合并的版本号,继续更新
跳过版本更新命令:
svn propset  --revprop -r0 svn:sync-last-merged-rev 24  http://Y.Y.Y.Y/svn/repo/

svnsync sync  --non-interactive  http://Y.Y.Y.Y/svn/repo/ --sync-username user --sync-password userpasswd

完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值