ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

Subversionのログメッセージを編集できないときに試すこと

いつ頃からかSubversionを使うようになって、ずっと使い続けています。
先日、ログメッセージに全く不要な文章を残したままコミットしてしまいました。

ログメッセージの編集ができない

ログメッセージは編集できたはずと思って、ソースコードのあるフォルダを右クリック→[TortoiseSVN]→[ログを表示]でログを表示しました。
表示されたログ上で右クリック→[ログメッセージを編集]を選びます。
ログメッセージを修正→[OK]をクリックすると、

リポジトリが、リビジョン属性を変更できるようにはなっていません。
管理者に pre-revprop-change フックを作成するよう頼んでください

と表示され、編集ができません。
ログメッセージを編集できるようにするためには、リポジトリ内にバッチファイルの追加作成が必要だったことを思い出しました。

f:id:AJYA:20160512130136j:plain
photo credit: Check Out from Subversion Server via photopin (license)

ログメッセージを編集できるようにする方法

ログメッセージを編集できるようにするには、Windows上にリポジトリを置いている場合、(リポジトリ)\hooks\pre-revprop-change.batが必要です。
このバッチファイルの内容は、以下のとおりです。

if "%5"=="M" (
  if "%4"=="svn:log" (
    exit 0
  )
)
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

このバッチファイルを作成して、再度同じ手順で編集したところ、無事正しいログメッセージに編集ができました。
このバッチファイルの内容は、以前どこかのサイトに書かれていた内容を保存していて、それが今回も利用できました。
識者の方が公開していてくれて、ありがたいです。


Windows用のTortoiseSVNを使ってリポジトリを作成しています。
最初から用意しておいてくれるか、リポジトリ作成時に選べるようにするかしてくれてもいいのではないかと、今回改めて思いました。
それだけ慎重にログメッセージを書いて間違えないようにという、提供者側の考えを反映しているのかもしれませんけど。