概要

コミットログの誤字脱字などを修正します。上書きされてしまうので十分注意して実行してください。

変更方法

以下に、svnadmin setlog、またはsvn propsetを使ってログを修正する方法をメモしています。

svnadmin setlog

管理者としてsvnadmin setlogを使用し、コミットログの誤字脱字などを修正します。以下に例を載せていますが、実行する前に、Repository Cleanupや、svnadmin setlogなどをよく読んで、注意深く実行してください。

  1. 修正するリビジョンを確認し、そのコミットログをバックアップしておきます。
    c:\tmp> svn log file://localhost/c:/svn/hoge -r 24
    ------------------------------------------------------------------------
    r24 | terai | 2004-02-17 16:08:26 +0900 (Tue, 17 Feb 2004) | 1 lines
    誤字が修正
    ------------------------------------------------------------------------
    c:\tmp> svn log file://localhost/c:/svn/hoge -r 1:HEAD > log.txt
  2. 新しいログファイルを作成し、コミットログを上書きします。
    c:\tmp> echo 誤字を修正 > c:\tmp\newlog.txt
    c:\tmp> svnadmin setlog --bypass-hooks c:\svn\hoge -r 24 c:\tmp\newlog.txt
  3. 修正を確認します。
    c:\tmp> svn log file://localhost/c:/svn/hoge -r 24
    ------------------------------------------------------------------------
    r24 | terai | 2004-02-17 16:08:26 +0900 (Tue, 17 Feb 2004) | 1 lines
    誤字を修正
    ------------------------------------------------------------------------
  • svnadmin setlogは、--bypass-hooksを指定すればpre-revprop-changeを用意しなくていいようです(親ページのrabbitさんのコメントから引用)。
  • --bypass-hooksスイッチを指定しない場合は、コミット前後にフックが実行されるため、リポジトリのhooksディレクトリにpre-revprop-change.batを作成しておく必要があります。テキストエディタなどで作成し、何もしないなら中身は空でもかまいません。
    c:\tmp> echo exit 0 > c:\svn\hoge\hooks\pre-revprop-change.bat

svn propset --revprop

svn propset --revpropを使用し、コミットログの誤字脱字などを修正します。以下に例を載せていますが、実行する前に、Unversioned Propertiesや、svn propsetなどをよく読んで、注意深く実行してください。

  1. あらかじめ対象リポジトリのhooksディレクトリにpre-revprop-change.batを作成します。
    REM #[1]REPOS-PATH(the path to this repository)
    REM #[2]REV       (the revision that was tweaked)
    REM #[3]USER      (the username of the person tweaking the property)
    REM #[4]PROPNAME  (the property that was changed)
    REM #[5]ACTION    (the property was 'A'dded, 'M'odified, or 'D'eleted)
    REM set REPOS=%1
    REM set REV=%2
    REM set USER=%3
    set PROPNAME=%4
    REM set ACTION="$5"
    rem if "%4"=="svn:log" goto :end
    if "%PROPNAME%"=="svn:log" goto :end
    :err
    exit 1
    :end
    exit 0
  2. 修正するリビジョンを確認し、ログを念のためバックアップしておきます。
    c:\temp> svn log http://localhost/svn/hoge -r 24
    ------------------------------------------------------------------------
    r24 | terai | 2004-02-17 16:08:26 +0900 (Tue, 17 Feb 2004) | 1 lines
    誤字が修正
    ------------------------------------------------------------------------
    c:\temp> svn log http://localhost/svn/hoge -r 1:HEAD > log.txt
  3. svn propsetでリビジョンのログ属性を上書きします。
    c:\temp> svn propset --revprop -r 24 svn:log 誤字を修正 http://localhost/svn/hoge
    property 'svn:log' set on repository revision '24'
  4. 修正を確認します。
    c:\temp> svn log http://localhost/svn/hoge -r 24
    ------------------------------------------------------------------------
    r24 | terai | 2004-02-17 16:08:26 +0900 (Tue, 17 Feb 2004) | 1 lines
    誤字を修正
    ------------------------------------------------------------------------

コメント