Если у вас есть поврежденный репозиторий, ваш единственный реальный шанс сохранить информацию - сделать дамп и загрузить.Если вам повезет, выполнение дампа и загрузки иногда исправит повреждение.
Если нет, вы можете использовать параметр -r <from>:<to>
в дампе, чтобы пропустить неверные ревизии.Вы можете создать несколько файлов дампа и объединить их в один репозиторий, чтобы пропустить неверные номера ревизий.Я заметил, что каждый файл дампа начинается с полной ревизии хранилища с этой ревизией, и процесс дамп / загрузка обычно достаточно умен, чтобы не удваивать изменения.
На самом деле, я считаю, что вы даже можете поместить несколько дампов в один файл дампа без особых проблем.Далее следует пропустить ревизии 1001 и 1204, которые являются недействительными ревизиями:
$ svnadmin dump -r1:1000 my_repos > dumpfile.txt
$ svnadmin dump --incremental -r1002:1203 my_repos >> dumpfile.txt
$ svnadmin dump --incremental -r1205:HEAD my_repos >> dumpfile.txt
$ svnadmin load my_repos2 < dumpfile.txt
Существует несколько сценариев резервного копирования Subversion, которые выполняют резервное копирование репозитория путем получения дампов последних ревизий.Например, при первом запуске он выгружает все, начиная с первой ревизии и заканчивая последней версией (скажем, ревизия 1000).Затем, на следующий день, дамп ревизии 1001 до последней ревизии (скажем, 1003), а на следующий день, ревизии 1004 до последней ревизии.
Для восстановления необходимо восстановить все дампы, кроме резервной копиивремя должно быть короче, чем делать полный дамп каждый раз.
Вы также можете сделать горячую копию, но я не нахожу ее создание намного быстрее, чем создание дампа, и могут возникнуть проблемы, если вам придется перенести свой репозиторий на другую машину.