仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

SVNをLinuxで操作する用意の前準備の予行

cd /var/lib/svn/project
mkdir checkout && cd checkout
su apache -c " svn co http://svn.example.com/project/trunk "
cd trunk
find . -type f -name '*.php' -print0 | xargs -0 perl -i -pe "s/\r\n/\n/"
find . -type f -name '*.php' -print0 | xargs -0 svn propset svn:eol-style native
find . -type f -name '*.php' -print0 | xargs -0 svn propset svn:keywords "Id Rev Date"
find . -type f -name '*.php' -print0 | xargs -0 svn propset svn:mime-type text/x-php
svn commit -m "Propset for php script files."

apacheユーザでチェックアウトしたいけど、/sbin/nologinにしているのでけられる。

This account is currently not available.

正しい対応方法が分からないので、/etc/passwdを書き換えて対応……。

SVNのコミットでステージングとデータを同期……

SVNが稼働するサーバでレポジトリをアップデートしてrsyncするシェルスクリプトを用意。
コミットはApache経由なのでApacheから実行できるよう権限を変更。
↑のスクリプトのリンクでHookスクリプトのpost-commitを作成。

cd /var/lib/svn/bin
vi svnrsync.sh
chmod u+rwx,go-w,go+rx svnrsync.sh
cd /var/lib/svn/project/hooks
ln -s /var/lib/svn/bin/svnrsync.sh post-commit