名前

svn log — コミットログメッセージの表示。

用法

svn log [PATH]
svn log URL [PATH...]

説明

デフォルトのターゲットは現在の作業ディレクトリのパスになります。 引数を指定しなければ svn log は自分の作業コピーの現在の作業ディレクトリ 自身とその内部のすべてのファイルとディレクトリに関するログメッセージを 表示します。 一つのパス、一つ以上のリビジョン、あるいはそれらの組み合わせを 指定することで結果内容を指定をできます。ローカルパスのデフォルト リビジョン範囲は、BASE:1 です。

URLだけを指定すれば、その URL に含まれるすべてのログメッセージが 表示されます。URLの後にパスを付ければ URL中のそれらのパスに含まれる メッセージだけが表示されます。URL のデフォルトリビジョン範囲は HEAD:1 です。

--verbose を指定するとsvn log はそれぞれのログメッセージと共に関連したすべてのパスを表示します。 --quiet を指定すると svn log はログメッセージの本体部分を表示しなくなります(これは --verbose スイッチと両立します)。

それぞれのログメッセージは、そのリビジョンに影響のあるパスが二度 以上要求されても、一度だけ表示されます。ログはデフォルトではコピーされた 履歴に従います。--stop-on-copy はこの振る舞いを無効にしますが、ブランチが 起きた場所を特定する場合には役に立ちます。

別名

なし

変更対象

なし

リポジトリへのアクセス

発生する

スイッチ

--revision (-r) REV
--quiet (-q)
--verbose (-v)
--targets FILENAME
--stop-on-copy
--incremental
--limit NUM
--xml
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR

最上位で svn log を実行することによって作業コピー中の変更されたすべての パスのログメッセージを見ることができます:

$ svn log
------------------------------------------------------------------------
r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line

Tweak.
------------------------------------------------------------------------
r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines
…

作業コピー中の特定のファイルに関するすべてのログメッセージを調べます:

$ svn log foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

作業コピーが手元にない場合、URLを log することができます:

$ svn log http://svn.red-bean.com/repos/test/foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

同じURLの下のいくつかの別のパスがほしい場合URL [PATH...] 構文を使うことができます。

$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line

Added new file bar.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

複数の log コマンドの結果をつなげたい場合、--incremental スイッチを使うことができます。 svn logは普通メッセージの最初にダッシュの行を表示 し、それぞれの引き続くログメッセージを表示し、最後のログメッセージが それに続きます。 もし svn log を二つのリビジョン範囲で実行した場合、次のような出力 になります:

$ svn log -r 14:15
------------------------------------------------------------------------
r14 | ...

------------------------------------------------------------------------
r15 | ...

------------------------------------------------------------------------

しかし、二つの順番になっていないログメッセージをファイルに 出力したい場合、何か次のような感じになるでしょう:

$ svn log -r 14 > mylog
$ svn log -r 19 >> mylog
$ svn log -r 27 >> mylog
$ cat mylog
------------------------------------------------------------------------
r14 | ...

------------------------------------------------------------------------
------------------------------------------------------------------------
r19 | ...

------------------------------------------------------------------------
------------------------------------------------------------------------
r27 | ...

------------------------------------------------------------------------

incremental スイッチを使えば、出力中の重複したダッシュ行 の表示を避けることができます:

$ svn log --incremental -r 14 > mylog
$ svn log --incremental -r 19 >> mylog
$ svn log --incremental -r 27 >> mylog
$ cat mylog
------------------------------------------------------------------------
r14 | ...

------------------------------------------------------------------------
r19 | ...

------------------------------------------------------------------------
r27 | ...

--incremental スイッチは、 --xml スイッチを使ったときと同じような出力 制御をします。

ティップ

もし svn log を特定のパス上の特定のリビジョン指定で実行すると 何も出力されないでしょう

$ svn log -r 20 http://svn.red-bean.com/untouched.txt
------------------------------------------------------------------------

それはパスはリビジョンによっては修正されなかったことを意味 しています。リポジトリの最上位で log するか、そのリビジョンで 修正したファイルを知っているなら、明示的にそれを指定することが できます:

$ svn log -r 20 touched.txt 
------------------------------------------------------------------------
r20 | sally | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line

Made a change.
------------------------------------------------------------------------