我们希望将两台服务器合并在一起,为此我们需要在“新”服务器上安装SVN,并将我们在“旧”服务器上设置的所有存储库移动到新服务器上。
这个操作容易吗?可能可以使用TortoiseSVN提供的“Relocate”选项来完成。最佳方法是什么?
这是否是重新组织存储库设置的好时机?
我们希望将两台服务器合并在一起,为此我们需要在“新”服务器上安装SVN,并将我们在“旧”服务器上设置的所有存储库移动到新服务器上。
这个操作容易吗?可能可以使用TortoiseSVN提供的“Relocate”选项来完成。最佳方法是什么?
这是否是重新组织存储库设置的好时机?
svnadmin dump
功能来迁移存储库。在SVN服务器上,键入svnadmin dump /absolute/path/to/the/repo > /tmp/repo.svndump
。这将导出整个存储库到系统临时目录中的文本文件中,并将其命名为“repo.svndump”。在将其传输到新服务器之前,您可能需要压缩该文件。svnadmin load /absolute/path/to/the/**new**/repo < repo.svndump
。--relocate
命令将本地副本切换到新服务器。
注意:如果您的存储库使用任何externals
,则可能会遇到一些问题。请参见我在Server Fault上的问题,了解详情。svn: E175002: Commit failed (details follow): svn: E175002: PROPFIND of '/Project/Project/src/dashboards/BasicLineGraph.java': 500 Internal Server Error (http://www.domain.com)
。我正在努力解决这个问题,但是重新安装了多次,仍然无效。 - ryvantage如果使用svnadmin dump
不可行,您可以使用clone-svn2svn bash脚本。它可以将一个SVN目录复制到另一个SVN站点,并保留完整或部分修订历史记录。以下是主要的命令行参数。您还可以设置从哪个版本开始复制历史记录。
clone-svn2svn.sh <source-svn-url> <destination-svn-url>
这个脚本需要使用Bash和Git才能正常工作。如果您使用的是Windows或其他平台,请从git-scm网站下载它们。这是一个包含bash的git安装程序。
该脚本使用git-svn
将源SVN历史记录下载到临时git存储库中,并将历史记录上传到目标SVN存储库。
在目标存储库中,作者的修订版本将是运行脚本的用户(即您自己)。但每个修订消息都会有一行额外的信息指定原始作者,所以并不太糟糕。