如何迁移Subversion版本库

我有一个2个Debian subversion设置在不同的服务器上,并决定closures其中一台服务器。 但在此之前,我想将一台服务器上的所有存储库移至另一台服务器 (包括所有历史版本等)。

这是怎么做的?

我可以简单地将/ var / lib / svn / repo-name的内容复制到另一台服务器上的/ var / lib / svn / repo-name吗? 还是有更多的呢?

需要做任何有关权限/所有权?

如果SVN环境相同,则只应复制文件,如果不相同的话:

  1. 在要迁移的机器上使用svnadmin来创build转储文件:
      svnadmin转储myrepos>转储文件
    
  2. 在剩余的服务器上创build新的存储库
  3. 加载您的转储文件在:
      svnadmin加载newrepos <转储文件 
  4. 从旧服务器复制任何自定义和/或挂钩脚本 。
  5. 如果交换机中的URL已更改, 请将所有工作副本切换为:
      svn switch --relocate http://new-server.lan/repos/repo 。 

这一切都来自SVN书 。

您最好从旧的存储库进行转储,并加载新的存储库。 这是将一个存储库迁移到另一个存储库最干净,最“支持”的方式。 你可以尝试复制这些文件,但是如果你没有在相同的处理器体系结构上转移到相同版本的Subversion(是的 – 如果你使用的是BerkeleyDB,你可能遇到endian – ness问题…看到阿尔法英特尔SVN迁移一次),你可能有问题。

查看http://svnbook.red-bean.com/en/1.1/ch05s03.html ,标题为“迁移存储库”一节。

(当我们没有足够的临时空间来保存转储文件的副本时,我的一个朋友曾经在两个盒子之间的netcat上做过这样的工作!)

有多种方法可以做到这一点:

  1. 停止svn服务器而不是复制目录的内容。
  2. svnadmin转储PATH_TO_REPOS而不是在目标服务器上#svnadmin load PATH_TO_MIRROR

    请注意,svnadmin转储不会转储您的存储库configuration文件和挂钩脚本。