IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    SVN迁移总结

    admin发表于 2016-07-09 08:24:42
    love 0

    需求1:现有SVN下分别有A和B两个仓库,需要将这两个仓库合并到C仓库下并保留各自的版本信息。

    实现:先将两个仓库单独dump到文件,然后再将这两个dump文件load到同一个C仓库中

    svnadmin dump /data/resources/svndata/svn/a/ > /tmp/a.dump

    svnadmin dump /data/resources/svndata/svn/b/ > /tmp/b.dump


    在c仓库下分别创建a和b两个文件夹,再分别两个dump文件导入到各自的文件夹中:

    svnadmin load /data/resources/svndata/svn/c/ --parent-dir a < /tmp/a.dump

    svnadmin load /data/resources/svndata/svn/c/ --parent-dir b < /tmp/b.dump


    --parent-dir 表示指定导入到仓库下的哪个子目录,如上表示将a.dump导入到c仓库下的a目录中


    需求2:将版本库A目录下的abc 即 /A/abc 移动到新的版本库B下并保留版本信息。

    实现:先将整个版本库A dump出来,再利用svndumpfilter过滤出要导出的abc文件夹,最后将过滤出的abc导入到版本库B中

    如下:

    # svnadmin dump /data/resources/svndata/svn/A/ > /tmp/A.dump

    # cat /tmp/A.dump | svndumpfilter include abc > /tmp/abc.dump

    # svnadmin create /data/resources/svndata/svn/B

    # svnadmin load /data/resources/svndata/svn/B/ < /tmp/abc.dump 


    错误处理:

    当执行svndumpfilter 时可能会出现:

    svndumpfilter: Invalid copy source path '/Alex' 

    它需要包含 /Alex 目录,此时不管你在导入新的版本库时是否需要包含Alex目录,在命令里都给加上,命令如下:

    # cat /tmp/A.dump | svndumpfilter include abc “/Alex” > /tmp/abc.dump


    此解决方案来自:http://stackoverflow.com/questions/9261625/svndumpfilter-fails-with-invalid-copy-source-path-error 

     

     

    需求3:将版本库A目录下的abc的子目录ddd 即 /A/abc/ddd 移动到新的版本库B下并保留版本信息。

    实现:实现方式和需求2一致。

    # svnadmin dump /data/resources/svndata/svn/A/ > /tmp/A.dump

    # cat /tmp/A.dump | svndumpfilter include '/abc/ddd' > /tmp/ddd.dump

    # svnadmin create /data/resources/svndata/svn/B

    # svnadmin load /data/resources/svndata/svn/B/ < /tmp/ddd.dump 

      

    可能遇到的错误:

    当执行最后一步svnadmin load的时候出现以下错误:

    svnadmin: File not found: transaction '335-9b', path 'abc/ddd'

    解决办法:

    先将B checkout出来,然后再创建abc目录进行提交,然后再次执行svnadmin load

    # svn chekcout http://192.168.1.9/svn/B /tmp/B

    # mkdir /tmp/B/abc

    # svn add /tmp/B/abc

    # svn ci -m "temp dir" /tmp/B/abc

    # svnadmin load /data/resources/svndata/svn/B/ < /tmp/ddd.dump 

     

      

    解决方案参考:

    http://stackoverflow.com/questions/2359448/svnadmin-load-from-dumpfile-causes-file-not-found-error-help

    http://witcher42.me/blog/2012/06/01/svn/

      

      

      


    svn-square.jpg



沪ICP备19023445号-2号
友情链接