最近のSVNログエントリをどのように確認しますか?


194

入力svn logすると、コマンドラインに非常に長く、役に立たないリストが表示されます。なぜそれがデフォルトなのか私にはわかりません。端末で300エントリを読みたい場合(または読み込める場合)は、タイプするsvn log --fullか、または同様のことを気にしません。

おそらく、SVNの人たちは、その出力を別のプログラムに送りたいと思っているのでしょう。ただし、その場合は、端末ユーザーではなく、プログラムをより詳細に呼び出す方が理にかなっています。

とにかく、何が変更されたかを確認するために、最後の5または10エントリのような最近のアクティビティだけをどのように表示しますか?


9
ええ、それは本当に、ええと、のように動作するはずgit logです。
Paul Draper

回答:


261

limit オプション、例:

svn log --limit 4

svn log -l 4

最後の4つのエントリのみ


127

バートFが言ったことに加えlogて、-r(または--revision)オプションを含む多くのコマンド。以下は、このオプションを使用してリビジョンの範囲を示すいくつかの実用的な例です。

すべてを昇順でリストするには:

svn log -r 1:HEAD

すべてを降順でリストするには:

svn log -r HEAD:1

13番目から現在チェックアウトされているリビジョンのベースまでのすべてを昇順でリストするには:

svn log -r 13:BASE

指定された日付の間のすべてを取得するには:

svn log -r {2011-02-02}:{2011-02-03}

上記のすべての式を--limitオプションと組み合わせることができるため、出力内容を細かく制御できます。これらの-r式の詳細についてsvn help logは、 『Subversionによるバージョン管理』の本または関連する章を参照してください。


8
その説明は、@Daniel Dinnyesのための多くのおかげで-私は、多くの場合、OPから反対の問題を抱えている:svn log .(同様に私のためだけ早いリビジョンを返すことがあります。svn log --limit 4 .)。しかし、私が電話するとsvn log -r HEAD:1 .、最終的にすべてのエントリがリストに表示されます。
sdaau

svn log 現在のパスの変更履歴のみを表示するため、これはより良い方法です。
忍者

41

-v冗長モードで使用するのが好きです。
コミットID、コメント、影響を受けるすべてのファイルが表示されます。

svn log -v --limit 4

出力例:

I added some migrations and deleted a test xml file
------------------------------------------------------------------------
r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed
paths: 
A /trunk/java/App/src/database/support    
A /trunk/java/App/src/database/support/MIGRATE    
A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql
D /trunk/java/App/src/code/test.xml

2
詳細オプションは非常に便利です
Jason George

そして、開発チームが本当に甘いなら、svnコメントに課題IDを入れれば、コミットに関連する課題を簡単に見つけることができます。
JonasSöderström2013年

11

lessまたは他のポケットベルを介して出力をパイプします。

svn log | less

1
23kを超えるリビジョンがある場合でも、最初のエントリが表示されるまで(さらに詳細なログを使用していない場合)、最大20秒待機します。しかし、それは素晴らしいです-最新のものを上に表示します。そしてTortoiseSVNの一度に100のページングよりも優れています!さらに戻りたいとき。
Tomasz Gandor

6

誰かがこの古い質問を見ている場合、最後の更新以降の変更を確認する便利なコマンド:

svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v

LE(コメントのGaryに感謝)
同じことですが、はるかに短く、より論理的です。

svn log -r BASE:HEAD -v


8
または単にsvn log -r BASE:HEAD -v
Gary

5

他の人が言ったことに追加するには、.bashrcまたは.bash_aliasesファイルにエイリアスを作成することもできます。

alias svnlog='svn log -l 30 | less'

またはあなたがデフォルトとして欲しいもの


4

すでに気づいたsvn logように、引数なしでコマンドを実行すると、指定したURLまたはコマンドを実行する作業コピーフォルダーに関連するすべてのログメッセージが表示されます。

svn log結果はいつでも調整/制限できます。

  • svn log --limit NUM リビジョンの最初のNUMのみを表示します
  • svn log --revision REV1(:REV2) REV1リビジョンまたはREV1-REV2範囲のログメッセージが表示されます。
  • svn log --search指定した検索パターンに一致するリビジョンが表示されます(このコマンドはSubversion 1.8以降のクライアントで使用できます)。で検索できます
    • リビジョンの作者(コミッターのユーザー名)、
    • 改訂がコミットされた日付、
    • 改訂コメントテキスト(ログメッセージ)、
    • リビジョンで変更されたパスのリスト。

4

この回答は、Subversionサブコマンドオプションに関するさらなる質問を対象としています。使用可能なすべてのサブコマンド(つまり、追加、ログ、ステータスなど)について、--helpオプションを追加するだけで、サブコマンドで使用できる使用可能なオプションの完全なリストとそれらの使用方法の例を表示できます。次のスニペットはsvn log --help、「examples」セクションのコマンド出力から直接取得したものです。

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v

3

しかし、svnログはまだ逆順です。つまり、最新のエントリが最初に出力され、端末の上部からスクロールして消えてしまいます。私は本当に最後のエントリーをたいです。つまり、ソート順は時系列でなければなりません。これを行う唯一のコマンドはあるようsvn log -r 1:HEADですが、約10000エントリのリポジトリでは時間がかかりすぎます。私はこれを思いつきました:

最新の10個のSubversionエントリを時系列で表示します。

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.