[Subversion] svn:externals で外部リポジトリを取り込む
バシャログでも総選挙とかやってみたい!どうもこんにちは nakamura です。
今日は Subversion のお話です。Subversion はプロパティを使うことで色々気の利いた事ができたりするのですが、svn:externals というプロパティを使うとリポジトリの中に別のリポジトリを取り込むことができます。
例えば自社開発のライブラリなどはライブラリ用のリポジトリにコミットしておいて、各プロジェクトのリポジトリでは svn:externals を使って使用するライブラリを取り込む。そうするとライブラリにバグフィックスを施した際など、一箇所にコミットするだけで済むので管理がとても楽になりますね。
svn コマンドで使う
一例として mediawiki のエクステンションを svn:externals を使って導入する際の手順をご紹介します。
mediawiki の extensions ディレクトリに移動。
cd /var/www/htdocs/mediawiki/extensions
svn propset で svn:externals プロパティをセットします。今回は SyntaxHighlight_GeSHi というエクステンションを引っ張ってきます。
svn propset svn:externals "SyntaxHighlight_GeSHi http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi/" .
引数がよく分からないと思うので解説すると、こんな感じです。
svn propset svn:externals "{作成されるディレクトリ名} {取り込むリポジトリ}" {プロパティをセットする場所}
上記はプロパティをセットするだけなので、svn up で作業コピーを更新します。
svn up .
TortoiseSVN で使う
もちろん TortoiseSVN でも設定することができます。extension ディレクトリを右クリック、TortoiseSVN の『属性』をクリックします。
属性一覧の画面になるので右下の『新規』をクリック。
属性名に svn:externals を選択、属性値に以下のように入力します。svn コマンドと同じく作成されるディレクトリ名と取り込むリポジトリの URL のスペース区切りです。
以上の設定をした上で extensions ディレクトリに更新をかければ外部リポジトリを取り込むことができます。
僕も最近知った機能なのですが、よく使うライブラリやプラグインなどこの方法で管理しておくと楽だなぁと思います。
終わりに
どうにも最近更新が滞りがちですいません。メンバーみんなちゃんと会社には来ているのでご安心ください!