浅谈SVN服务器迁移的一些注意事项

来源:互联网 发布:犀牛软件基础教程 编辑:程序博客网 时间:2024/05/29 18:18
前段时间由于项目需要把svn服务器迁移到新机器上去,临时抱佛脚在网上查找了很多方法,虽然学会了使用svnadmin dump和svnadmin load命令(官方推荐的方法)来导入导出进行迁移的方法,但是在具体操作时还是遇到了很多问题,在此进行小结,有需要的也可作个参考,能少走些弯路。

一、svn服务器迁移需要的准备工作

1.在新机器上安装Subversion,默认安装即可。      如果安装的是.msi文件,则系统PATH环境变量里会自动追加“C:\Program Files\Subversion\bin"。如果是.zip文件,可能就需要自己配置环境变量了。  此外,对64位操作系统来说,32位和64位的安装包似乎并无影响(截止目前并未发现问题)。2.创建SVN版本库      使用svnadmin create 命令。如:svnadmin create E:\XXXSVN\new  表示在E:\XXXSVN路径下创建了名为new的版本库,把conf文件夹用旧库里的替换(因为dump和load时并不会涉及到用户权限等信息,所以手动进行copy)

二、旧的版本库导出成DUMP文件

导出时一定记得关闭svn服务。假设旧版本库为D:\AAASVN\old,目前这个版块库由5000个reversion:如果想全量备份,这样写:svnadmin dump D:\AAASVN\old > old.dump如果想顺便给svn瘦身,这样写: svnadmin dump D:\AAASVN\old -r 2000:5000 > old.dump           //表示只导出2000-5000的版本

三、新的版本库导入DUMP文件

在新的服务器上使用svnadmin load E:\XXXSVN\new < old.dump即可导入。实现svn服务器的无缝迁移。

四、遇到的几个问题。

1.在导入个别库的时候发现load到某个reversion就停止了,还不报错。不知道具体原因,但是有可能是因为dump文件太大,或者subversion版本不一致导致的。
这样会造成新版本库里文件缺失。解决方法为使用增量备份,分多次导入。导出时,如下: svnadmin dump D:\AAASVN\old -r  0:2000 > old1.dumpsvnadmin dump D:\AAASVN\old -r  2001:4000  --incremental > old2.dump svnadmin dump D:\AAASVN\old -r  4001:5000  --incremental > old2.dump上面除了第一行外,--incremental必须写,表示增量备份,通俗讲就是如果某个路径已经存在,增量备份时只会备份其修改的部分,而不用再新建。
如果不写--incremental,load导入old1.dump后,再导入old2.dump时,会报类似路径已经存在的错误。导入时,如下:svnadmin load E:\XXXSVN\new < old1.dumpsvnadmin load E:\XXXSVN\new < old2.dumpsvnadmin load E:\XXXSVN\new < old3.dump2.在导入eclipse项目的库时,提示svnadmin: E125005: Invalid property valuefound in dumpstream; 
consider repairing the source or using--bypass-prop-validation while loadingsvnadmin: E125005: Cannot accept non-LFline endings in 'svn:log' property具体原因参考http://blog.csdn.net/powerccna/article/details/9949739这篇博客提供了一种方法,也就是repairing the source; 如果嫌麻烦可采用--bypass-prop-validation也就是忽略这个错误。导入时,如下:svnadmin load --bypass-prop-validation E:\XXXSVN\new < old.dump


原创粉丝点击