Как мне удалить старые ревизии в Subversion? - PullRequest
23 голосов
/ 19 ноября 2008

Как я могу удалить старые ревизии из моего хранилища subversion разработки? У меня есть песочница Subversion, в которой у меня есть множество тестовых проектов, двоичных файлов и т. Д. Я бы хотел иногда удалять историю.

Ответы [ 4 ]

28 голосов
/ 19 ноября 2008

Вот официальный ответ:

Есть особые случаи, когда вы можете уничтожить все доказательства файла или коммита. (Возможно, кто-то случайно передал конфиденциальный документ.) Это не так просто, потому что Subversion специально разработана, чтобы никогда не терять информацию. Редакции - это неизменные деревья, которые строятся друг на друге. Удаление ревизии из истории вызовет эффект домино, создав хаос во всех последующих ревизиях и, возможно, сделает недействительными все рабочие копии.

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

Между тем, вы можете использовать svnadmin для дампа вашего хранилища, а затем направить файл дампа через svndumpfilter (исключая неверный путь) в команду загрузки svnadmin. Подробнее об этом см. Главу 5 книги Subversion.

Найдено здесь: http://subversion.tigris.org/faq.html#removal

5 голосов
/ 07 июля 2010

Джон - мы не согласны. Бывают случаи, когда уместно удалять «очень старые» данные, которые, как мы уверены, больше не понадобятся, поскольку их резервное копирование выполняется на некоторых других носителях. Возьмем, к примеру, систему, которая автоматически отслеживает версии файлов конфигурации. В какой-то момент имеет смысл сказать: «Мы знаем, что нам больше не нужно иметь конфигурацию, которая выглядела год назад, чтобы быть онлайн. Иметь эту информацию в каком-то офлайн-формате - это хорошо, но оставить ее онлайн в производственных системах не очень хорошая вещь ". Это прекрасный пример, когда уместно иметь возможность легко архивировать очень старые данные, а затем удалять их из репозитория. Я нашел способ обойти эту проблему, но я думаю, что это настоящий взлом, что мне нужно эффективно переигрывать историю с определенного момента времени через все ревизии, чтобы создать новый репозиторий, чтобы я мог заменить старый.

4 голосов
/ 19 ноября 2008

Вы можете использовать svndumpfilter .

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

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

2 голосов
/ 20 ноября 2008

На самом деле вы не хотите обрезать историю, так лежит безумие.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...