« 黒パネルフレームワーク×2 | トップページ | RubyCocoa 今日のコミット(2007.05.21) »

2007.05.14

svk view で svn:externals に対応(まだ実用的ではない、と思う)

BridgeSupport が RubyCocoa プロジェクトから独立した。で subversion リポジトリでは svn:externals で BridgeSupport を取得するようになった。そこで、svk pull しても svn:externals のコードが取得されないことに気づいた。(ていうか、ふじもとさんに「チェックアウトできないっすよ!」とリフジンな文句つけた。スミマセン)

どうやら svk では svn:externals を解釈してローカルリポジトリには取得してくれないようで、苦労している人が多いみたいで、実装を詳しく提案している人もいる。

まだベータ機能ながら、svk 2.0 で導入された svk view で解決できるらしいと書かれている。なんだこれ?面白そうじゃん、ということでトライ。(今回利用したバージョンは svk 2.0.1)

svk view は svk:view:(ビューの名前) というプロパティを作成することで、仮想的なリポジトリを構成することができる機能だ。RDB でいうところの VIEW、というよりもリポジトリの unionfs と考えたほうがとらえやすいかな。

まず、手元の svk リポジトリはこうなっている。

 % svk ls //local
 bridgesupport/
 rubycocoa/
 % svk info //mirror/bridgesupport
 Depot Path: //mirror/bridgesupport
 Revision: 45
 Last Changed Rev.: 39
 Mirrored From: http://svn.macosforge.org/repository/bridgesupport/trunk, Rev. 9
 % svk info //mirror/rubycocoa
 Depot Path: //mirror/rubycocoa
 Revision: 45
 Last Changed Rev.: 36
 Mirrored From: https://rubycocoa.svn.sourceforge.net/svnroot/rubycocoa/trunk, Rev. 1727

で、現在設定されている svn:externals は次のとおり。

 % svn propget svn:externals https://rubycocoa.svn.sourceforge.net/svnroot/rubycocoa/trunk/src/misc
 bridgesupport http://svn.macosforge.org/repository/bridgesupport/trunk

これと同じような svk のビューを作成したいわけ。svk help view にあるように、

  • &: で取得するリポジトリのルートを指定
  • -* でルートディレクトリにファイルを除外

ができることがわかる。

今回設定した内容は次のとおり。

 % svk propget svk:view:rbcocoa //local
 &:/local
 -*
 . rubycocoa/src
 misc/bridgesupport bridgesupport

これで

 % svk co //^local/rbcocoa rubycocoa

とチェックアウトして、意図したとおり misc/bridgesupport に BridgeSupport のコードが含まれいることを確認した。

だけれども、svk pull で変更をとってくることができない。ルートがミラーされてるディレクトりじゃないからかと考えて、もうひとつビューを作成。

 % svk propget svk:view:src-merged //local/rubycocoa
 &:/local/rubycocoa
 -*
 . src
 misc/bridgesupport //local/bridgesupport

これもだめ。単一のディレクトリを指してもダメだったので、現状では pull 自体が効かない感じ。merge はできるけど、sync が行われない。

結局、それぞれリポジトリをチェックアウトしてシンボリックリンクをはるという対処が今のところよさそう。多くの状況では、svn:externals により取り込みしたコードはいじらないのだからそれで十分か。

|

« 黒パネルフレームワーク×2 | トップページ | RubyCocoa 今日のコミット(2007.05.21) »