已经有几次,我遇到了我的一个SVN存储库损坏的情况,我们可以对项目的某些版本或分支做任何事情而不知道我们做了什么。所以我问是什么导致存储库损坏?
似乎客户端之间的不兼容性可能会导致问题,更具体地说是字符集。
答案 0 :(得分:12)
基本上有三种不同的情况:
除了最明显的情况外,有缺陷的硬件通常是最难发现的。通过限制对服务器的登录访问可以防止案例2。 其他一切是Subversion中的一个错误。 (这包括客户端和服务器之间的兼容性问题。)您应该永远只能通过使用Subversion客户端来破坏存储库(即使客户端中存在错误,IMO也是如此)。 / p>
答案 1 :(得分:4)
潜在的文件系统损坏或有人在使用内部svn目录?
答案 2 :(得分:3)
总是存在硬件故障的可能性。像内存中的位错误这样的事情可能导致静默损坏而不是简单地崩溃计算机;如果svn服务器进程受影响,则存储库可能会损坏。
答案 3 :(得分:2)
如果存储库不在svn服务器本地磁盘上,但在NFS上,如果它们使用berkley db格式,它们可能会损坏。在svn 1.5中FSFS成为新回购的默认设置 - 非常高兴生活在非锁定文件系统上,比如NFS。
答案 4 :(得分:0)
我已经发生了几次。如果客户端在服务器花费很长时间做某些事情的时候离开,SVN似乎不太好用。我不知道确切的细节,但是我已经对我认为只读进程做了一些kill -9
,最后不得不在服务器再次响应之前运行svnadmin cleanup
。
答案 5 :(得分:0)
这在基于file://
的repos上非常常见,但是如果您有一个用户/服务访问repo,则不会发生这种情况。
答案 6 :(得分:0)
我有一个回购腐败,花了我一段时间才弄明白。在服务器上,我意外地将回购中的.svn目录的所有者更改为某个不相关的用户。之后SVN给了我腐败错误,直到我删除并重新创建了回购。甚至在我纠正之后。 打了额头