哪些分支包含此更改?

时间:2014-08-18 11:38:09

标签: mercurial

抱怨问一个愚蠢的问题,但我似乎无法在任何地方找到答案......

我有一个庞大而复杂的Mercurial仓库,里面有十几个分支。大约6个月前,我修复了分支A上的一个错误。如何发现哪些其他分支(如果有的话)也包含此更改?

一个明显的答案是在Tortoise Hg中找到更改集,并通过6个月的更改手动跟踪纠结的修订图,直到我找到我之后的信息。从理论上讲,它可以起作用,但是对于人类而言,手动操作非常耗时且容易出错。

当然,有一些方法可以实现自动化......

P.S。试图为此找到Google搜索字词是一种令人沮丧的练习。

1 个答案:

答案 0 :(得分:4)

我认为这是你想要的命令:

hg log -r "heads(descendants(XXX) or descendants(destination(XXX)) or destination(XXX) or XXX)" -T "{branch}\n"

XXX必须替换为bugfix变更集的哈希值或变更集号。

以下是对上述表达的解释:

heads(set)       - only considers the heads of the changeset set
descendants(rev) - only considers all direct descendants of the changeset
destination(rev) - only considers grafts, transplants or rebases of the changeset
rev              - that changeset

所以表达式意味着:所有的头都是:

  • bugfix changeset的后代
  • 错误修正变更集
  • 的移植物,移植物或rebase的后代
  • 错误修正集的移植,移植或重组(如果这些没有后代)
  • 错误修正变更集本身(如果这是分支的负责人)

有关revsets的更多信息,请访问:Mercurial Help: revsets