Как может репозиторий SVN стать коррумпированным?

Несколько раз, я попал в ситуации, когда один из моих репозитариев SVN получил коррумпированность, и мы могли что-то делать с некоторыми версиями или ветвями проекта, не зная, что мы сделали. Итак, я спрашиваю, что может привести к повреждению репозитория?


Похоже, что несовместимость между клиентами может вызвать проблемы, в частности, с наборами символов.

Ответы

Ответ 1

Существуют три различных случая:

  • Неисправное оборудование (память, повреждение fs и т.д.).
  • Пользователь с доступом к серверу на сервере может испортить файлы репозитория.
  • Ошибки в Subversion.

Неисправное оборудование обычно наиболее сложно обнаружить, за исключением наиболее очевидных случаев. Случай 2 можно предотвратить, ограничив доступ к серверу. Все остальное является ошибкой в ​​Subversion. (Это включает проблемы совместимости между клиентом и сервером.) Вы должны никогда иметь возможность повреждать репозиторий, просто используя клиент Subversion (даже если в клиенте есть ошибка IMO).

Ответ 2

Потенциальная коррупция в файловой системе или кто-то извергается с внутренними каталогами svn?

Ответ 3

Всегда существует вероятность неисправности оборудования. Такие вещи, как бит-ошибки в памяти, могут вызывать молчащее повреждение, а не просто сбой компьютера; если процесс сервера svn является затронутым, репозиторий может стать поврежденным.

Ответ 4

Если репозитории не находятся на локальном диске svn-серверов, но в NFS они могут стать поврежденными, если они используют формат berkley db. В svn 1.5 FSFS стал стандартом для новых репозиториев - он отлично доволен тем, что не блокирует файловые системы, например NFS.

Ответ 5

У меня это случилось несколько раз. SVN, похоже, не справляется, если клиент уходит, а сервер занимает много времени, чтобы делать определенные вещи. Я не знаю точных данных, но я сделал несколько kill -9 по тому, что, как я думал, был только для чтения, и закончил тем, что должен был запустить svnadmin cleanup после того, как сервер снова ответит.

Ответ 6

Это довольно часто встречается в репозиториях на основе file://, однако, если у вас есть один пользователь/услуга, обращающаяся к репо, этого не произойдет.

Ответ 7

У меня была коррупция репо, которая заставила меня разобраться, чтобы понять. На сервере я случайно сменил владельца .svn dir в репо на некоторого неродственного пользователя. SVN дал мне коррупционные ошибки после этого, пока я не удалил и не создал репо. Даже после того, как я его исправил. ударяет лоб