2007年8月17日金曜日

Subversionでコミット完了後に自動で処理を行う (post-commit) b

人に教えようとしたら自分がはまったのでメモ

Subversion(cvsもそうだったが)では、処理の各所で自動で割り込み処理を行わせることができる。

各リポジトリの下にhooksというディレクトリがあり、その中に以下のスクリプトが置かれている。
post-commit
post-lock
post-revprop-change
post-unlock
pre-commit
pre-lock
pre-revprop-change
pre-unlock
これらはその名前のとおりの場所でフックを行い、中に書かれたスクリプトが実行される。

コミット直後ならばpost-commit内に処理したい内容を記述すればよい。
なおこれらのスクリプトは最初post-commit.tmplとかなっているので、post-commitのようにリネームする。
スクリプトなので実行権限(svnの)を与えることを忘れずに。

中に書くスクリプトの注意点
・これはsvnユーザで実行される
・コマンド実行するときは実行権限,書き込み権限などを考えること
・ついでにパスも注意(パス通ってなくエラーとか)


:Webページなどの編集でコミット後に/var/www/htmlにアップロード
/usr/local/bin/svn update /var/www/html >> /tmp/hoge.log 2>&1

・svn update先には最初にcheckout忘れずに
・リポジトリに日本語名はいってると、svn updateでファイル名が変換できませんとエラーになったり
・一応ログにはかせよう

0 件のコメント: