豚吐露@wiki
CheckIn時のコメントフォーマットを強制する
最終更新:
ohden
-
view
環境
Ubuntu 8.10
SubVersion 1.6.6
Ubuntu 8.10
SubVersion 1.6.6
『CheckIn時のコメントを必須にしたい』の続き。
svnのフックスクリプトを利用してCheckIn時のコメントフォーマットを強制してしまおうという試み。
相変わらずperlもrubyも使えないので、シェルスクリプトで...orz
相変わらずperlもrubyも使えないので、シェルスクリプトで...orz
コメント必須化したときはコメントの文字列数だけcheckしとったけど、今回はコメント文字列を判定する。
e.g.)pre-commit
#!/bin/sh
#repositoryのpath
REPOS="$1"
#transaction名
TXN="$2"
#svnlookを使ってCheckIn時のcommentを取得
SVNLOOK=/usr/bin/svnlook
COMMENT=`${SVNLOOK} log -t "${TXN}" "${REPOS}"`
#comment文字数取得
WC=${#COMMENT}
#commentの入力が無い場合
if [ ${WC} -eq 0 ]; then
echo "[Comment NG] Comment is required." >& 2
exit 1
fi
# refs, fixesの書式に則ってるかcheck
if ${SVNLOOK} log -t "${TXN}" "${REPOS}" | grep "^fixes [0-9]\{4\}\(,[0-9]\{4\}\)*:" > /dev/null; then
#fixesの書式に則っている場合
echo "[Comment OK] CheckIn comment[fixes] OK!" >& 2
elif ${SVNLOOK} log -t "${TXN}" "${REPOS}" | grep "^refs [0-9]\{4\}\(,[0-9]\{4\}\)*:" > /dev/null; then
#refsの書式に則っている場合
echo "[Comment OK] CheckIn comment[refs] OK!" >& 2
else
echo "[Comment NG] Invalid format." >& 2
exit 2
fi
#CheckInを許可
exit 0
増えたのはコメント文字列数判定の後ろのところ。
ポイントは
① grep "^fixes [0-9]\{4\}\(,[0-9]\{4\}\)*:"
と
② grep "^refs [0-9]\{4\}\(,[0-9]\{4\}\)*:"
んトコで、コメント文字列に対してgrepを実行し、意図したフォーマットになってるかcheckしとる。
ポイントは
① grep "^fixes [0-9]\{4\}\(,[0-9]\{4\}\)*:"
と
② grep "^refs [0-9]\{4\}\(,[0-9]\{4\}\)*:"
んトコで、コメント文字列に対してgrepを実行し、意図したフォーマットになってるかcheckしとる。
正規表現分かる人には説明不要と思いますが...一応。
①は、コメント先頭が『fixes 』で始まり『4桁の数字』があり『:』があること。また、『4桁の数字』と『:』の間には『,4桁の数字』が0回以上連続して存在している文字列であること。を表してます。
②は①とほぼ一緒で『fixes 』の部分が『refs 』に変わってるだけ。
①は、コメント先頭が『fixes 』で始まり『4桁の数字』があり『:』があること。また、『4桁の数字』と『:』の間には『,4桁の数字』が0回以上連続して存在している文字列であること。を表してます。
②は①とほぼ一緒で『fixes 』の部分が『refs 』に変わってるだけ。
コレ、一応redmineとの連携見越して書いてみました。
まぁ、自分で任意のフォーマットを強制したかったら少し正規表現勉強せんといけんじゃろうね。(*^ω^)
更新日: 2019年08月08日 (木) 08時32分10秒









