Subversion で既にコミットされたログメッセージを編集するにはどうすればいいですか? 質問する

Subversion で既にコミットされたログメッセージを編集するにはどうすればいいですか? 質問する

Subversion で特定のリビジョンのログメッセージを編集する方法はありますか? コミットメッセージに誤って間違ったファイル名を入力してしまったため、後で混乱する可能性があります。

私は見たGit で誤ったコミットメッセージを編集するにはどうすればよいですか?ですが、その質問に対する解決策は Subversion の場合と同じではないようです ( によるとsvn help commit)。

ベストアンサー1

基本的に、これを行うには、リポジトリに対する管理者権限 (直接的または間接的) を持っている必要があります。すべてのユーザーがこれを行うことができるようにリポジトリを構成するか、サーバー上で直接ログ メッセージを変更することができます。

見るこの部分Subversion に関するよくある質問(強調は筆者による):

ログ メッセージは、各リビジョンに添付されたプロパティとしてリポジトリに保存されます。デフォルトでは、ログ メッセージのプロパティ (svn:log) はコミットされると編集できません。これは、リビジョン プロパティ (svn:log もその 1 つ) を変更すると、プロパティの以前の値が永久に破棄されるためで、Subversion はユーザーが誤って変更するのを防止しようとします。ただし、Subversion でリビジョン プロパティを変更する方法はいくつかあります。

最初の方法は、リポジトリ管理者がリビジョン プロパティの変更を有効にすることです。これは、「pre-revprop-change」というフックを作成することで行われます (これを行う方法の詳細については、Subversion ブックのこのセクションを参照してください)。「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 オプションを使用することもできます。ただし、このオプションを使用する場合は、十分に注意してください。変更の電子メール通知や、リビジョン プロパティを追跡するバックアップ システムなどをバイパスする可能性があります。

おすすめ記事