你怎么看最近的SVN日志条目?

时间:2011-02-02 23:23:05

标签: svn

键入svn log会在命令行上吐出一个非常长,无用的列表。我不知道为什么这是默认值。如果我想在终端上阅读(甚至可以阅读)300个条目,我不介意输入svn log --full或类似内容。

也许SVN的人认为我想把这个输出提供给另一个程序。但是,如果是这种情况,那么对程序进行更详细的调用会更有意义 - 而不是终端用户。

无论如何,我如何看到最近的一些活动,比如过去的5或10个条目,看看有什么变化?

9 个答案:

答案 0 :(得分:244)

limit选项,例如:

svn log --limit 4

svn log -l 4

仅限最后4个条目

答案 1 :(得分:124)

除了Bert F said之外,许多命令(包括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或书中的相关章节Version Control with Subversion

答案 2 :(得分:40)

我喜欢使用-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

答案 3 :(得分:11)

通过less或其他寻呼机输出输出:

svn log | less

答案 4 :(得分:5)

要添加其他人所说的内容,您还可以在.bashrc或.bash_aliases文件中创建别名:

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

或任何您想要的默认

答案 5 :(得分:4)

正如您已经注意到svn log命令在没有任何参数的情况下运行时,显示与您指定的URL或运行命令的工作副本文件夹相关的所有日志消息。< / p>

您始终可以优化/限制svn log结果:

  • svn log --limit NUM将仅显示前NUM个修订版
  • svn log --revision REV1(:REV2)将显示REV1修订版或REV1 - REV2范围的日志消息,
  • svn log --search将显示与您指定的搜索模式匹配的修订版(该命令在Subversion 1.8和更新的客户端中可用)。你可以搜索
    • 修订版的作者(即提交者用户名),
    • 提交修订的日期,
    • 修订评论文本(日志消息),
    • 修订版中更改的路径列表。

答案 6 :(得分:3)

但是svn log仍然是相反的顺序,即最近的条目首先输出,从我的终端顶部滚动并消失。我真的想最后的条目,即排序顺序必须按时间顺序排列。执行此操作的唯一命令似乎是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

答案 7 :(得分:3)

如果有人正在查看这个旧问题,可以使用一个方便的命令查看自上次更新以来的更改:

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

LE(感谢Gary的评论)
同样的事情,但更短,更合乎逻辑:

<强> svn log -r BASE:HEAD -v

答案 8 :(得分:3)

此答案针对有关Subversion子命令选项的其他问题。对于每个可用的子命令(即add,log,status ...),您只需添加--help选项即可显示可用于子命令的可用选项的完整列表以及如何使用它们的示例。以下代码段直接取自&#34;示例&#34;下的svn log --help命令输出。部分:

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