2011-12-27 18 views
0

最近、ファイルに情報をコミットしました。高度な機密性を持つコードはほんの数行に過ぎません。この情報をSubversionリポジトリから完全に削除する必要があります。変更を元に戻して失うことなく、どうすればいいですか?それは1つのファイルにしかありませんか?だから、そのファイルへのすべての参照を削除し、正しいものを再コミットすることは可能ですか?Subversionコミットからデータを削除しますか?

+0

rootのパスワードですか?リポジトリを制御していますか? –

+0

可能な複製[SVN Obliterate!](http://stackoverflow.com/questions/560684/svn-obliterate) –

+0

Yip、ルートパスワード。 *一口* – coderama

答えて

1

私はあなたが悪いコミットしておき、その後は、1つまたは複数のパッチ

  • としてコミットへ

    • レコードがリポジトリ
    • をダンプ持っていると思うすべてのリビジョン新しいリポジトリ
    • インポートを作成しますダンプからリポジトリへの不正なコミットの前に
    • 各パッチを順番に再適用する(コミットする前に数行の機密情報を削除する)
  • +0

    これは唯一の解決策です。 – khmarbaise

    1

    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 
    
    0

    のみ溶液から

    は、サーバー側でリポジトリをフィルタリングすることです。

    svnadmin create /path/to/newrepos 
    
    svnadmin dump /path/to/repos --incremental | svndumpfilter excdlude path/to/remove | svnadmin load /path/to/newrepos 
    
    0

    Subversion 1.8が出るまで待つことができますか?これは、高度に要求された廃止コマンドが実装されたときです(もちろん、Subversion 1.9または2.0に移行することを決めた場合を除きます)。

    いいえ?

    svnadmin dumpを実行してフィルタを適用し、svndumpfilterを使用して変更を削除し、svnadmin loadを使用してリポジトリをリロードしてください。これは単一のパイプラインで行うことができますが、リポジトリサイズによっては数時間停止する可能性があります。

    私はこれを何回もやりました。開発者がそれを使用しているときにリポジトリを停止できないため、午前2時にそれを実行する必要があるときは、特に楽しいことではありません。

    +0

    誰かがここで終わり、興奮してしまうような場合でも、1.8.11にはまだ消え去っていることに気付く価値があります。 :) – dannysauer

    関連する問題