豚吐露@wiki

CheckIn時のコメントフォーマットを強制する

最終更新:

ohden

- view
管理者のみ編集可

環境
Ubuntu 8.10
SubVersion 1.6.6


svnのフックスクリプトを利用してCheckIn時のコメントフォーマットを強制してしまおうという試み。
相変わらず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しとる。

正規表現分かる人には説明不要と思いますが...一応。
①は、コメント先頭が『fixes 』で始まり『4桁の数字』があり『:』があること。また、『4桁の数字』と『:』の間には『,4桁の数字』が0回以上連続して存在している文字列であること。を表してます。
②は①とほぼ一緒で『fixes 』の部分が『refs 』に変わってるだけ。

コレ、一応redmineとの連携見越して書いてみました。

まぁ、自分で任意のフォーマットを強制したかったら少し正規表現勉強せんといけんじゃろうね。(*^ω^)



更新日: 2019年08月08日 (木) 08時32分10秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
目安箱バナー