Subversionリポジトリのログメッセージに「不適切」な内容が含まれていたので、書き換えようとしたり、svnsyncの同期先にするためにリポジトリの属性を書き換えようとすると…
# svn propedit -r 5 --revprop svn:log
svn: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
# svnsync init https://example.com/svn/HOGEHOGE/ https://example2.com/svn/HOGEHOGE2
svnsync: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
というエラーメッセージが出力される。pre-revprop-change というフック スクリプトを作れと書いてあるが、何のことやら…。次のようなページを見つけて、その通り実行。
まず、Subversionが稼動しているサーバに(sshなどで)ログオンして、リポジトリのあるフォルダへ。
# cd ~/var/svn/HOGEHOGE_REPO/hooks/
# cp pre-revprop-change.tmpl pre-revprop-change
# chmod +x pre-revprop-change
最後の実行権限を与えるのを忘れると、”svn: Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.” というエラーメッセージが表示されるので、忘れないように…
svnsyncでたくさんの属性を書き換えるような場合は、pre-revprop-change を編集して、スクリプトが無理やり 0 を返すようにしてしまえばよい
pre-revprop-change
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
exit 0 ← この行を追加
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1