Подтвердить что ты не робот

Как обрезать старые версии в Subversion?

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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