将一个Subversion版本库移到另一个服务器上

我有一个服务器托pipe我的Subversion代码库。 该服务器目前是Windows Server 2003 ,我的ITpipe理员希望将其更新到Windows Server 2008 。

这意味着我将需要在服务器build立的时候移动我的Subversion版本库,并想知道将版本库移到新服务器的最佳实践是什么。

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

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

然后使用:

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

导入存储库。

上面的方法看起来是最好的方法吗?

是的,倾倒和加载存储库是一种方法。 如果并且只有在确定没有人会在复制过程正在进行时访问存储库(或者您可以执行存储库的“热拷贝”,可以处理这些情况),则直接复制存储库文件夹是可行的select以安全的方式)。

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

我的恢复脚本是这样的:

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

一些链接:

  • Subversionpipe理 – 移动资源库
  • 将一个Subversion版本库移到另一个服务器

您也可以使用svnsync来移动存储库; 这样你就可以传输所有的数据,而不需要把旧的版本库关掉。 这也是我知道从托pipe环境获取数据的唯一途径,在托pipe环境中,您没有shell访问权限或访问存储库的权限。

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

另一种select:

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

正如Apache所描述的那样,“svnrdump复制了svnadmin dump和svnadmin load的function,但是可以在远程仓库中工作,而不需要pipe理员(本地文件系统)对源或目标仓库的访问“。

最简单的方法是使用:

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