SVKの使い方

ザックリした手順

depotmap

/usr/bin/svk depotmap --init

mirror

/usr/bin/svk mirror http://path/to/svn/repository //mirror/

sync

/usr/bin/svk sync //mirror/test

ローカルリポジトリを建てるのが目的でなくて、Tracのためのミラーリングが目的なので、こういう手順で使ってます。

コマンドの説明

ユーザーホームには必ず~/.svk/みたいなディレクトリができるようです。svkのワークスペースみたいなイメージ?ここでcacheとかを管理しています。

depotmap

どこをdepotとして扱うかを設定したり外したりできます。

svk depotmap hoge /var/hoge

で/va/hogeディレクトリをhogeデポットとして登録。

svk depotmap -d hoge

でhogeデポットを除外。

svk depotmap -l

でdepot一覧をみれます。

mirror

ミラーリングの設定。

svk mirror http://hoge/hoge_project /hoge/mirror

とやると、hogeデポットの下にmirrorというディレクトリを作って、ミラーリングの準備をやってくれます。
mirrorの部分は任意ですが、

/hoge

とか

/hoge/

とかはダメ。depot以下のどこかのディレクトリじゃないとダメ!
ファイルシステム上では、mirrorした段階でdepotディレクトリ(この場合は/var/hoge/mirror)にsvnファイル一式がごっそり作られます。

sync

svk sync /hoge/mirror

とやると同期してくれます。コミットログもちゃんと取れます。svn的にはログの同期なので当たり前ですが。

syncしようとしたらこんなんでた!

[foo@bar] # /usr/bin/svk sync  //mirror/test
Syncing http://path/to/svn/repository/too/too/too/too/too/too/too/long/path
Retrieving log information from 1 to 23417
Oh no, no more exceptions!  add_directory() failed. at /usr/lib/perl5/site_perl/5.8.5/SVN/Mirror/Ra.pm line 1102.

超泣きそうになりましたが、パスを浅くしたら通りました。あんまり深いとダメなんでしょうか?