将Subversion存储库移动到另一台服务器

时间:2008-12-11 20:23:41

标签: svn backup restore

我有一台托管我的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

导入存储库。

上述方法是否是最佳方法?

6 个答案:

答案 0 :(得分:58)

是的,转储和加载存储库是一种可行的方法。如果且仅当您确定在复制过程正在进以安全的方式)。

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

答案 1 :(得分:27)

我的恢复脚本是这样的:

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

第一行确保存储库使用FSFS后端(许多来源推荐,包括这一个:How FSFS is Better,而AFAIK较新版本的Subversion使用它作为默认值)。 FSFS是Subversion文件系统实现的名称。

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

一些链接:

答案 2 :(得分:9)

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

答案 3 :(得分:5)

另一种选择:

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

&#34;你需要一个名为svnrdump的工具。如Apache所述,“svnrdump复制svnadmin dump和svnadmin load的功能,但适用于远程存储库,而不需要管理员(本地文件系统)访问源或目标存储库。”

答案 4 :(得分:4)

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

答案 5 :(得分:1)

最简单的方法是使用:

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory