天天记事 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就是这么做的,它会格式化仓库内容,按照规定的标准向目标文件写入。如果没有后面的输出转向,则会直接输出到控制台(显然是无意义的,如果仓库中有二进制文件,那么结果显然很糟糕)。
同样上面的例子里面有一个大于符号。表示执行此程序时,会打开外部文件并以流的方式作为程序执行的输入,原理是一样的。