【问题标题】:With Mercurial, how do you hg log a branch with cross-branch ancestors?使用 Mercurial,您如何 hg 记录具有跨分支祖先的分支?
【发布时间】:2015-01-12 02:28:30
【问题描述】:

在 Mercurial 中,我想为我的 stable 分支的修订构建所有提交消息的变更日志。目前,我正在使用:

hg log -r <oldid>::<newid>

哪里是上次我们推出代码时变更集的修订 ID,并且是 stable 的提示。这对于仅在 stable 分支上的代码更改非常有用,但是如果我要合并另一个分支(例如具有自己的开发分支的新主要版本),所有这些提交消息都会被忽略!相反,我只从它合并到stable 的地方获得 1 次提交。我也想通过某种方式(最好是hg log)来查看这些内容。

我不想在此列表中获得任何“未发布”的提交 - 即,尚未合并到 stable 的任何分支上的提交。

这是我正在寻找的示例:

在这个例子中,最后推送的版本是 540。因此,我不想要 540 或以下的任何内容。有几个分支到default 和回到stable,我想要所有这些(539、541-557 为绿色)。但是,有一些更改未合并回stable (558-563),我希望省略。特别注意修订 539;当 540 发布时,它没有合并到stable,因此不包括在内。但现在它已经被合并到stable,所以我想包含它!

你们的任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: mercurial changelog revision-history


    【解决方案1】:

    不能 100% 确定这是否可行:

    hg log -r '::stable - ::540'
    

    我不确定,因为我认为您提供的命令大部分都是正确的,除了变更集 539。您不会错误地将 -b stable 传递给 hg log,是吗?

    【讨论】:

    • 就是这样!谢谢!
    • 是的,这是正确的做法:除了已经发布的 - ::540 之外,您想要所有已进入稳定版 (::stable) 的内容。
    【解决方案2】:

    看看revsets。凯文发布了你想要的简短形式 - 这是长形式:

    hg log -r "ancestors('stable') and not ancestors(540)"
    

    Revsets 非常强大,您只需将它们输入到 TortoiseHg 的过滤器栏中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      相关资源
      最近更新 更多