我已经遇到过几次情况,其中一个 SVN 仓库损坏了,我们在不知道自己所做的事情的情况下无法对项目的某些版本或分支进行任何操作。因此,我想知道是什么导致了仓库损坏?
似乎客户端之间的不兼容性可能会引起问题,特别是与字符集有关。
我已经遇到过几次情况,其中一个 SVN 仓库损坏了,我们在不知道自己所做的事情的情况下无法对项目的某些版本或分支进行任何操作。因此,我想知道是什么导致了仓库损坏?
似乎客户端之间的不兼容性可能会引起问题,特别是与字符集有关。
基本上有三种不同的情况:
通常情况下,除了最明显的情况外,很难发现故障硬件。通过限制对服务器的登录访问,可以避免第2种情况。 所有其他问题 都是Subversion中的错误。(包括客户端和服务器之间的兼容性问题)。在我的看法中,您应该永远不能仅通过使用Subversion客户端就损坏仓库(即使客户端存在漏洞)。
硬件出现故障的可能性总是存在的。例如,内存中的位错误可能会导致静默损坏而不是仅仅使计算机崩溃;如果svn服务器进程受到影响,则存储库可能会损坏。
如果仓库不在svn服务器的本地磁盘上,而是在NFS上,则使用伯克利数据库格式可能会导致仓库损坏。在svn 1.5中,FSFS成为新仓库的默认格式 - 它可以很好地在非锁定文件系统(如NFS)上运行。
kill -9
操作,结果后来不得不运行svnadmin cleanup
才能使服务器再次响应。这在基于 file://
的版本库中非常普遍,然而如果只有单个用户/服务访问版本库,则不会发生这种情况。