名前

svn log — コミットログメッセージを表示します。

書式

svn log [PATH]
svn log URL [PATH...]
svn log URL[@REV] [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 +0900 (金, 17 1月 2003) | 1 line

Tweak.
------------------------------------------------------------------------
r17 | sally | 2003-01-16 23:21:19 +0900 (木, 16 1月 2003) | 2 lines
…

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

$ svn log foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 +0900 (月, 13 1月 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 +0900 (木, 07 1月 2003) | 3 lines
…

作業コピーが手元にない場合、URL の log をみられます。

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

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 +0900 (木, 07 1月 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 +0900 (月, 13 1月 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 +0900 (金, 10 1月 2003) | 1 line

Added new file bar.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 +0900 (木, 07 1月 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 +0900 (金, 17 1月 2003) | 1 line

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