指定 Revset 时如何使用 Hg Log 限制为 N 个最新条目?
How to limit to N newest entries with Hg Log when specifying a Revset?
这个问题不是 hg log - How to get the last 5 log entries? 的重复问题 - 应用限制很容易。问题是日志输出 受限时 似乎并不总是按日志日期降序排列 - 行为会随着 revset 的增加而改变。
例如,简单日志工作 "as expected",它显示 最新 五个日志条目。
hg log -l5
但是,当使用 revset 时,结果首先是 oldest 个节点(如没有 -l
时观察到的);因此下面显示了 oldest 五个不需要的条目。
hg log -r "user('Me')" -l5
hg log
如何使用 revset 指示按日志日期 descending ("as expected") 排序,以便限制具有可预测的1和有意义的效果?
$ hg --version
Mercurial Distributed SCM (version 3.6.1)
1 我不考虑在可预测的 revset 中抛出随机 reverse
调用,但如果那是"best" 方式..
您有几个选择。
首先,您可以将 reverse()
与现有的 revset 结合使用,例如:
hg log -r 'reverse(user("me"))' -l 5
作为 shorthand,您还可以使用 -f
或 --follow
,当与 -r
一起使用时,它们会将修订包装在 reverse(...)
.示例:
hg log -f -r 'user("me")' -l 5
或者您可以在变更集中对限制进行编码,例如:
hg log -r 'last(user("me"), 5)'
请注意,revset 别名对于避免一遍又一遍地输入 revset 很有用。所以,你可以把这样的东西放在你的 .hgrc
:
[revsetalias]
lastby() = last(user(), 5)
然后做:
hg log -r 'lastby("me")`
重要附录答案:不要盲目地使用reverse
来完成这个任务。虽然它在许多情况下都有效,但 better/reliable 通用解决方案是使用 sort
,如:
hg log -r 'sort(user("me"), "-date")' -l 5
这是因为 reverse
不保证源集顺序是 well-ordered - 因此它可能仍然会导致最终输出 不满足'newest'.
的要求条件
上面 sort
的使用保证了行为,因为它按日期降序排序,然后选择每个 hg 日志限制选项的前 5 个。
(否则,请参阅 Reimer 的回答。)
这个问题不是 hg log - How to get the last 5 log entries? 的重复问题 - 应用限制很容易。问题是日志输出 受限时 似乎并不总是按日志日期降序排列 - 行为会随着 revset 的增加而改变。
例如,简单日志工作 "as expected",它显示 最新 五个日志条目。
hg log -l5
但是,当使用 revset 时,结果首先是 oldest 个节点(如没有 -l
时观察到的);因此下面显示了 oldest 五个不需要的条目。
hg log -r "user('Me')" -l5
hg log
如何使用 revset 指示按日志日期 descending ("as expected") 排序,以便限制具有可预测的1和有意义的效果?
$ hg --version
Mercurial Distributed SCM (version 3.6.1)
1 我不考虑在可预测的 revset 中抛出随机 reverse
调用,但如果那是"best" 方式..
您有几个选择。
首先,您可以将 reverse()
与现有的 revset 结合使用,例如:
hg log -r 'reverse(user("me"))' -l 5
作为 shorthand,您还可以使用 -f
或 --follow
,当与 -r
一起使用时,它们会将修订包装在 reverse(...)
.示例:
hg log -f -r 'user("me")' -l 5
或者您可以在变更集中对限制进行编码,例如:
hg log -r 'last(user("me"), 5)'
请注意,revset 别名对于避免一遍又一遍地输入 revset 很有用。所以,你可以把这样的东西放在你的 .hgrc
:
[revsetalias]
lastby() = last(user(), 5)
然后做:
hg log -r 'lastby("me")`
重要附录答案:不要盲目地使用reverse
来完成这个任务。虽然它在许多情况下都有效,但 better/reliable 通用解决方案是使用 sort
,如:
hg log -r 'sort(user("me"), "-date")' -l 5
这是因为 reverse
不保证源集顺序是 well-ordered - 因此它可能仍然会导致最终输出 不满足'newest'.
上面 sort
的使用保证了行为,因为它按日期降序排序,然后选择每个 hg 日志限制选项的前 5 个。
(否则,请参阅 Reimer 的回答。)