场景描述:
因公司搬迁,svn服务器(A)103.168.126.10上的项目需要迁移到新svn服务器(B)103.3.55.25做集中管理。基于这个场景下,还要考虑到如果项目组有未提交的内容如何处理?如果在迁移过程中,项目组提交了新内容如何处理?如果迁移时间过长,对项目组会产生哪些影响?在迁移过程中,权限文件可直接搬迁过来,但是svn账户文件如何处理?
案例准备:
A服务器项目仓库地址:https://103.168.126.10/svn/测试
迁移项目 “测试” 到B服务器,创建名为“test”的版本仓库。
实现过程:
1、从A服务器制作项目版本库备份文件:
cd C:\Program Files\VisualSVN Server\bin //进入到SVN server的bin目录下,保证svn相关命令可以生效
svnlook youngest 测试 //确认当前版本号,用于迁移完成后查看是否全部迁移完毕(一般只要迁移成功,版本号都不会丢失)
svnadmin dump C:\Repositories\测试 >ceshiBak //全量备份,生成名为 ceshiBak的备份文件
2、在B服务器使用命令创建“test“”版本仓库
cd repositories/ceshi //进入到存放版本仓库的目录层级
svnadmin create test //命令创建名为test 的项目版本仓库
3、上传、导入备份文件
svnadmin load test </usr/loac/repositories /ceshiBak //将备份文件ceshiBak 导入到版本仓库 test下 ,
4、检查完整性
svnlook youngest test //查看导入后的项目版本号,和第一步查到的项目版本号是否一致
5、项目组指向新地址
请思考:项目版本仓库ip地址改变后,但项目组的项目还指向老地址,如果直接检出,那么在迁移这段时间产出的代码如何处理?为了尽量不对项目组产生影响,推荐方式为:使用svn的重定向功能
svn switch --relocate "https://103.168.126.10/svn/测试" "http://103.3.55.25/svn/test" //命令方式,也可直接使用svn客户端的重定向功能
亲测:哪怕有未提交的内容,重定向后也不影响项目
6、复制权限、目录控制文件至新服务器
虽然项目迁移过去了,项目组也可以使用新地址,但是因为svn是通过配置文件对账户和目录权限进行管控的,所以需要将旧服务器的账户文本内容和目录权限文本内容转义到新的配置文件中。