Revset过滤器显示命名分支的合并/拆分

时间:2015-06-12 14:07:04

标签: mercurial tortoisehg mercurial-revsets

我想过滤TortoiseHg中的提交,只显示提交:

  1. 在不同的命名分支中至少有一个父提交;或
  2. 在不同的指定分支中至少有一个子提交;或
  3. 是原始起点(提交0);或
  4. 是命名分支的头部或命名分支的结束提交;
  5. 基本上:如何获得显示命名分支如何流动的精简图?

    作为一个例子,我想浓缩这种修订图:

    Example revision graph

    进入省略这些的形式:

    • Rev 15(绿色)
    • Rev 14(绿色)
    • Rev 13(蓝色)
    • Rev 10(蓝色)
    • Rev 7(蓝色)
    • Rev 4(红色)
    • Rev 1(蓝色)

    我尝试使用this answer at SoftwareRecs中的具体建议:

    children(branchpoint() or merge()) or parents(branchpoint() or merge())
    

    然而,这并不像我想要的那样有效,它仍然包括几个没有关于分支的任何细节的提交,并且例如通过显示过早的提交来缩短默认分支:

    result of the abovementioned filter

    如何更改revset过滤器以便获得更精简的图形? 是否可能?作为次优解决方案,我想如果在命名与否之间没有区别,也可以接受。

1 个答案:

答案 0 :(得分:1)

这可以让你得到你想要的东西,减去分支名称之间的比较:

merge() or parents(merge()) or branchpoint() or children(branchpoint())

这应该为您提供所有合并更改集,合并的直接父项,所有分支点更改集以及分支点的直接子项。

在问题帖子的示例中,由于您设置的revsets的复合特性,您将包括合并变更集的子项和分支点的父项。通过将它们分开,结果会略微减少。