gpt4 book ai didi

mercurial - 列出自上次 merge 以来所有 merge 的变更集?

转载 作者:行者123 更新时间:2023-12-01 10:01:15 27 4
gpt4 key购买 nike

使用 Mercurial,我如何列出自上次从该分支 merge 以来通过 merge 分支应用的所有变更集?

最佳答案

Revsets 是你的 friend 。或者你的死对头,取决于他们变得多么复杂:)

以下命令将显示最后两次 merge 之间的所有关联变更集:

$ hg log -r "first(last(merge(),2)):last(merge()) & ancestors(last(merge()))"

那个复杂的小表达式(我稍后会看到它变得更简单)执行以下操作:

  • x:y 为您提供 xy 之间的所有变更集
  • merge() 是一个包含所有 merge 的 revset。
  • last(...,n) 给出集合的最后 n 个变更集,n 默认为 1
  • first(...) 为您提供集合的第一个变更集
  • ancestors(last(merge())) 是包含上次 merge 的所有祖先的集合

结合所有这些,上面的表达式变成(准备好了吗?):给我最后两个 merge 中的第一个和最后一个 merge 之间的所有变更集,包括在内,它们恰好是最后一个 merge 的贡献祖先。

ancestors(...) 位过滤掉任何不相关的变更集。

您可以通过添加 & branch(branchname) 将其限制为特定分支上的更改。例如,如果您要从 default merge 到一个 release 分支,您可以这样做:

$ hg log -r "first(last(merge(),2)):last(merge()) & ancestors(last(merge())) & branch(default)"

这不包括实际 merge 本身,因为它们会出现在 release 分支上。

希望这是有道理的 - 今天下午我会看看是否可以找到更简单的方法,但这是我首先想到的。同时,如果您使用它,您可以通过在您的用户 hgrc 文件中创建一个 revset 别名来简化它:

[revsetalias]
contrib = first(last(merge(),2)):last(merge()) & ancestors(last(merge()))

所以你可以使用:

$ hg log -r "contrib"
$ hg log -r "contrib & branch(default)"

有关详细信息,请查看 hg help revsets

关于mercurial - 列出自上次 merge 以来所有 merge 的变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com