svkで別リポジトリの変更をマージできた

id:balibali:20080508:1210234400 で別リポジトリの変更をマージするときにpatchを使う以外に方法ないんかいな、と書いたのですが、svk であっさりできてしまいました。

実はOpenPNEの入ってるリポジトリ3つくらい常用してるのですが、バージョンアップのときに毎回困っていたのがこれで解決しそうです。

では手順。OpenPNE 2.12beta1 → 2.12beta2 の変更をマージしてみます。

まずは、OpenPNE本家の stable-2.12.x ブランチをミラーします。

$ svk mirror //mirror/openpne/2.12 https://trac.openpne.jp/svn/OpenPNE/branches/stable-2.12.x
$ svk sync //mirror/openpne/2.12

マージしたいリポジトリソースコードsvkの管理下においておきます。この辺は好みで。

$ svk mirror //mirror/replica/trunk https://svn.example.com/OpenPNE_REPLICA/trunk
$ svk sync //mirror/replica/trunk --skipto HEAD
$ svk cp -p //mirror/replica/trunk //local/replica/trunk
$ svk co //local/replica/trunk

svk log などを駆使してマージしたい変更のローカルでのリビジョンを特定します。

$ svk log //mirror/openpne/2.12
...
----------------------------------------------------------------------
r72 (orig r7114):  ogawa | 2008-05-10 00:10:48 +0900

version 2.12beta2

...
----------------------------------------------------------------------
r4 (orig r6860):  ebihara | 2008-04-30 17:42:18 +0900

2.12.x stable ブランチ作成

この例だと -r 4:72 をマージすればよいことがわかります。

あとは、svn merge と同じ感覚で svk merge でミラーから変更をマージすればおk。

$ svk merge -r 4:72 //mirror/openpne/2.12
U   setup/sql/README.txt
U   public_html/modules/admin/default.css
A   public_html/js/pne_decoration.js
U   public_html/js/tiny_mce/plugins/openpne/editor_plugin.js
...

ミラー元のリポジトリが別々でも問題なくマージできます。