我的目标是将旧的 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 转储不会传输这些文件