此问题与hg log - How to get the last 5 log entries?不重复 - 很容易应用限制。问题是日志输出受限时,似乎总是按日志日期降序排序 - 行为随着revset的增加而改变。
例如,简单的日志工作"正如所料"它显示最新的五个日志条目。
hg log -l5
但是,当使用revset时,结果首先是最旧的节点(如没有-l
所示);因此,下面显示了最旧的五个条目,这是不希望的。
hg log -r "user('Me')" -l5
如果hg log
可以指示按日期降序("正如预期的那样"),以便限制具有可预测性 1 并且有意义的效果?
$ hg --version
Mercurial Distributed SCM (version 3.6.1)
1 我不考虑在rev 集中预测可能会发出随机reverse
次来电,但如果这是"最佳&# 34;方式..
答案 0 :(得分:1)
你有几种选择。
首先,您可以将reverse()
与现有的revset结合使用,例如:
hg log -r 'reverse(user("me"))' -l 5
作为简写,您还可以使用-f
或--follow
,当与-r
一起使用时,会将修订包装在reverse(...)
中。例如:
hg log -f -r 'user("me")' -l 5
或者您可以在变更集中对限制进行编码,例如:
hg log -r 'last(user("me"), 5)'
请注意,revset别名可以避免必须反复输入revsets。所以,你可以在.hgrc
:
[revsetalias]
lastby($1) = last(user($1), 5)
然后做:
hg log -r 'lastby("me")`
答案 1 :(得分:0)
重要的附录答案:不盲目地使用reverse
执行此任务。虽然它在许多情况下都有效,但更好/更可靠的通用解决方案是使用sort
,如:
hg log -r 'sort(user("me"), "-date")' -l 5
这是因为reverse
不保证源集顺序是有序的 - 因此它仍然可能导致不满足的最终输出要求的“最新”标准。
上面sort
的使用保证了按日期排序,降序,然后选择每个hg日志限制选项前5位的行为。
(否则,请参阅Reimer的回答。)