Освобождаю место в моем репозитории SVN

8

У меня есть SVN-репозиторий, размещенный на сайте freemium с максимальным размером репозитория. По мере приближения к этой емкости я узнаю о файлах, которые я зарегистрировал, и которые я могу удалить навсегда, чтобы освободить место на диске. Как мне сказать SVN, что файл можно не только удалить, но и историю?

fbrereto
источник

Ответы:

7

как говорит Хьюберт, svnadmin packвсе отдельные файлы репо в каталоге будут упакованы в один большой файл. Это сэкономит вам немного места, но это только откладывает день расплаты за вас. (это должно сделать операции с историей быстрее, так что это хорошее предложение в любом случае). Стоит отметить, что он работает только в защищенных каталогах (т.е. новая структура каталогов состоит в том, чтобы поместить 1000 ревизий в один каталог, а затем в новый каталог), и он упаковывает только старые каталоги сегментов, а не тот, в котором находится текущая ревизия. в этом.

Таким образом, ваш единственный вариант - удалить старые ревизии из вашей истории. Это требует svnadmin dump and load, с дополнительным фильтром для удаления каталогов в вашем репо, который вам больше не нужен. (например, старые временные ветви).

Создать дамп очень просто: svnadmin dump -r xxx:HEADгде xxx - самая старая ревизия, которую вы хотите сохранить (т. Е. Она будет сбрасывать самые последние ревизии, поэтому ваши древние ревизии удаляются, как архивирование). Вы можете сохранить архив старых ревизий, выгрузив их тоже ( svnadmin dump -r 1:xxx)

Когда у вас есть дамп-файл, его загрузка так же проста, как и запуск загрузки svnadmin в имени дамп-файла. может быть хорошей идеей удалить старый репозиторий перед загрузкой нового - тогда вы получите преимущество от последних свойств файловой системы сервера, если у вас их еще нет.

Если вы хотите сохранить все старые ревизии, но отфильтровать определенные каталоги, вам нужно запустить файл дампа через svndumpfilter , который удалит указанные пути. Имейте в виду, что вы хотите создать дамп без использования опции --incremental.

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

gbjbaanb
источник
3

Из FAQ по Subversion :

У проекта есть планы ... когда-нибудь реализовать команду svnadmin obliterate, которая будет выполнять задачу постоянного удаления информации.

...

В то же время, единственным выходом для вас является svnadmin сделать дамп хранилища, а затем передать дамп-файл через svndumpfilter (исключая неверный путь) в команду загрузки svnadmin.

nedm
источник
2

Вы не можете удалить файл из репозитория SVN без svnadmin dump; svndumpfilter; svnadmin loadтанца. Вы можете уменьшить размер репозитория, если вы используете FSFS, просто запустите svnadmin packв каталоге репо.

Хьюберт Карио
источник
0

Обычно плохая идея удалять файлы из репозитория под управлением версиями.

Я не уверен, что понял правильно, но вот как я это понимаю. Контроль версий - это уникальные контрольные суммы. Если вы удалите что-то, существует риск повторного использования этих контрольных сумм, что приводит к конфликтам. Это просто не стоит уменьшать проблему с нехваткой места на диске, лучше обновите свой тарифный план.

halp
источник