19 February 2012

(Subversion) ログメッセージを書き換えたり、svnsyncの同期先にする時の制限解除

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 というフック スクリプトを作れと書いてあるが、何のことやら…。次のようなページを見つけて、その通り実行。

Changing svn author property

まず、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