你如何看到最近的SVN日志条目?

键入svn log在命令行上吐出一个令人难以置信的长时间无用的列表。 我不知道为什么这是默认的。 如果我想阅读(甚至可以阅读)terminal上的300个条目,我不介意键入svn log --full或类似的东西。

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

无论如何,我怎样才能看到最近的5个或10个条目最近的活动,看看有什么变化?

limit选项,例如:

 svn log --limit 4 svn log -l 4 

只有最后4个条目

除了Bert F所说的 ,许多命令,包括log都有-r (或--revision )选项。 以下是使用此选项显示修订范围的一些实际示例:

要按升序列出所有内容:

 svn log -r 1:HEAD 

以降序列出所有内容:

 svn log -r HEAD:1 

要按升序列出从当前签出的修订版本的第13个到最底部的所有内容:

 svn log -r 13:BASE 

要在给定的date之间得到一切:

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

你可以把上面所有的expression式和--limit选项结合起来,这样就可以对打印的内容进行细致的控制。 有关这些-rexpression式的更多信息,请参阅svn help log或“ Subversion版本控制 ”一书中的相关章节

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

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

 svn log | less 

要添加到别人说的话,你也可以在.bashrc或.bash_aliases文件中创build一个别名:

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

或任何你想要的默认值

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

你总是可以改进/限制svn log结果:

  • svn log --limit NUM将只显示第一个NUM的修订版本,
  • svn log --revision REV1(:REV2)将显示REV1修订或REV1 – REV2范围的日志信息,
  • svn log --search将显示与您指定的search模式相匹配的修订(该命令在Subversion 1.8和更高版本的客户端中可用)。 你可以search
    • 修订版的作者(即提交者用户名),
    • 修改提交date,
    • 修改评论文本(日志消息),
    • 修订版本中更改的path列表。

但svn日志仍然是相反的顺序,即最新的input是先输出,滚动我的terminal的顶部,并走了。 我真的想看到最后一个条目,即sorting顺序必须按时间顺序。 唯一的这个命令似乎是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 

这个答案针对的是有关Subversion子命令选项的更多问题。 对于每个可用的子命令(即添加,日志,状态…),您可以简单地添加--help选项以显示可用于子命令的可用选项的完整列表以及如何使用它们的示例。 以下片段直接从“examples”部分下的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 

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

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

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

svn log -r BASE:HEAD -v