« Apache&Tomcatで連携時のRemoteIPアドレス | Main | 起動後に外部Jarファイル内のクラスを利用 »

2007.06.07

svndumpfilter

 Subversionリポジトリをダンプする際、特定のパスのみを抽出したり、逆に特定のパスのみを除外するためのツールとして、svndumpfilterってのがあります。詳細はリポジトリの保守多分原文)にまとめられています。

 あるフォルダを除外する場合は、

svnadmin dump Hoge | svndumpfilter exclude /fuga > Hoge_ExcludeFuga.dat

逆にあるフォルダのみを抽出する場合は、
svnadmin dump Hoge | svndumpfilter include /fuga > Hoge_IncludeFuga.dat

って感じで実行することとなります。

 複数のパスをまとめて処理する場合は

svndumpfilter exclude /fuga /foo /bar

のような感じで複数指定することも可能。既にDump済みのファイルを処理する場合、Windowsでは
type Hoge.dat | svndumpfilter

って感じでtypeコマンドとパイプで連結すればOK。

 指定したパスは基本的に"Prefix"として扱われるため、指定した文字列で始まるパスが処理対象となるようです(なので、/fugaと指定した場合、/fuga2とか/fuga3とかも処理対象となります)。

 オプションとして、--drop-empty-revs--renumber-revs--preserve-revpropsの3つがありますが、多くの場合は--drop-empty-revsと--renumber-revsを指定して扱うことになるのではないかと思います(--renumber-revsを指定せずに--drop-empty-revsだけを指定する(→リビジョンが飛んだ状態のダンプファイルができあがる)とどんな動きになるんでしょ?)。

 なお、「コピーされたパスは問題を起こすかも知れません。」と記載されていますが、例えば、

/hoge/hogehoge.txtファイルを/fuga/hogehoge.txtに移動した

リポジトリにおいて、/hogeをexclude指定した場合、エラーが発生してしまいます。なので、こういう状態のリポジトリにおいては、/hogeを「存在しなかった」ことにするのは無理?(もちろん、hogehoge.txtが不要なのであれば、これもexcludeに指定すればいいわけですが)

|

« Apache&Tomcatで連携時のRemoteIPアドレス | Main | 起動後に外部Jarファイル内のクラスを利用 »

Subversion・Trac・etc.」カテゴリの記事

Comments

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference svndumpfilter:

» Sunbversionで無かったことにする [firegoby]
このサイト上で公開しているTracにテストでPHPのマニュアルをコミットしたら、ファイル数がとても多くて(9千件以上!!)、タイムラインやリポジトリブラウザの表示の際に異常にCPU負... [Read More]

Tracked on 2009.07.28 06:04

« Apache&Tomcatで連携時のRemoteIPアドレス | Main | 起動後に外部Jarファイル内のクラスを利用 »