SVN同步大坑
遇到的问题
这两天一直在搞svn的主从备份,使用的方法是svnsync做的主从同步,同步大部分的仓库都没有什么问题很顺利的就同步完成了,不了解svnsync同步的可以看我这篇,但是在在同步2个仓库的时候遇到了很麻烦的问题,报错如下:
这个报错诡异在我前面的创建初始化版本库都没问题,从主库同步的时候一开始也很顺利,但是同步到某一个版本时就像上图一样中断了。百度了一堆都是checkout出这个错的,让 你清缓存什么的,根本文不对题。google也是没什么解决方法,看到一个说是svn版本太低有bug,
只找到了这个解决方法,我就试试了,更新了svn版本到1.8,还是200 ok,报错和之前差不多,这个方法失效。后来在网上找了很久,发现这个链接,感觉可以试试
上面的报错我个人认为是仓库的某个版本太大导致从库向主库同步失败。绕过这个报错无非是不用工具同步,直接将主库目录拷贝到从库并修改库的属性。
解决方法
下面是具体步骤:
1、将主库复制到从库
这里使用什么方法都行,可以用hotcopy,也可以用直接将主库打包发送到从库上。我用的是直接打包的方法,建议用hotcopy,因为直接打包拷贝容易被锁
tar czvf repo.tar.gz repo
2、在从库上创建初始化仓库
在这里创建初始化仓库的目的只有一个就是为了获取它的属性。
cd /tmp
svnadmin create repo
chown -R apache:apache repo
cp -p repo/hooks/pre-revprop-change.tmpl repo/hooks/pre-revprop-change
sed -i '3,65d;s/exit 1/exit 0/g' repo/hooks/pre-revprop-change
svnsync init file:///path/to/repo http://master/path/to/repo --username apache --password xxx
上面步骤做完后从库会生成uuid,repo/db/revprops/0/0等初始化信息
3、将主库打的包解压到从库的svn目录下,并修改属性
tar xzvf repo.tar.gz #解压
cp -p /tmp/repo/hooks/pre-revprop-change repo/hooks #拷贝钩子到从库
cp -p /tmp/repo/db/uuid repo/db/uuid #替换uuid
cp -p /tmp/repo/db/revprops/0/0 repo/db/revprops/0/0 #替换初始版本日志
4、从库同步主库
svnsync sync file:///path/to/repo --username apache --password xxx
同步可能会遇到如下报错:
一开始不知道是什么鬼,后来看最后一行说我fs format应该在1到4之间,但是我的如下图:
所以我把6改成4,再次执行,又遇到如下报错:
意思是说我版本号对不上,使用
svn propset --revprop -r0 svn:sync-last-merged-rev 6515 http://master/path/to/repo
同步主库的版本号,6515是你在主库打包时的版本号
在执行一次同步
svnsync sync file:///path/to/repo --username apache --password xxx
到此,svn主从同步已经完成,整个过程其实没什么难点,正常同步使用svnadmin create,init,sync三部曲即可完成,但是这里出现了特殊情况,那么就要换一种思路,先将主库整个拷贝过来,然后替换它的属性信息,让它成为从库。要替换的是uuid、pre-revprop-change和/db/revprops/0/0。
SVN同步大坑的更多相关文章
- windows环境下svn同步web文件[转]
windows环境下svn同步web文件 SVN在团队开发中使用非常普遍,是一个很方便的版本控制系统. 如果要是能将SVN服务器上的数据自动发布到Web服务器,那将是整个项目开发.测试更加便捷.利用S ...
- SVN同步时忽略特定文件或文件夹
在MyEclipse中使用SVN同步的时候,经常会提示一些比如.classpath等不需要同步的配置文件,可以通过设置来忽略这一部分的文件或者文件夹. 1.选择菜单Window→Preferences ...
- SVN同步时报错:“Previous operation has not finished; run 'cleanup' if it was interrupted”
SVN同步时报错:“Previous operation has not finished; run 'cleanup' if it was interrupted” 这大概是SVN之前的操作没有完成 ...
- SVN同步
SVN同步:1.在备份服务器上安装SVN,之后创建同名的库名2.在备机的Repositories的库文件夹下的hooks目录下,备份并修改pre-revprop-change.tmpl文件为pre-r ...
- 所有的工作目录 都要svn_开头,并且要进行svn同步,你能保证你不删除,你保证不了非你!
所有的工作目录 都要svn_开头,并且要进行svn同步,你能保证你不删除,你保证不了非你! 血的代价啊~
- 在linux服务器centos上使用svn同步代码到项目中
一.需求 1.在多人开发过程中代码的管理以及版本的控制是一个很重要的问题,因为在开发过程中我们可能会同时更改过某个文件或者更改过多个文件, 这会导致我们很容易发生错误.所以我们需要一个方式去管理我们的 ...
- eclipse svn同步过滤掉某些不需要同步的文件
注:这里说的svn是eclipse里svn插件 默认情况下,我们在点击svn同步时,总是会把一些不需要的目录和文件也给同步了,这样我觉得很晃眼睛,所以在这里说下怎么去去掉不想同步的文件 1.默认同步下 ...
- SVN同步出现故障
1.错误描写叙述 同步SVNStatusSubscribe时报告了错误,1中的0个资源已经同步 同步/frame时错误发生:Error getting status for resourc ...
- window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法
摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sud ...
随机推荐
- 微软modern.IE网站,多版本IE免费测试工具集
微软今天发布了modern.IE,这是一系列免费的.针对Web 开发者的测试工具和资源集合网站,微软希望以此来帮助开发者更轻松地实现跨 IE 和其他现代浏览器.跨设备的兼容性,其他还有代码检测工具.标 ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- 学习Scala: 初学者应该了解的知识
Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料. 官网网站 http://www.scala-lang.org/ 文档网站 http://docs.scala-lang.or ...
- mongodb学习3---mongo的MapReduce
1,概述MapReduce是个非常灵活和强大的数据聚合工具.它的好处是可以把一个聚合任务分解为多个小的任务,分配到多服务器上并行处理.MongoDB也提供了MapReduce,当然查询语肯定是Java ...
- HTML5的新特性
HTML5 中的一些有趣的新特性: 用于绘画的 canvas 元素 用于媒介回放的 video 和 audio 元素 对本地离线存储的更好的支持 新的特殊内容元素,比如 article.footer. ...
- MessageFormat格式化的一些问题
如果格式化字符串中包含单引号,处理方法是用2个单引号进行转义,如果是数字,则需要加上格式: MessageFormat.format("(''{0}'',''{1}'',{2,number, ...
- C++ Static(静态成员)的作用总结
Static是C++中一个常见的关键字,它被用来控制变量的存储方式和可见性. 在类定义中,它的成员(包括数据成员和成员函数)可以用关键字static申明为静态成员.静态成员的特性是不管这个类创建了多少 ...
- 将HTML5封装成android应用APK文件的几种方法(转)
作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强 ...
- javascript --- 子对象访问父对象的方式
在传统面向对象的编程语言里,都会提供一种子类访问父类的特殊语法,引文我们在实现子类方法往往需要父类方法的额外辅助.在这种情况下,子类通常会调用父类中的同名方法,最终以便完成工作. javascript ...
- <input type="text"/>未输入时属性value的默认值--js学习之路
在百度ife刷题是自己的一个错误引发了我对<input type="text"/>的学习. 先贴代码: <!DOCTYPE html> <html&g ...