У нас возникла проблема с нашим svn-репозиторием, он содержит все, что очень важно.
Когда мы запускали дамп, мы получали сообщение об ошибке
svnadmin: E200002: сериализованный хэш искажен
Это мешает нам выполнить дамп и переместить наш контент, это также не удалось при экспорте svn.
Мы обнаружили, что одна из ревизий повреждена, можно ли как-то исправить или восстановить репозиторий, если нам нужно его переместить.
Это сработало для меня. Я только что восстановил поврежденный файл db / revprops / 19. 19 вот версия поврежденного коммита. Вы можете увидеть, какая фиксация повреждена, выполнив svn log.
Этот файл должен выглядеть так:
K 10
svn:author
V 5
roman
K 8
svn:date
V 27
2010-06-05T16:53:51.953072Z
K 7
svn:log
V 0
END
Мне пришлось изменить это
K 6
svn:loo
к этому:
K 7
svn:log
(7 здесь показывает длину следующей строки)
У вас есть резервные копии или зеркала, с которых вы можете получить эту версию?
На самом деле сегодня у меня была именно эта ошибка с поврежденной версией 0 на одном из моих зеркал, которую я смог исправить, скопировав revprops (поврежденный файл) с другого зеркала. Все прошло успешно, и после этого у меня не было проблем.
Это может быть не рекомендуемый метод для этого, поэтому будьте осторожны. Резервные копии резервные копии резервные копии.
Нам удалось исправить это, выполнив svn-дамп с обеих сторон поврежденной ревизии, а затем объединив два файла вместе с помощью cat или type, в зависимости от того, какую платформу вы используете, а затем импортируя это в новый репозиторий.
После этого я выполнил проверку, и она завершилась до конца, а также вся ревизия истории теперь видна, когда раньше она не могла пройти через поврежденный файл ревизии.
После нескольких операций резервного копирования / восстановления вручную мой репозиторий стал выдавать ту же ошибку. Я проверяю последние версии в корне репозитория и обнаруживаю, что один из файлов в db / revs / каталог размещен в db / revprops / (эти файлы очень разные по размеру, поэтому я это быстро замечаю)