SVN仓库迁移 - Mr.Ding

SVN仓库迁移

天天记事 462 / 2022-03-07 18:50:28

SVN代码迁移,在不同版本之前进行操作时,主要用到一个命令:svnadmin(还有一个svndumpfilter)。

1. 导出源仓库

登录到源仓库所在服务器,运行下面命令来导出仓库文件

svnadmin dump /opt/svndir/sources > /opt/svndump/sources.dump

2. 导入目标仓库

登录到目标仓库所在服务器,运行下面命令来导入仓库文件

svnadmin load /opt/svndir/sources < /opt/svndump/sources.dump


当然,仓库数据的导出也可以看做为仓库备份,需要注意的是,上面两个例子命令操作时,有可能会导致执行的命令窗口奔溃,也就是操作到中间某个时候就直接闪退。导致删除的原因可能是输出日志里面有特殊字符,这类特殊字符让控制台误以为要停止掉当前操作进程。因此,我们建议使用下面方式来优化

nohup svnadmin dump /opt/svndir/sources > /opt/svndump/sources.dump 2>&1 &

nohup svnadmin load /opt/svndir/sources < /opt/svndump/sources.dump 2>&1 &


最后,对上面命令做个解释

svnadmin dump /opt/svndir/sources > xxx.dump

上面命令行中的大于符号表示(标准)输出转向到xxx.dump文件,svnadmin就是这么做的,它会格式化仓库内容,按照规定的标准向目标文件写入。如果没有后面的输出转向,则会直接输出到控制台(显然是无意义的,如果仓库中有二进制文件,那么结果显然很糟糕)。

同样上面的例子里面有一个大于符号。表示执行此程序时,会打开外部文件并以流的方式作为程序执行的输入,原理是一样的。





svn