« ローマ数字に変換する | メイン | ハッシュに要素を追加する »

カテゴリー:svn_propset 

実行可能な属性をファイルに付加する(svn:executable)

このエントリーを含むはてなブックマーク  livedoorクリップ  実行可能な属性をファイルに付加する(svn:executable)をdel.icio.usに追加  実行可能な属性をファイルに付加する(svn:executable)をYahoo!ブックマークに追加  実行可能な属性をファイルに付加する(svn:executable)をニフティクリップに追加

Subversionで、ファイルに実行可能な属性を付加したい。
複数のOS間で運用しているといつの間にか設定したパーミションが外れてしまう問題を解決したい。これはSubversionで属性の設定を行えばよい。

Subversion自体に、このファイルは「実行可能なファイル」であると記憶させてやれば解決する。Windows上では別段変化はないが、Linuxなどでcheckoutするとパーミションが設定された状態でファイルがセットされる。

$ ls
receive.cgi settag.cgi
$ svn propset svn:executable ON settag.cgi
property 'svn:executable' set on 'settag.cgi'

「settag.cgi」の部分は指定したいファイル名(パス)を入力する。後はこの状態でcommitすれば作業終了だ。どうも信じられないというならcommit後、適当なディレクトリでcheckoutし「ls -l」などとしてみれば本当に変わったかどうかを確認できる。


もちろん、複数ファイルを指定してもよい。

$ ls
receive.cgi settag.cgi
$ svn propset svn:executable ON *.cgi
property 'svn:executable' set on 'settag.cgi'
property 'svn:executable' set on 'receive.cgi'

なお、現在のところ属性値の「ON」に特に意味はない。値の内容に関わらずファイルに「svn:executable」が付加されていればSubversionは実行可能なファイルとして認識してくれる。


○関連
Subversionはパーミションを保存しているのでしょうか?
http://q.hatena.ne.jp/1170750039

特殊な属性
http://subversion.bluegate.org/doc/book.html#svn.advanced.props.special.executable

svn:executable 属性は半自動的なやり方でバージョン管理されているファイルのファイルシステム上の実行権限を制御するのに使われます。この属性は属性値を何も定義しません—単に属性名が存在していれば、Subversionによって実行ビットが保存されます。この属性を削除すると、実行ビットの全制御はオペレーティングシステムに戻されます。
たくさんのオペレーティングシステム上で、コマンドとしてファイルを実行できるかどうかは実行ビットの存在によって支配されています。このビットは普通、デフォルトでは無効となっていて、必要に応じてユーザが明示的に有効にしてやる必要があります。作業コピー中では、新しいファイルが常に作られ、その一方で、更新処理を通じて存在しているファイルの新しいバージョンを受け取ります。これは、あるファイルの実行ビットを有効にしてから作業コピーを更新した場合、もし更新処理の一貫としてそのファイルが変更されたときにその実行ビットは無効になってしまう可能性があるということです。そこでSubversionは svn:executable 属性を、実行ビットを有効にし続けるために用意しています。
この属性はFAT32やNTFSのように実行権限ビットの概念を持たないファイルシステム上では何の効果もありません。また、それは定義された値を持ちませんが、Subversionはこの属性が設定されると、強制的にその値を*とします。最後に、この属性はファイルに対してのみ有効で、ディレクトリに対しては意味を持ちません。




トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/596

この一覧は、次のエントリーを参照しています: 実行可能な属性をファイルに付加する(svn:executable):

» [linux]なんでもsvnで管理する from もぎゃろぐ
サーバをさわるときは、常に信用できない人間が約一名(自分だ!)いるので、どんな... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)






クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.