如何正确地将 SVN 存储库从 VisualSVN Server(Windows)转移到 Apache SVN(Linux)?

如何正确地将 SVN 存储库从 VisualSVN Server(Windows)转移到 Apache SVN(Linux)?

我的目标是将旧的 SVN 存储库从 Windows VisualSVN 服务器转移到 Linux Apache SVN 服务器。第一步是使用 svnadmin dump 命令转储所有存储库。之后,我将这些转储加载到我的 Linux 服务器中。导入存储库时没有出现任何错误。但是,对于某些文件,我在提交更改时收到 500 内部服务器错误。

为了检查错误原因,我在 Web 浏览器中打开了一些导致错误的文件。我发现这些文件的最后几行已损坏。数据没有丢失,但文件末尾有奇怪的字符。它们在我的 Web 浏览器中显示为:“???”。

我尝试进行多次导出,但所有导出都会导致相同的问题。是否可以更正存储库或转储?您知道如何防止这种情况发生吗?

答案1

  • 据我所知,几个版本之前,存储库的结构|数据|存储发生了一些变化:如果 VisualSVN Server 和 apache 端的 Subversion 版本相同(即,如果需要,升级 VisualSVN Server),它将更加安全
  • 从 FS 视图来看,VisualSVN Server 和 Linux 的 Apache 中的存储库是相同的 - 只是包含文件和一些非存储库文件的目录。因此,在最简单的情况下,您只需将树从 RepoRoot 复制到新服务器(根据新操作系统要求修复所有者和权限),添加(旧)密码文件(如果需要),放置在 repo 树和(旧)authz 文件之外(如果需要),将 svn 相关部分从 VisualSVN Server 的 httpd.conf 迁移到新环境(应用所有需要的更改,主要是与路径相关的更改),并在新位置拥有存储库

附言:我执行这种懒惰的“复制-粘贴”迁移不会带来太大的麻烦

提交时出现 500 内部服务器错误

主要有两个原因:未迁移用户库和/或忘记了 authz 文件中的 ACL(可能缺失或为空)- repos 转储不会传输这些文件

相关内容