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
.