subversionのhookを作ったときのメモ
◆hookとは
コミット、ロックといったユーザ操作にあわせて
構文チェック・メール送信など作ったスクリプトを実行できる機能
◆hookの種類(よく使うものだけ)
post-commit…コミット後実行する。
pre-commit…コミットトランザクションの直前に実行する。
参考URL
http://www.caldron.jp/~nabetaro/svn/svnbook-1.4-final/svn.ref.reposhooks.post-commit.html
http://www.caldron.jp/~nabetaro/svn/svnbook-1.4-final/svn.ref.reposhooks.pre-commit.html
※今回はpre-commitを作ったので以下はpre-commit用のメモ
◆パラメータで渡ってくる値
#リポジトリ(ex:/repos/xxxxx/) REPOS=$1 #トランザクション番号 TXN=$2
※トランザクション番号はsvnlookコマンドで利用できる
※ex:svnlook changed -t $TXN $REPOS
◆チェックをしてエラーを返したいとき
#error if [ 1 -eq "$error" ]; then echo "commit error!!">&2 exit 1 fi #success exit 0
※exit 1で1を返すとエラー
※エラーメッセージを出力したいときは>&2をつける(標準エラー出力)
◆コミットされたファイルを一つずつチェックしたいとき
ret="$(svnlook changed -t "$TXN" "$REPOS")" for line in $ret do #ココが綺麗じゃないけど・・ if [ 0 -ne `expr $i % 2` ]; then #php -lなどでソースチェック fi i=`expr $i + 1` done
※ファイル一個ずつなので大量にコミットするときは待ち時間が長くなりそう
◆その他
svnlook changedの結果
A xxxxx/index.php
D xxxxx/index2.php
Comment
コメントする