TortoiseSVN теряет ревизию из-за облачной синхронизации

#svn #version-control

#svn #контроль версий

Вопрос:

У меня есть репозиторий SVN на основе файлов, размещенный в облаке. Каким-то образом мне удалось зафиксировать ревизии 5001, 5002 и 5003 вчера поздно вечером, попытаться зафиксировать 5004 сегодня … только для того, чтобы он настаивал на том, что rev 5001 не существует. Я сильно подозреваю, что моя облачная синхронизация перезаписала или удалила файлы, но я не могу найти основу для восстановления того, чего не хватает.

Довольно ясно, что в репозитории / db / revs существуют все обороты до 5000, как и 5002 и 5003, но 5001 отсутствует. Я точно знаю, как был сгенерирован этот rev — есть ли какой-либо способ восстановить его из задействованных файлов? Могу ли я, возможно, создать дубликат репозитория, выполнить откат до 5000, а затем снова зафиксировать файлы или что-то в этом роде?

Обновление: выполнение инструкций TortoiseSVN относительно возврата к предыдущим версиям (например, 5000) не работает — они приводят к ошибке: нет такой ревизии 5001. Эти инструкции рекомендуют не использовать svnadmin/svndumpfilter … но это выглядит как единственный жизнеспособный вариант.

Комментарии:

1. Можете ли вы увидеть свои недостающие изменения ревизии в списке мертвых транзакций?? Для этого вам нужно перечислить все мертвые транзакции по команде svnadmin lstxns repo , а затем использовать svnlook info repo -t transactionid

2. Да и нет — оказывается, все папки транзакций были датированы 3 декабря (12/3)… но транзакции, которые я просматривал, были 2/12 — 12 февраля, а не 2 декабря. Путаница в формате даты привела к тому, что я облаял неправильное дерево, пока, наконец, не получил правильный синтаксис svnlook .

3. Можете ли вы также проверить, выполняется ли команда svnadmin verify path с ошибкой? Если команда проверки завершается неудачно, у вас, к сожалению, нет другого выбора, кроме как отказаться и сбросить имеющиеся у вас проверки в новое репозиторий.

4. Да, к такому выводу я пришел. В основном процесс был простым, хотя и незнакомым.

Ответ №1:

Ответ был прост: использовать svnadmin dump для создания дампа репозитория. Поскольку процесс дампа начинается с версии 1, он сбрасывает все допустимые ревизии, а затем не добавляет недопустимую ревизию в дамп. Затем из дампа можно было бы создать новое репозиторий и воссоздать последующие изменения.

Многие другие параметры svn, похоже, работают в обратном направлении по сравнению с редакцией HEAD, что приводит к сбою в этом случае.