最近、ファイルに情報をコミットしました。高度な機密性を持つコードはほんの数行に過ぎません。この情報をSubversionリポジトリから完全に削除する必要があります。変更を元に戻して失うことなく、どうすればいいですか?それは1つのファイルにしかありませんか?だから、そのファイルへのすべての参照を削除し、正しいものを再コミットすることは可能ですか?Subversionコミットからデータを削除しますか?
答えて
私はあなたが悪いコミットしておき、その後は、1つまたは複数のパッチ
- レコードがリポジトリ
- をダンプ持っていると思うすべてのリビジョン新しいリポジトリ
- インポートを作成しますダンプからリポジトリへの不正なコミットの前に
- 各パッチを順番に再適用する(コミットする前に数行の機密情報を削除する)
これは唯一の解決策です。 – khmarbaise
SVNにはsvndumpfilter
というコマンドがあり、リポジトリをダンプしてそこからパスを除外することができます。次に、そのダンプ・ファイルを新しいリポジトリーにロードし、そのファイルを削除します。 http://www.principia-it.co.uk/tools-n-tips/subversion/subversion-faq/7-subversion/10-how-do-i-permanently-remove-paths-from-my-repository
svnadmin dump /path/to/repos > dump.file
svndumpfilter exclude path/to/remove <dump.file> newdump.file
svnadmin load /path/to/newrepos < newdump.file
のみ溶液から
は、サーバー側でリポジトリをフィルタリングすることです。
svnadmin create /path/to/newrepos
svnadmin dump /path/to/repos --incremental | svndumpfilter excdlude path/to/remove | svnadmin load /path/to/newrepos
Subversion 1.8が出るまで待つことができますか?これは、高度に要求された廃止コマンドが実装されたときです(もちろん、Subversion 1.9または2.0に移行することを決めた場合を除きます)。
いいえ?
svnadmin dump
を実行してフィルタを適用し、svndumpfilter
を使用して変更を削除し、svnadmin load
を使用してリポジトリをリロードしてください。これは単一のパイプラインで行うことができますが、リポジトリサイズによっては数時間停止する可能性があります。
私はこれを何回もやりました。開発者がそれを使用しているときにリポジトリを停止できないため、午前2時にそれを実行する必要があるときは、特に楽しいことではありません。
誰かがここで終わり、興奮してしまうような場合でも、1.8.11にはまだ消え去っていることに気付く価値があります。 :) – dannysauer
rootのパスワードですか?リポジトリを制御していますか? –
可能な複製[SVN Obliterate!](http://stackoverflow.com/questions/560684/svn-obliterate) –
Yip、ルートパスワード。 *一口* – coderama