忘れられた機能である Subversion Obliterateを引用すると、質問には、問題、理由、および解決策の 3 つの要素があります。解決策への質問から始めたので、それから始めます。
解決
お気づきのように、優れた解決策はありません。特に大規模な企業リポジトリを扱っている場合は、リポジトリが大きくなるほどソリューションが難しくなるためです。不要なものをレポから一掃できるダンプ/フィルターと呼ばれる機能がありますが、それほど使いやすくなく、高速でもなく、信頼性もありません。
2008 年以降、svn チームは抹消機能をそこに入れるための小さな努力(スレッドをたどる) がありましたが、その努力は静かな死に終わりました。
問題
冒頭で述べた記事には、実際には消去コマンドが必要なユースケースの優れたリストがあり、開発者は実際にそのメリットを認めた516 号スレッドで.
残念ながら、今では手遅れのようです。後で追加されなかった本当の理由は、最も基本的なレベルでコードにフックされるため、実装がほぼ不可能になったためです (ソリューションの下の小さな労力のリンクも参照してください)。
よくある質問のエントリから:
リビジョンは、相互に構築される不変のツリーです。履歴からリビジョンを削除すると、ドミノ効果が発生し、後続のすべてのリビジョンに混乱が生じ、すべての作業コピーが無効になる可能性があります。
理由
問題は、真のバージョン管理の原則に準拠していないため、当初は抹消機能が却下されたことです。
再びFAQエントリから:
リポジトリの履歴からファイルを完全に削除するにはどうすればよいですか? ファイルまたはコミットのすべての証拠を破棄したい特殊なケースがあります。(誰かが誤って機密文書をコミットした可能性があります。) これはそれほど簡単ではありません。なぜなら、Subversion は意図的に情報を失わないように設計されているからです。
でも
私は現在、より大きなチームとより大きなプロジェクトを持つ多くのクライアントのためにSVNを使用してきましたが、基本的に実際の問題はありませんでした. はい、言及された使用例は完全な機能を保証しますが、これまでのところ、これがどこに行っても何度も何度も発生する問題であるとは確信していません. もちろん、この特定の問題の性質は、一度間違えただけで、適切に元に戻すことができないということです。