SVN库迁移的心得

时间:2021-02-25 19:36:01

     由于公司发展的要求,需要把之前分散在好几个svn库中代码,统一迁移到一个新的svn库中。场景为在一台服务器中有两个独立的svn库(A、B),其中在A库中有a1、a2、a3、a4项目,B库中b1、b2项目,最后移植的结果是需要另外一台服务器中建立C库,目录结果是

              project/

                         a1/

                         a2/

                         a3/

                         b1/

                         b2/

      在A库中的项目a4不需要移植过去。这两台服务器操作系统都是freeBSD。

具体操作步骤如下:

     1、创建一个新的svn库(具体怎么创建可以参见相关svn操作手册)

     2、在新的svn库中构建目录结构,创建project目录

     3、然后把A库中的svn数据dump出来,具体命令为 svnadmin dump 【A库的svn路劲】 > 【保存的文件】(这里命名为A.svn)

     4、由于这dump的文件中包含项目a4,但是要求不需要把项目a4导入新的svn库中,所以,需要对dump文件进行删选。具体命令为:

           cat A.svn  | svndumpfilter include a1 a2 a3  > A-filter.svn

     5、把A-filter.svn拷贝到目标服务器中,执行导入操作svnadmin load 【新创建的svn库路劲】 --parent-dir  project < A-filter.svn

     6、对B库重复步骤2到5的操作,其中,第4步不需要过滤操作。

 

     在整个操作过程中,需要注意

      1)、需要先在目标库中创建好目录结构

      2)、在创建新库的时候,需要把conf/svnserve.conf中的配置项打开,比如

               authz-db = authz

               password-db = passwd

               anon-access = none

               auth-access = write

      3)、在导入数据的时候要注意使用参数--parent-dir