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, я попытался сделать дамп, чтобы посмотреть, сможем ли мы получить дамп, но неудивительно, что это не удалось.

По-видимому, это (на первый взгляд) не повлияло на ежедневное использование этого хранилища, однако невозможность выгрузить хранилище не очень хорошая вещь.

Мои вопросы:

  1. Есть ли что-то, что я могу сделать, чтобы попытаться восстановить ту историю, которую я могу из этого хранилища и начать заново?
  2. Есть ли способ иметь svnadmin verify показать все ошибки вместо того, чтобы просто потерпеть неудачу при первой ошибке?

2 ответа

Решение

Я встретил ту же ошибку E160004 и обнаружил полезными следующие две ссылки:

http://mail-archives.apache.org/mod_mbox/subversion-users/201401.mbox/%3C52CF3574.1060508@reser.org%3E

https://subversion.apache.org/docs/release-notes/1.8.html

Что касается вашего вопроса 1, который, я думаю, вы имели в виду, что вы хотите знать, как решить эту проблему, "выполнить цикл дампа / загрузки", как это предлагается во второй ссылке выше.

Вопрос 2 кажется невозможным, так как я прочитал справку svnadmin и попытался это сделать.

  1. вы можете следовать инструкциям здесь
      $ 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

  1. Есть способ продолжить работу после ошибки - используйте--keep-goingвыключатель:
      svnadmin verify --keep-going /path/to/repo
Другие вопросы по тегам