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

Почему не стирает неотъемлемую особенность Subversion?

В течение нескольких лет я жду, когда Subversion будет иметь функцию "удалить постоянно" (стирать). Я смущаюсь сделать переход к Subversion (исходящий из Visual SourceSafe: p), потому что я думаю, что это важная функция, так как в противном случае я ожидал бы, что хранилище будет неуклонно расти. Однако по той или иной причине функция откладывается снова и снова. Поэтому я начинаю задаваться вопросом, есть ли какая-то другая функция или временное решение, которое делает непригодную функцию непригодной.

Что вы делаете, когда хотите сжать центральный репозиторий SVN?

Пример 1: я проверить в большой сторонней библиотеке, и через несколько недель я понимаю, что он не подходит для моих нужд, Я не хочу, чтобы навсегда хранить и копировать этот большой объем данных.

Пример 2: у меня есть 10 версий 10 больших сторонних библиотек в репозитории, но я использую только последние версии.

Пример 3: я случайно проверил конфиденциальную информацию (как предложено John).

Пример 4: Я случайно проверял некоторые большие файлы, которые никогда не предназначались для размещения в репозитории.

4b9b3361

Ответ 1

Существует довольно много обсуждений svn obliterate по билету проблемы на сайте Subversion Apache, большая часть которого заканчивается около 2008 года. По-видимому, существует общее согласие в отношении того, что это хорошая возможность иметь, хотя его использование должно быть редкими.

Есть две основные причины, по которым это нужно.

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

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

Следовательно, это полезная возможность, которая в настоящее время выполняется путем сброса, фильтрации и перезагрузки репозитория. Это подвержено ошибкам в соответствии с отчетами, которые я видел, может быть медленным и требует закрытия репозитория.

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

Ответ 2

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

OTOH я не знаю VSS, поэтому я, возможно, неправильно понял "удалить навсегда"

Ответ 3

Очевидная причина в том, что разработчики думают, что это будет в балансе сделать SVN хуже - счастье, которое вы чувствуете, когда можете обрезать ненужные вещи, будет значительно затмевать ваш гнев, когда вы случайно уничтожите что-то и ваш/отсутствует.

FogBugz имеет точно такое же поведение, и в своем случае это полностью по дизайну, я считаю, защищая пользователей от себя.

Ответ 4

Obliterate нарушает принципы контроля версий, которые вы хотели бы иметь. Либо вы не сохранили бы место, либо предыдущие теги сломались. Вы не смогли бы вернуться к предыдущей предыдущей версии, если бы вы уничтожили любые файлы.

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

Ответ 5

Так как удаление данных из репозитория нарушает основную предпосылку управления версиями, это значит, что можно воспроизвести все предыдущие состояния и изменения в исходном дереве. Если вы хотите уничтожить что-то из контроля версий, вы, вероятно, "Doing It Wrong", как говорится.

Ответ 6

Я использую различные системы управления версиями уже около 15 лет и никогда не нуждался в такой функции.

Интересно, почему вы хотите эту функцию:

  • дисковое пространство? Трудно поверить, учитывая стоимость дискового пространства.
  • отправил пароль для контроля версий? Хорошо, что научит вас. Перейдите и измените пароль
  • скорость репозитория? Звучит не так, но если бы я рассмотрел совершенно другую систему с предположительно лучшей производительностью.

Ответ 7

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

SVN имеет дешевое копирование и дешевое разветвление, которое не требует полной копии файла - только измененные биты. Его центральный репозиторий, как правило, очень управляем по размеру, что делает эту ошибку неправильной.

Ответ 8

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

Ответ 9

Существует несколько сценариев, которые помогают уничтожить данные. Следуйте этот поток списка рассылки для получения дополнительной информации.

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

Ответ 10

Цитата Subversion Obliterate, забытая функция, есть три компонента вопроса, проблема, причина и решение. Поскольку вы начали с вопроса к решению, я начну с этого.

Решение

Как вы заметили, нет отличного решения. Особенно, если вы имеете дело с большим корпоративным хранилищем, поскольку решение становится все сложнее, чем больше репо. Там есть функция dump/filter, через которую вы можете очистить свое репо, чего не хотите, но это не так просто., не быстрый и не зависимый.

небольшое усилие (следуйте за нитью) в команде svn, чтобы получить стирающую функцию там после 2008 года, но усилия умер безмолвной смертью.

Проблема

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

Увы, для этого сейчас слишком поздно; реальная причина, по которой она никогда не была добавлена ​​позже, заключалась в том, что ее практически невозможно реализовать, поскольку она перехватывает код на самом фундаментальном уровне (также см. ссылку на небольшое усилие в разделе "Решение" ).

Из FAQ::

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

Причина

Проблема заключается в том, что первоначально стираемая функция была отклонена, поскольку она не соответствовала принципу правильного контроля версий.

Снова из Часто задаваемые вопросы:

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

Однако

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

Ответ 11

Что я делаю - не использовать подрывную деятельность. К сожалению.

Они (разработчики) не согласны с вашей оценкой того, что это критическая функция. Не остановил компанию, в которой я сейчас работаю, чтобы использовать ее;) Я лично исключаю подрывную деятельность по этой точной причине.

Ответ 12

Obliterate не является существенной особенностью Subversion, поскольку он фактически нарушает основные принципы контроля версий (то есть: для записи всей истории).

И это не является существенной особенностью, потому что есть обходное решение, чтобы все это сделать (используя svnadmin и фильтрацию).

Кроме того, эта функция в настоящее время активно работает. Подробнее см. этот пост.

Ответ 13

Последнее, что я проверил, было предназначено как функция ADMIN, и администратор уже может сбрасывать/фильтровать/прерывать работу и удалять историю. Что касается контрольного журнала, это не изменяет текущую цитату. Это сделало бы его менее ужасным, если что-то абсолютно необходимо удалить.

Svnadmin obliterate - одна из наиболее востребованных функций, наконец, признают, что она должна существовать (наконец, через 8 лет!!!). И гласность этого не существует, преследует пользователей от SVN.

К сожалению, мне пришлось узнать об этой "недостающей функции". С каких это основные функции? Новые пользователи начинают слышать об этом и избегают SVN. Что касается меня, теперь я использую Git.

Не нравится мое мнение? Линус ссылался на разработчиков SVN как на идиотов, а вся централизованная система испорчена. Я доверяю Линусу как истинному эксперту, и в частности он знает об источнике.