代码之家  ›  专栏  ›  技术社区  ›  Joe Phillips

如何将SVN存储库移动到新服务器

  •  34
  • Joe Phillips  · 技术社区  · 14 年前

    我们希望将两个服务器合并在一起,为了做到这一点,我们需要在“新”服务器上安装SVN,然后转移到我们在“旧”服务器上设置的所有存储库中。

    这个手术容易吗?可能使用Tortoissesvn提供的“重新定位”选项?最好的方法是什么?

    现在是重新组织如何设置存储库的好时机吗?

    4 回复  |  直到 8 年前
        1
  •  58
  •   Community CDub    8 年前

    您可以使用 svnadmin dump 功能。在SVN服务器上,键入 svnadmin dump /absolute/path/to/the/repo > /tmp/repo.svndump . 这将把整个存储库导出到系统临时目录中的一个文本文件中,并将其命名为“repo.svndump”。在将文件传输到新服务器之前,您可能需要压缩该文件。

    一旦导出了repo,您就可以将转储文件传输到新服务器,然后像这样导入它: svnadmin load /absolute/path/to/the/**new**/repo < repo.svndump .

    svnadmin dump '和' svnadmin load '了解更多信息。

    在转储存储库并将其加载到新服务器之后,您将使用 --relocate 命令将本地副本切换到新服务器。

    注意: 如果您的存储库使用 externals 那你就有问题了。见 my question 有关此的详细信息,请参阅服务器故障。

        2
  •  1
  •   Stefan Egli    14 年前

    如果新服务器使用相同的操作系统,您可以将整个存储库文件夹复制到新服务器。无需卸载和重新加载。

    relocate命令允许您将工作副本指向新的服务器,即,它不帮助您移动存储库,它只会避免您执行新的签出操作。

    外部因素可能是一个问题,但不一定是。如果外部存储库在同一台服务器上,那么您可能使用相对URL指定了外部存储库。如果新服务器使用相同的结构,那么一切都应该正常工作。

        3
  •  1
  •   evpo    8 年前

    CLONE-SVN2SVN

    如果 svnadmin dump 不是选项,您可以使用 clone-svn2svn bash脚本。它将一个SVN目录复制到另一个具有完整或部分修订历史的SVN站点。以下是主要命令行参数。还可以设置要克隆从中开始复制历史记录的修订。

    clone-svn2svn.sh <source-svn-url> <destination-svn-url>
    

    要求

    脚本工作需要bash和git。如果您在Windows或其他平台上,请从下载 git-scm web site . 这是一个包含bash的git安装程序。

    细节

    该脚本使用 git-svn 并将历史上载到目标SVN repo。

    缺点

    目标repo中修订的作者将是运行脚本的用户(您自己)。但是,每个修订消息都将有一行指定原始作者。所以还不错。

        4
  •  0
  •   Bernard    14 年前

    现在是时候 重新组织回购的设置方式 好?

    做这件事的最佳时机,因为在将存储库迁移到新服务器时,无论如何都必须将其取下。