SVN - полностью удалить версию с сервера SVN

Я, к сожалению, сделал одну большую папку для SVN (у нее около 1,4 ГБ и около 10000 файлов, многие из них - двоичные файлы). Есть ли возможность вернуться к предыдущей ревизии и заставить сервер SVN забыть, что следующая ревизия была сделана? Например, эта фиксация была версией 120. Поэтому я хочу сделать верхнюю ревизию 119 и удалить все файлы и настройки SVN db из 120. revision.

Я попытался удалить эту папку, поэтому было выполнено 121 commit. А потом я попытался объединить ревизии 121 и 119. Но это не помогло. Версия 120 все еще находится в системе.

Затем мне захотелось сделать зеркало SVN-репозитория с помощью svnsync, но нет возможности настроить, какую ревизию я хочу сделать зеркалом. Если я не нашел этот вариант. (Я хотел бы установить ревизии от 0 до 119).

Вы знаете, что я могу с этим поделать? Есть ли какая-либо команда для полного удаления одной версии, какой она никогда не была?

Ответ 1

Вы должны сбросить репозиторий, а затем перезагрузить его, пропуская версию, которую больше не хотите. (r120 в вашем примере)

Для этого используйте команду svnadmin dump, а затем команду svnadmin load.

Пример:

svnadmin dump c:\svn\my_repo -r0:119 > repo.dump
svnadmin load c:\svn\my_new_repo < repo.dump

В более сложных сценариях вам, возможно, придется использовать svndumpfilter, но я не думаю, что это необходимо в вашем случае.

Ответ 2

Вы можете выполнить любую из этих двух задач:

  • Войдите в свой сервер SVN, удалите файлы, которые вы там не хотите, и выйдите из системы. Это создаст еще одну ревизию, но, поскольку она выполняется через интерфейс сервера, мало шансов на разрушение.
  • Вернитесь к ревизии 119, внесите небольшие изменения, а затем зафиксируйте. Разрешите все конфликты на accepting yours.