68

我有一个托管我的 Subversion 代码库的服务器。该服务器当前是Windows Server 2003 机器,我的 IT 管理员想要将其更新到Windows Server 2008

这意味着我需要在构建服务器时移动我的 Subversion 存储库,并且想知道将存储库移动到新服务器的最佳实践是什么。

看来,在网上看,推荐的方法是使用:

svnadmin dump /path/to/repository > repository-name.dmp

然后使用:

svnadmin create repository-name
svnadmin load repository-name< repository-name.dmp

导入存储库。

上面的方法似乎是最好的方法吗?

4

6 回答 6

59

是的,转储和加载存储库是一种方法。当且仅当您确定在复制过程正在进行时没有人会访问存储库时,直接复制存储库文件夹是一个可行的选择(或者您可以对存储库进行“热复制”,这可以处理这些情况以安全的方式)。

您还需要重新签出所有工作副本,或使用svn switch命令,该命令仅重写 URL。更方便的方法是使用 TortoiseSVN 的Relocate命令,它可以降低在重定位过程中出错的风险。

于 2008-12-11T20:50:12.737 回答
27

我的恢复脚本是这样的:

svnadmin create repository-name --fs-type fsfs
svnadmin load   repository-name --force-uuid < repository-name.dmp

第一行确保存储库使用FSFS后端(许多来源都推荐使用后端,包括这个:如何 FSFS 更好,AFAIK 较新的 Subversion 版本默认使用它)。FSFS是 Subversion 文件系统实现的名称。

第二行保留存储库的 UUID,以便更轻松地转换(没有--force-uuid切换,工作副本重定位将失败)。

一些链接:

于 2008-12-11T21:06:57.900 回答
9

您还可以使用svnsync移动存储库;这样您就可以传输所有数据,而无需关闭“旧”存储库。这也是我所知道的从托管环境中获取数据的唯一方法,在这些环境中,您没有 shell 访问权限或转储存储库的权限。

于 2008-12-12T12:31:11.080 回答
5

另一种选择:

使用 svnrdump。 http://www.crowbarsolutions.com/backing-up-restoring-a-remote-svn-repository/

“您将需要一个名为 svnrdump 的工具。正如 Apache 所描述的,“svnrdump 复制了 svnadmin dump 和 svnadmin load 的功能,但适用于远程存储库,而不需要管理员(本地文件系统)访问源或目标存储库。”</p>

于 2013-10-27T07:48:19.953 回答
4

如果您使用的是文件系统类型的存储库,您可以直接获取包含存储库的文件夹并移动它。如果您正在更改服务器,那么您可能需要使用“重新定位”命令更改本地工作目录查找存储库的位置。

于 2008-12-11T20:37:47.210 回答
2

最简单的方法是使用:

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory
于 2014-04-16T06:35:39.350 回答