我们希望将两台服务器合并在一起,为了做到这一点,我们需要在“新”服务器上安装SVN,然后移动我们在“旧”服务器上设置的所有存储库
这是一项简单的操作吗?可能使用TortoiseSVN提供的“Relocate”选项?最好的方法是什么?
这是重新组织存储库设置方式的好时机吗?
答案 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)
如果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)
这是一个好时机吗? 重新组织回购的设置方式 好?
完成此操作的最佳时机,因为在将其迁移到新服务器时,无论如何都必须关闭存储库。