SVNのコミットログを編集可能にする
という依頼がありました。
確認したところ、カメさんSVNにて「ログメッセージを編集」を行うと、以下のようなエラーが表示される。
「『pre-revprop-change』フックが機能不全」とのことなので、リポジトリのhooksを確認すると、「pre-revprop-change.tmpl 」なるものが。
-rw-r--r-- 1 apache apache 1977 2月 14 12:47 2013 post-commit.tmpl -rw-r--r-- 1 apache apache 1638 2月 14 12:47 2013 post-lock.tmpl -rw-r--r-- 1 apache apache 2289 2月 14 12:47 2013 post-revprop-change.tmpl -rw-r--r-- 1 apache apache 1567 2月 14 12:47 2013 post-unlock.tmpl -rw-r--r-- 1 apache apache 3426 2月 14 12:47 2013 pre-commit.tmpl -rw-r--r-- 1 apache apache 2410 2月 14 12:47 2013 pre-lock.tmpl -rw-r--r-- 1 apache apache 2786 2月 14 12:47 2013 pre-revprop-change.tmpl -rw-r--r-- 1 apache apache 2100 2月 14 12:47 2013 pre-unlock.tmpl -rw-r--r-- 1 apache apache 2780 2月 14 12:47 2013 start-commit.tmpl
中身を読む。
# The pre-revprop-change hook is invoked before a revision property # is added, modified or deleted. Subversion runs this hook by invoking # a program (script, executable, binary, etc.) named 'pre-revprop-change' # (for which this file is a template), with the following ordered # arguments: # # [1] REPOS-PATH (the path to this repository) # [2] REVISION (the revision being tweaked) # [3] USER (the username of the person tweaking the property) # [4] PROPNAME (the property being set on the revision) # [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted) # # [STDIN] PROPVAL ** the new property value is passed via STDIN.
- リビジョンプロパティがいじられる直前に実行されますよ
- 実行する際の引数はこうですよ
- これはテンプレートだから、実際には「pre-revprop-change」という名前でおいてね
たぶんこんな感じか。
下の方にサンプル実装がありました。
REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5" if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi echo "Changing revision properties other than svn:log is prohibited" >&2 exit 1
「svn:log」プロパティが「編集(M)」されたときだけリビジョンプロパティの変更処理を続行して、
それ以外は処理を続行しないようになっていますね。
はて・・・・
「リビジョンプロパティ」とはいうものの、それに該当するものは何であろうか。
「svn:ignore」とか出来なくなったら困りますな。。。
で、見つけたのが Subversion: Revision properties
カメさんSVNでリビジョンを選択し、「リビジョンプロパティを表示」としてみたところ、
しか表示されないので、上に書いた懸念は問題ないでしょう。
ということで、
「pre-revprop-change.tmpl」を「pre-revprop-change」にリネームして、chmod +x して、
試したところ、コミットログを編集できました。
ばんざい。