SVN版本库无损迁移与自动备份

引:最近正在做版本库迁移和自动备份,在网上找过一些相关资料,但都比较凌乱,让人很纠结,相信很多网友会遇到相同的问题,笔者根据自己的整理和实践结果总结了一套可操作(经过实际验证)的方案,打算用两篇博客与大家分享一下,供大家参考。
 
一、业务目标
1、在不改变原来版本库的内容和版本号的前提下,把原来分散在多个服务器上的各个版本库统一迁移到一台服务器上的新版本库上。
2、实现新版本库的定时自动备份。
 
二、相关指令
 
1、svnadmin dump命令语法
svnadmin dump Repository_Path [-r LOWER[:UPPER]] [--incremental]
(1)svnadmindump命令用于导出整个Repository或Repository下的某个范围的修订版本。
(2)参数说明:
Repository_Path是版本库的路径,
[-rLOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。
例如:-r 0:100表示导出才版本0到版本100之间的所有修订版,-r是revision的缩写。
 
--incremental,它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容。甚至可以通过hook脚本,每天晚上自动将当天的修改dump出来做备份用。
 
2、svnadmin load命令语法
svnadmin load Repository_Path
(1)svnadminload命令用于从标准输入流/其它流中导入版本库,
(2)参数说明:
Repository_Path是要导入的目标版本库。
 
3、dump和load的输出/入重定向
svnadmin dump oldRepository> dumpfile    
svnadminload newRepository < dumpfile
默认情况下dump和load命令分别输出到默认输出设备(屏幕)和从默认输入设备(键盘)导入。但我们也可以把输出流/输入流重定向。例如上面的第一个命令,使用重定向符>把屏幕的输出定向当前目录下的dumpfile,而第二个命令从当前目录下的dumpfile文件导入。
 
4、把导出和导入合并。
svnadmin dump oldRepository| svnadmin load newRepository
 
5、过滤器svndumpfilter
用于指定只包括那些项目,不会包括其它的项目
 
二、迁移版本库(解决方案示例)

方案1、一次全部迁移。
 
首先新建三个批处理文档(新建记事本,后缀改为.bat)
 
①导出.bat
svnadmin dump oldRepository > dumpfile
②新建版本库.bat
         svnadmin create newRepostitory
③导入.bat
        svnadmin load newRepository < dumpfile
 
    步骤:

如果你的SVN装在C:\program files下,那么:

a、将“导出.bat”放在原库目录下,即oldRepository所在目录下(例如D:\Repositories),双击执行,导出版本库!
b、将“新建版本库.bat”放在新库目录下

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值