SVN仓库迁移

发布时间 2023-08-14 15:46:32作者: 南柯思一梦

         这里主要记录一下本地仓库将仓库a的一个子文件夹迁移到仓库b中,同时要把提交日志一并迁移(如果是迁移整个仓库员可以通过备份还原迁移,同时可以迁移日志与代码)

        不考虑日志迁移其实是比较简单的,一种是在svn服务器使用命令行迁移,一种是创建好目录,直接目录下拷贝原有的代码仓库直接commit

 

迁移

  1. 在仓库 B 中创建一个新的目录,用于存放要迁移的子文件夹。可以使用 SVN 管理工具或命令行工具来创建目录。

  2. 在仓库 A 中执行导出操作,将要迁移的子文件夹导出到本地。可以使用命令行工具执行以下命令:

    svn export svn://svn.example.com/repo_a/path/to/subfolder /path/to/local/subfolder
    
  3. 在仓库 B 中执行导入操作,将导出的子文件夹导入到新创建的目录中。可以使用命令行工具执行以下命令:

    svn import /path/to/local/subfolder svn://svn.example.com/repo_b/path/to/new_subfolder -m "迁移子文件夹"
    

    这将在仓库 B 中创建一个新的子文件夹,并将导出的子文件夹内容导入其中。

  4. 如果您希望保留提交日志,可以使用 svnadmin dump 和 svnadmin load 命令来导出和导入仓库的历史记录。首先,在仓库 A 上执行导出操作,将仓库的历史记录导出到本地。可以使用命令行工具执行以下命令:

    svnadmin dump /path/to/repo_a > repo_a.dump
    
  5. 在仓库 B 上执行导入操作,将导出的历史记录导入到新的子文件夹中。可以使用命令行工具执行以下命令:

    svnadmin load /path/to/repo_b --parent-dir /path/to/new_subfolder < repo_a.dump
    或者
    svnrdump load https://MS-MSYSUOKQHLPU/svn/Versions/trunk/Versions1.1/Code/Client1.1 < original_repo.dump

 /path/to/repo_a是地址

迁移日志目标仓库一般都会产生异常如

svnrdump: E175008: While handling the 'svn:rdump-lock' property on '/svn/Versions/!svn/bln/0': svnrdump:

E175008: Repository has not been enabled to accept revision propchanges;

ask the administrator to create a pre-revprop-change hook

这是由于迁移的目标仓库尚未启用接受修订属性更改,这牵扯到SVN的钩子命令,这里不做详细描述,感兴趣可以查看只展示怎么处理这个问题

1.

 2.

 

3. 修改钩子

加入

#!/bin/sh
exit 0

chmod +x pre-revprop-change然后直接就可以往目标仓库迁移日志了