使用Mercurial,您如何通过跨分支祖先来记录分支?

时间:2014-11-14 16:19:32

标签: mercurial changelog revision-history

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

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

从上次推出代码开始,变更集的修订版ID在哪里,是stable的提示。这适用于仅在stable分支上的代码更改,但如果我正在合并另一个分支(例如具有自己的开发分支的新主要版本),则省略所有这些提交消息!相反,我只从它合并到stable的位置获得1次提交。我想某种方式(最好是w hg log)来看这些。

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

这是我正在寻找的一个例子: HG Graph example

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

我们非常感谢您的任何建议。谢谢!

2 个答案:

答案 0 :(得分:5)

不是100%确定这是否有效:

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

我不确定,因为我认为你提供的命令大多是正确的,除了变更集539.你没有错误地将-b stable传递给hg log你呢?

答案 1 :(得分:3)

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

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

Revsets非常强大,你可以将它们输入到TortoiseHg的过滤栏中。