Using svk with plagger

うちでは 普段実行している plagger は本家 trunk から持ってきていて、自分で作ったプラグインは svn.mizzy.org に置いてあるのですが、以下の様なプロセスで開発してました。

  1. svn.mizzy.org からチェックアウトしたディレクトリに、俺プラグインを書いて置く。
  2. plagger 本家 trunk からチェックアウトしたディレクトリに、上記ディレクトリからファイルをコピーして、俺プラグインの動作テスト。
  3. テストが問題なければ、svn.mizzy.org に俺プラグインをコミット。
  4. 本家 trunk にコミットする場合は、svn co で コミットするファイルだけを指定。

2.のコピーがめんどくさくて、svk 使えばもっとエレガントになるんじゃないかな、と以前から思っていたのですが、使い方間違えると本家 trunk に余分なファイルまでコミットしてしまいそうで、怖くて使ってなかったのですが、色々試行錯誤してみて、こんな感じでいけそうだという感触がつかめたので、ここに整理しておきます。

準備

本家 trunk のローカルミラーとローカルブランチの作成

$ svk mirror //mirror/plagger-trunk http://svn.bulknews.net/repos/plagger/trunk/plagger
$ svk sync //mirror/plagger-trunk --skipto HEAD  
$ svk cp -p //mirror/plagger-trunk //local/plagger-trunk

svn.mizzy.org のローカルミラーとローカルブランチの作成

$ svk mirror //mirror/plagger-mizzy http://svn.mizzy.org/public/plagger/trunk
$ svk sync //mirror/plagger-mizzy
$ svk cp //mirror/plagger-mizzy //local//plagger-mizzy

svk リポジトリの確認

$ svk list -R -d 1 //
local/
 plagger-mizzy/
 plagger-trunk/
mirror/
 plagger-mizzy/
 plagger-trunk/   

ローカルディレクトリにチェックアウト

$ mkdir svk                                                       [~]
$ cd svk                                                          [~]
$ svk co //local/plagger-trunk                                [~/svk]
$ svk co //local/plagger-mizzy                                [~/svk]
$ ls                                                          [~/svk]
plagger-mizzy/  plagger-trunk/

プラグインの作成や修正など

プラグインを作ったり、修正したりして plagger-mizzy ローカルブランチにコミット

$ ./tools/plugin-start.pl Filter::Hoge          [~/svk/plagger-mizzy]
... <プラグインを書く> ...
$ svk commit                                    [~/svk/plagger-mizzy]

つくったプラグインを plagger-trunk ローカルブランチとマージしてテスト

$ svk smerge -B //local/plagger-mizzy           [~/svk/plagger-trunk]
$ ./plagger -c test.yaml                        [~/svk/plagger-trunk]

プラグインに問題がなければ、plagger-mizzy ブランチの変更を svn.mizzy.org にコミット。一度 plagger-trunk とマージしてしまうと、なぜか svk push では svn.mizzy.org まで反映されなくなってしまったので、svk smerge 。

$ svk smerge //local/plagger-mizzy //mirror/plagger-mizzy

plagger 本家 trunk へのコミット

まだ試してないけど、こんな感じでできるはず。

$ svk commit files_to_commit                    [~/svk/plagger-trunk]
$ svk push -C                                   [~/svk/plagger-trunk]
$ svk push --verbatim                           [~/svk/plagger-trunk]

余計なファイルまでコミットしてしまうと迷惑をかけてしまうので、-C をつけて確認する。

UPDATE: Shibuya.pm テクニカルトーク #7の発表資料 も併せてご参照ください。