基本的に、これを行うには、リポジトリへの(直接または間接的に)管理者権限が必要です。すべてのユーザーがこれを実行できるようにリポジトリを構成するか、サーバーでログメッセージを直接変更できます。
ログメッセージは、各リビジョンに添付されたプロパティとしてリポジトリに保持されます。デフォルトでは、ログメッセージプロパティ(svn:log)は、いったんコミットされると編集できません。これは、リビジョンプロパティ(svn:logが1)の変更により、プロパティの以前の値が永久に破棄され、Subversionが誤ってこれを行わないようにするためです。ただし、Subversionでリビジョンプロパティを変更するには、いくつかの方法があります。
最初の方法は、リポジトリ管理者がリビジョンプロパティの変更を有効にすることです。これは、「pre-revprop-change」と呼ばれるフックを作成することによって行われます(これを行う方法の詳細については、Subversion bookのこのセクションを参照してください)。「pre-revprop-change」フックは、変更される前の古いログメッセージにアクセスできるため、何らかの方法で(たとえば、電子メールを送信することによって)保存することができます。リビジョンプロパティの変更が有効になったら、次のいずれかのように、-revpropスイッチをsvn propeditまたはsvn propsetに渡すことで、リビジョンのログメッセージを変更できます。
$svn propedit -r N --revprop svn:log URL
$svn propset -r N --revprop svn:log "new log message" URL
ここで、Nはログメッセージを変更するリビジョン番号、URLはリポジトリの場所です。このコマンドを作業コピー内から実行する場合は、URLを省略できます。
ログメッセージを変更する2番目の方法は、svnadmin setlogを使用することです。
これは、ファイルシステム上のリポジトリの場所を参照して行う必要があります。このコマンドを使用してリモートリポジトリを変更することはできません。
$ svnadmin setlog REPOS_PATH -r N FILE
ここで、REPOS_PATHはリポジトリの場所、Nは変更するログメッセージのリビジョン番号、FILEは新しいログメッセージを含むファイルです。「pre-revprop-change」フックが設定されていない場合(または、何らかの理由でフックスクリプトをバイパスしたい場合)、-bypass-hooksオプションを使用することもできます。ただし、このオプションを使用する場合は、十分に注意してください。変更の電子メール通知や、リビジョンプロパティを追跡するバックアップシステムなどをバイパスしている場合があります。