[Subversion]svndumpfilterで、肥大化したレポジトリをダイエットさせる方法
Subversionのダンプ&リストアのおさらい
下記のようにダンプ&リストアすると、レポジトリを複製することができます。svnadmin dump /path/to/myrepo > myrepo.dump
svnadmin create /path/to/myrepo_new
svnadmin load /path/to/myrepo_new < myrepo.dumpここで、loadする前にsvndumpfilterをかましてやると、ダイエットすることができます。
何を捨てるかを決める
レポジトリ内をよく吟味して、何を捨てるかを決めます。例として、下記パス以下のデータを全て捨てたいとします。
/trunk/large/files/
/document/古い資料/svndumpfilter はパイプとして機能する
svndumpfilterは、Linuxのgrepコマンドに似た働きをします。一番わかりやすい使い方は、ダンプファイルにフィルタをかまして新ダンプファイルをつくることです。
svndumpfilter exclude /trunk/large/files/ /document/古い資料/  < myrepo.dump > myrepo_new.dumpダイエットされたダンプファイルができますので、これをリストアします。
svnadmin load /path/to/myrepo_new < myrepo_new.dump確認&入れ替え
新レポジトリにsvnクライアントで接続して、svn logでログなどを見て、問題ないか確認します。問題なければ、新旧のレポジトリをリネームしましょう。
mv /path/to/myrepo /path/to/myrepo_old
mv /path/to/myrepo_new /path/to/myrepocp /path/to/myrepo_old/hooks/* /path/to/myrepo/hooks/追記
除外したいファイルが大量にある場合は、ダンプで一時ファイルをつかわない方がよいです。その場合は下記記事をご覧ください。
[Subversion]巨大なリポジトリから多数の不要ファイルを恒久的に削除する方法
参考
[Subversion]レポジトリ内で容量をくってるリビジョンを突き止める方法
      カテゴリ:
      
      Subversion
      
      sysadmin