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


67

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

导入存储库。

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


1
我就是这样做的。。。
cciotti

3
这是“推荐的方式”,那么为什么您怀疑这是一种好方法呢?无论如何,“最佳”是什么意思?

您是否正在寻找较短的版本?
orezvani 2014年

Answers:


59

是的,转储数据库是一种方法。仅当您确定在复制过程中没有人将访问存储库时,才可以直接复制存储库文件夹(或者可以对存储库进行“热复制”,这样可以处理这些情况)以安全的方式)。

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


谢谢,实际上,搬迁应该很好,因为它要移动的服务器将与当前使用的服务器具有相同的服务器IP。
瑞安·史密斯

谢谢,我在直接复制方面有些挣扎,因为我没有正确设置我的SVNServe根目录,但是一旦我这样做,直接复制似乎就很好用了。谢谢。
Ryan Smith,

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切换,工作副本重定位将失败)。

一些链接:


9

您也可以使用svnsync来移动存储库。这样,您可以传输所有数据,而无需删除旧的存储库。这也是我所知道的从托管环境中获取数据的唯一方法,在该环境中您没有外壳访问权限,也无权转储存储库。



4

如果您正在使用文件系统类型存储库,则可以从字面上获取包含存储库的文件夹并将其移动。如果要更改服务器,则可能需要使用“重新定位”命令来更改本地工作目录查找存储库的位置。


1

最简单的方法是使用:

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.