Mercurial 2.1.1 - 确定变更集是否为合并

时间:2013-04-19 08:50:01

标签: mercurial merge hg-log

在Mercurial 2.4中添加了一个模板关键字{p2rev},可用于确定变更集是否为合并。

hg log -r42 --template {p2rev}

如果返回“-1”,则没有第二个父项,因此变更集合并,否则 合并。

但是大多数开发人员仍然使用Mercurial 2.1.1。在他们的机器上使用{p2rev}始终返回[空白]。

我在2.1.1中尝试过:

hg log -r42 --template {parents}

这会产生一些奇怪的输出:

  • 如果只有1个父(不是合并):没有输出
  • 如果有2个父母(合并):两个父母的{rev}:{node}

确定变更集是否是Mercurial pre-2.4 中的合并的最佳方法是什么,比如2.1.1

3 个答案:

答案 0 :(得分:1)

hg parents命令可能会执行您想要的操作:

hg parents -r 42 --template "{node|short}\n"

对于合并变更集,您将获得2行输出,而对于非合并变更集,您将获得1行。

答案 1 :(得分:0)

我正在使用Mercurial 2.2.2(Ubuntu 12.10),它似乎正在运行(使用 Revision Sets 查询语言):

$ hg log -r 'merge()'
changeset:   6:f75b34694a73
parent:      4:129b7b24f6b4
parent:      5:85771af34f42
[...]
summary:     Merge branch 'default' of /foo/proto

changeset:   12:04975792d1f3
parent:      10:42c64107845f
parent:      11:226623b54bd2
[...]
summary:     merged branch 'experimental-bar' into 'default'

答案 2 :(得分:0)

如果

hg log -r"42 & merge()" --template x

返回非空字符串,然后更改集42是合并 如果有结果,模板将返回字母x。