2013/07/30

svn パーミッション 改行コード

windowsで開発、サーバーはlinuxのせいで、
SVNにcommit、checkOutして、パーミッション、改行コードが乱れ、
実行エラーになる。

$ ./test.pl
-bash: ./test.pl: Permission denied

-bash: ./test.pl: /bin/bash^M: bad interpreter: No such file or directory



★svn:executable
ファイルに対してこの属性名が設定されていると、OSが対応していれば実行ビットが有効になる。
属性値は無い。
★svn:eol-style=native
Checkoutする際に、ファイルに含まれる改行コードをCheckout先のOSに応じて変換する。
つまり、Windowsの場合は CRLF に変換され、UNIX系OSの場合は LF に変換されます。
逆にaddやcommitなどのコマンドでリポジトリにファイルを格納するときには、 オペレーティングシステムにはよらず、正規化された改行コード(LF)に変換されてリポジトリに格納されます。

svn ps svn:executable '' test.pl ←svn:executableの設定
svn ps svn:eol-style 'native' test.pl ←svn:eol-style=nativeの設定
svn commit 

OSが混在する環境でSubversionを使用している場合は、
・実行ビットが必要なファイルには、svn:executable 属性を設定。(svn:executable *)
・テキストファイルには、svn:eol-style 属性に native という値を設定