1. ホーム
  2. svn

[解決済み] Subversionで既にコミットされたログメッセージを編集するには?

2022-03-17 18:45:52

質問

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

を見たことがあります。 Git で不正なコミットメッセージを編集するには? が、その解決策はSubversionでも同様ではないようです( svn help commit ).

解決方法は?

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

参照 この部分 Subversion FAQ (強調)。

ログメッセージは リポジトリに添付されるプロパティとして 各リビジョン デフォルトでは、ログ メッセージのプロパティ(svn:log)を変更することはできません。 コミットされると編集される . それは なぜなら、リビジョンプロパティの変更 (svn:logはその一つです)。 プロパティの以前の値は は永久に破棄され、Subversion を防止しようとします。 を使用します。しかし Subversionに以下を実行させる方法はいくつかあります。 はリビジョンプロパティを変更します。

最初の方法は、リポジトリ 管理者がリビジョン プロパティを変更することができます。これは というフックを作成することで pre-revprop-change"(このセクションを参照してください。 の詳細については、Subversion bookの を行う方法の詳細について説明します)。このとき "pre-revprop-change"フックは を、その前に古いログメッセージに そのため、何らかの方法でそれを保持することができます。 方法(例えば メール)を送信します。リビジョンプロパティ 変更を有効にすると、以下のことが可能になります。 リビジョンのログメッセージを変更するには svnに--revpropスイッチを渡す。 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 は新しい ログメッセージを表示します。もし フックがありません。 を設置したい場合(またはフックを回避したい場合)。 スクリプトを使用することもできます。 は、-bypass-hooks オプションを使用します。 ただし、このオプションを使用する場合 オプションを使用する場合は、十分な注意が必要です。もしかしたら を回避することができます。 変更通知や、バックアップ リビジョンを追跡するシステム プロパティを使用します。