« TracGanttCalendarプラグイン | Main | JavaでSCP »

2007.11.17

Subversionでコミットメッセージを必須に

 pre-commitのフックスクリプトを書くことにより、簡単にコミットメッセージを必須にすることが可能。ってことで、試してみました。

1.リポジトリのhooksフォルダ内のpre-commit.tmplファイルをpre-commitファイルとしてコピー。
2.スクリプトによるアクセスコントロールは不要(AuthzSVNAccessFileを利用)なので、commit-access-control.plを実行している行はコメントアウト。
3.grep "[a-zA-Z0-9]"の部分をgrep "."に書き換え。
4.pre-commitに対してchmod a+x pre-commitで実行権限を付与。

とりあえず、コミットメッセージを入力せずにコミットしようとした場合、

Error: Commit failed (details follow):
Error: MERGE request failed on '/svn/test'
Error: 'pre-commit' hook failed with error output:

って感じでコミットに失敗します。

【補足1】
 実行権限の付与を忘れている場合、無条件でコミットに失敗してしまうようです。

【補足2】
 grep部分は、"[a-zA-Z0-9]"だと日本語のみを入力された場合にヒットせずにエラーになってしまうような気がしたので"."に書き換えていますが・・・"[a-zA-Z0-9]"のままでも問題ないような感じでした(日本語のみのメッセージでもエラーなく通る)。う~ん??

【補足3】
 この状態だと、コミットしようとした人は何故エラーになったかわかりにくいので、エラーメッセージを出力してみることとします。標準エラー出力に対してメッセージを出力すると、それがそのままクライアントにメッセージが送られるようなので、以下のような感じのスクリプトを作成(変更点は少ないですが)。

#!/bin/sh REPOS="$1" TXN="$2"

SVNLOOK=/usr/local/bin/svnlook
line=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "." | wc -l`

if [ $line -eq 0 ];
then
  echo "Plese entry commit message!">&2
  exit 1
fi

exit 0

【補足4】
 テストしたのはCentOS5の環境。ちなみに、Ubuntu7.10でテストした場合、

Error: /usr/lib/python2.5/site-packages/trac/web/clearsilver.py:128: RuntimeWarning: Python C API version mismatch for module neo_util: This Python has API version 1013, module neo_util has version 1012.

のようなエラーが出力されてしまいました。おそらくPython C API version mismatchと同様にclearsilverをソースからビルドし直せば動作するようになるのではないかと思います・・・が、試していません(^^;

|

« TracGanttCalendarプラグイン | Main | JavaでSCP »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/17096871

Listed below are links to weblogs that reference Subversionでコミットメッセージを必須に:

» [Trac][Subversion] Subversion のコミット時にTracのticketへのリンク を必須に [Sleepless geek in Seattle]
前々からやろうと思っていたけど、pre-commit には、コミットメッセージが渡ってこないものと思ってあきらめていたが、実はちゃんととる方法があるのがわかったのでやってみた。これで、ticket からchangeset、changesetからticketを互いに参照しやすくなる。 commit時にチ... [Read More]

Tracked on 2007.12.01 at 04:13

« TracGanttCalendarプラグイン | Main | JavaでSCP »