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 ...
ミラー元のリポジトリが別々でも問題なくマージできます。