Subversion E160004 Предшественником корневого узла X является Y, но должно быть Z
Я унаследовал большой репозиторий Subversion (версии 74010), и я пытаюсь выполнить дамп / загрузку, чтобы обновить репозиторий до версии 1.8, чтобы воспользоваться преимуществами функций экономии места.
Перед попыткой этого процесса я побежал svnadmin verify
над хранилищем, о котором идет речь, чтобы убедиться, что хранилище было в хорошей форме. К сожалению, я получил следующее сообщение об ошибке:
svnadmin: E160004: r1516's root node's predecessor is r1514 but should be r1515
Я много гуглил, пытаясь найти смысл этой ошибки, но не смог найти информацию для этой конкретной ошибки, кроме ошибки, которая, по-видимому, возникала только для новых репозиториев. К сожалению, также кажется, что этот номер ошибки используется для нескольких классов ошибок.
Я могу проверить, что эта конкретная ревизия отсутствует, когда я выполняю "Показать журнал" в TortoiseSVN, я попытался сделать дамп, чтобы посмотреть, сможем ли мы получить дамп, но неудивительно, что это не удалось.
По-видимому, это (на первый взгляд) не повлияло на ежедневное использование этого хранилища, однако невозможность выгрузить хранилище не очень хорошая вещь.
Мои вопросы:
- Есть ли что-то, что я могу сделать, чтобы попытаться восстановить ту историю, которую я могу из этого хранилища и начать заново?
- Есть ли способ иметь
svnadmin verify
показать все ошибки вместо того, чтобы просто потерпеть неудачу при первой ошибке?
2 ответа
Я встретил ту же ошибку E160004 и обнаружил полезными следующие две ссылки:
https://subversion.apache.org/docs/release-notes/1.8.html
Что касается вашего вопроса 1, который, я думаю, вы имели в виду, что вы хотите знать, как решить эту проблему, "выполнить цикл дампа / загрузки", как это предлагается во второй ссылке выше.
Вопрос 2 кажется невозможным, так как я прочитал справку svnadmin и попытался это сделать.
- вы можете следовать инструкциям здесь
$ svnadmin verify myrepository
$ svnadmin dump myrepository > dumpfile
# when it errors, you can run incremental from the listed (revision + 2). e.g. 6 in the example
$ svnadmin dump --incremental -r 6:HEAD myrepository >> dumpfile
# repeat the last step for each error, incrementing the range argument each time. this will ultimately create a dumpfile that can be loaded into a new repo
$ svnadmin create recoveredrep
$ cat dumpfile | svnadmin load recoveredrepo
- Есть способ продолжить работу после ошибки - используйте
--keep-going
выключатель:
svnadmin verify --keep-going /path/to/repo