输入svn log会在命令行上输出一个长得令人难以置信的无用列表。我不知道为什么这是默认值。如果我想在终端上读取(甚至可以读取)300个条目,我不介意输入svn log——full或类似的东西。
也许SVN的人认为我想把输出提供给另一个程序。然而,如果是这样的话,对程序(而不是终端用户)进行更详细的调用会更有意义。
总之,我怎么能看到最近的活动,比如最近的5个或10个条目,看看有什么变化?
输入svn log会在命令行上输出一个长得令人难以置信的无用列表。我不知道为什么这是默认值。如果我想在终端上读取(甚至可以读取)300个条目,我不介意输入svn log——full或类似的东西。
也许SVN的人认为我想把输出提供给另一个程序。然而,如果是这样的话,对程序(而不是终端用户)进行更详细的调用会更有意义。
总之,我怎么能看到最近的活动,比如最近的5个或10个条目,看看有什么变化?
当前回答
除了Bert F所说的,包括log在内的许多命令都有-r(或——revision)选项。下面是一些使用该选项显示修订范围的实际示例:
按升序列出所有内容:
svn log -r 1:HEAD
按降序列出所有内容:
svn log -r HEAD:1
按升序列出从第十三到当前签出修订的底部的所有内容:
svn log -r 13:BASE
获取给定日期之间的所有内容:
svn log -r {2011-02-02}:{2011-02-03}
您可以将上述所有表达式与——limit选项组合在一起,这样就可以对打印内容进行相当细粒度的控制。有关这些-r表达式的更多信息,请参阅svn help日志或《版本控制与Subversion》一书中的相关章节
其他回答
如果有人正在看这个老问题,一个方便的命令来查看自上次更新以来的变化:
svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v .输出说明
LE(感谢Gary的评论) 同样的东西,但更短,更符合逻辑:
svn log -r BASE:HEAD -v
我喜欢在verbose模式下使用-v。 它会给你提交id,注释和所有受影响的文件。
svn log -v --limit 4
输出示例:
我添加了一些迁移,并删除了一个测试xml文件 ------------------------------------------------------------------------ r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1行修改 道路: /箱子/ java / App / src /数据库/支持 /箱子/ java / App / src /数据库/支持/迁移 /箱子/ java / App / src /数据库/支持/ / remove_device.sql迁移 D /箱子/ java / App / src /代码/ test.xml
除了Bert F所说的,包括log在内的许多命令都有-r(或——revision)选项。下面是一些使用该选项显示修订范围的实际示例:
按升序列出所有内容:
svn log -r 1:HEAD
按降序列出所有内容:
svn log -r HEAD:1
按升序列出从第十三到当前签出修订的底部的所有内容:
svn log -r 13:BASE
获取给定日期之间的所有内容:
svn log -r {2011-02-02}:{2011-02-03}
您可以将上述所有表达式与——limit选项组合在一起,这样就可以对打印内容进行相当细粒度的控制。有关这些-r表达式的更多信息,请参阅svn help日志或《版本控制与Subversion》一书中的相关章节
但是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
限制选项,例如:
svn log --limit 4
svn log -l 4
只有最后4项