1.找到需要迁移的目录,比如我要迁移uboot的目录:

svn://xxxx/u-boot

2.查看该目录的日志信息,记录下最新的版本,以及最老的版本:

比如最新的版本为:36954;最老的版本为:31725

3.登陆linux服务器创建临时工作目录:

mkdir  svn_test

cd svn_test

4.把指定svn目录dump下来:

svnrdump  dump  svn://xxxx/u-boot  -r 31725:36954  >  main.dmp

指定日志版本:-r 31725:36954 (起始版本:终止版本)

生成的dump文件: main.dmp

注意:以上方法是针对版本跨度不大的情况,即起始版本31725和结束版本36954相差不大的情况(不超过10000个版本的跨度),可以一次性dump下来,当跨度比较大时,最好分段dump,否则服务器会半天响应不过来;

比如上面的uboot我采用分段dump下来:

我先dump第一段:

svnrdump  dump  svn://xxxx/u-boot  -r 31725:34725 >  main1.dmp

注意第一段dump不需要加--incremental关键字

然后我在dump 第二段:

svnrdump  dump  svn://xxxx/u-boot  -r 34726:36954 --incremental >  main2.dmp

5.把dump下的文件上传到新svn路径:

svnrdump load svn://xxx/new_path/uboot < main.dmp

执行命令后此时若出现:没有pre-revprop-change勾子

则需要创建个pre-revprop-change文件,文件内容为:

则需要管理员把pre-revprop-change放在目标svn的hook目录;

如果目标svn是windows文件系统的话,则需要将pre-revprop-change加个.bat后缀

分段式dump的话如下:

svnrdump load svn://xxx/new_path/uboot < main1.dmp

svnrdump load svn://xxx/new_path/uboot < main2.dmp

若此时出现:Failed to get lock on destination repos, currently held by....的提示

是因为执行了某些非法操作,导致目标svn被锁住,此时执行:

svn proplist --revprop -r0 svn://xxx/new_path/uboot  :查看目标svn锁标志;

svn propdel --revprop -r0 svn:rdump-lock svn://xxx/new_path/uboot (改为自己实际目标svn)

锁即被解除;

6.到指定目录查看是否上传成功,日志信息是否都存在

Logo

更多推荐