【问题标题】:How can I list a series of revisions using 'hg log'?如何使用“hg log”列出一系列修订?
【发布时间】:2025-11-23 10:35:01
【问题描述】:

我正在尝试使用hg log 命令来显示一系列修订,xy

当我这样做时:

hg log -r 1+5

我明白了:

changeset:   1:7320d2a9baa5
user:        Tim Post <tpost@whereiwork.com>
date:        Fri Sep 30 20:38:29 2011 +0800
summary:     Foo foo everywhere is foo

changeset:   5:8d6bea76ce60
user:        Tim Post <tpost@whereiwork.com>
date:        Fri Sep 30 20:51:42 2011 +0800
summary:     Blah blah blah

Mercurial 理解我希望看到修订一 五而不是一 五。

奇怪的是,这行得通:

hg log -r 1+2+3+4+5

但是,这非常很麻烦,尤其是在尝试获取相距 +500 的修订之间的摘要时。

有没有办法获取修订日志x 通过 y 而不是x y 而无需连接系列中的每个修订?

我正在使用输出来确定每个开发人员在给定系列中做出了多少承诺。如果我根本无法使用hg 命令来做到这一点,那么我非常愿意使用 Mercurial API。我使用了hg 命令,因为我没有看到通过 API 执行此操作的明显方法。

API 是指通过挂钩或扩展使用 Python。

【问题讨论】:

  • 你指的是哪个API?我最后一次听说,以编程方式使用 Mercurial 的唯一“稳定”方式 通过命令行,这就是最近添加 command server 模式的原因 - 基本上是一种使用命令行的方式,但仅必须根据需要为尽可能多的命令生成一个进程。
  • @Anton The internal one.
  • 啊,我明白了。除非您正在编写钩子或扩展,否则我会按照该页面上的建议使用命令行或命令服务器。
  • @Anton 好吧,我正在写的部分内容是一个钩子,这就是为什么我愿意使用它来获取特定数据(但我真的不希望这样做,因为我会做一些事情在我想要一个简单的脚本稍后执行的钩子中)。

标签: mercurial mercurial-api


【解决方案1】:

hg log -r1:5.

Mercurial 有一整套迷你语言,专门用于选择命令的修订版本(不仅仅是日志)。 For more information, see hg help revsets(需要 Mercurial 1.6+)。

【讨论】:

  • 谢谢。奇怪的是,它们在hg log --help 的输出中没有包含面包屑。
  • 绝对是我在任何软件中见过的最有启发性的功能之一 :) 更新的版本(1.9?不确定)添加了equivalent capability anywhere a list of files (rather than changesets) is expected as an argument
  • 我想我会重新订阅用户的列表,所以我不会错过像这样的整洁的东西进来。多年来我想出了“有趣”的方法来用 Mercurial 做事,主要是解决它没有的功能。这个特殊的功能摆脱了一些笨拙的东西:)
  • 引自hg help log "如果没有指定修订范围,除非设置了--follow,否则默认为"tip:0",在这种情况下,工作目录父级将用作起始修订。您可以为日志指定修订集,请参阅“hg help revsets”了解更多信息。“