おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

subversionによる属性設定の方法

いつものようにメモ。

属性とは

subversionがファイルに付けるメタ情報。

  • 自由に名前と値を設定できていろいろ使えるらしい。(あんまりよくわかってない)
  • subversionが標準で提供している属性(svn:~)があり、通常はこちらを使っていろいろ設定する。
  • 属性もバージョン管理の対象となり、属性の変更を修正したりコミットしたり取り消したりできるらしい。(一部バージョン化されない属性もあるらしい)

設定の仕方

svn propget 属性名前 ファイル名
属性値を得る
svn propset 属性名前 属性値 ファイル名
属性を設定する
svn propedit 属性名前 ファイル名
エディタを使って属性を追加したり修正できる。EDITORに値を入れておく必要がある。
svn proplist パス名
パス上に存在する属性の名前の一覧を表示する。-vをつけると値もみれる
svn propdel 属性名前 ファイル名
属性を消す

よく使う属性

よく使うだろう2つについて調べてみた。

svn:externals

外部定義を設定する属性。

外部定義とは

一つの作業コピー中に、複数リポジトリからcheckoutしたファイルを含める方法。

外部定義をしなくても複数リポジトリからcheckoutしたファイルを扱えるけど、その場合はそれぞれのリポジトリごとのcheckout作業が必要になるので面倒。外部定義を行う事で、メインのリポジトリのcheckoutのみを行うだけでよくなる。

やり方
svn propset svn:externals "プロパティを設定するパスからの相対パス リポジトリの場所" プロパティを設定するパス
おまけ

Railsプラグインをインストールするときに、ついでに外部定義もしたい場合はxオプションを付けると自動で外部定義も設定してくれます。

script/plugin -x install hoge

svn:ignore

svn statusをすると、バージョン管理化にないファイルは通常

? hoge.txt
? fuga.txt

のように?付きで表示されてしまいます。バージョン管理下にないファイルがたくさんあると邪魔ですね。この表示を消したい場合に設定する属性がsvn:ignoreです。

やり方
svn propset svn:ignore 値 パス

値にはファイルのパターンを入れます。例えば"*.txt"とか。

svn:ignore属性のついたファイルを見たい場合

下記のようにすると、svn:ignore属性のついたファイルも見る事が出来ます

svn status --no-ignore