Цитирование Subversion Obliterate, забытая особенность , вопрос состоит из трех компонентов: проблема , причина и решение . Поскольку вы начали с вопроса к решению, я начну с этого.
Решение
Как вы заметили, отличного решения не существует. Особенно, если вы имеете дело с большим корпоративным репозиторием, поскольку решение становится тем сложнее, чем больше становится репо. Есть функция под названием dump / filter , с помощью которой вы можете очистить репо от ненужных вам вещей, но это не так просто, не так быстро и ненадежно.
Было предпринято небольшое усилие (следите за темой) в команде svn, чтобы получить возможность уничтожения после 2008 года, но эта попытка умерла тихой смертью.
проблема
В статье, о которой я упоминал в начале, на самом деле есть хороший список случаев использования, когда требуется облитерирующая команда, а в ветке 516 разработчики фактически признали ее достоинства.
Увы, сейчас слишком поздно; настоящая причина, по которой он никогда не был добавлен позже, заключалась в том, что теперь его практически невозможно реализовать, поскольку он подключается к коду на самом фундаментальном уровне (см. также ссылку small усилия в разделе Solution).
Из записи FAQ :
Ревизии - это неизменные деревья, которые опираются друг на друга. Удаление ревизии из истории вызовет эффект домино, создав хаос во всех последующих ревизиях и, возможно, сделает недействительными все рабочие копии.
Причина
Проблема в том, что изначально уничтоженная функция была удалена, поскольку она не соответствовала принципу истинного контроля версий.
Снова из записи FAQ :
Как полностью удалить файл из истории хранилища?
Есть особые случаи, когда вы можете уничтожить все доказательства файла или коммита. (Возможно, кто-то случайно передал конфиденциальный документ.) Это не так просто, , потому что Subversion специально разработан, чтобы никогда не терять информацию .
Однако
Теперь я работал с SVN для многих клиентов с большими командами и более крупным проектом, и в принципе у меня никогда не было настоящей проблемы. Да, упомянутые варианты использования требуют уничтожения, но пока я не уверен, что это проблема, которая возникает у вас снова и снова, куда бы вы ни пошли. Конечно, суть этой конкретной проблемы заключается в том, что вы должны совершить ошибку только один раз, и ее нельзя исправить должным образом.