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

时间:2010-09-24 17:38:23

标签: svn tortoisesvn

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

这是一项简单的操作吗?可能使用TortoiseSVN提供的“Relocate”选项?最好的方法是什么?

这是重新组织存储库设置方式的好时机吗?

4 个答案:

答案 0 :(得分:58)

您可以使用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

答案 1 :(得分:1)

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

relocate命令允许您将工作副本指向新服务器,即它不会帮助您移动存储库,它只会使您无需进行新的结帐。

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

答案 2 :(得分:1)

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历史记录下载到临时git存储库,并将历史记录上载到目标SVN存储库。

缺点

目标仓库中的修订版中的作者将是运行脚本的用户(您自己)。但是,每个修订消息都有一个指定原始作者的附加行。所以它并不太糟糕。

答案 3 :(得分:0)

  

这是一个好时机吗?   重新组织回购的设置方式   好?

完成此操作的最佳时机,因为在将其迁移到新服务器时,无论如何都必须关闭存储库。