Mercurial:测试分支是否包含变更集

标签 mercurial

我想知道是否有一个 Mercurial 命令/扩展可以只测试给定的变更集是否在分支中。该命令类似于:

hg contains [-r branch] changeset_id

并且应该检查给定的变更集是否在当前/给定的分支中,仅返回"is"或“否”。

我知道“debugancestor”命令,但“是/否”答案更容易阅读。

如果有,是否也可以检查移植的变更集?

编辑:该场景位于一个存储库中,其中命名分支有多个头。假设一个分支名为“dev-X”,具有超过 1 个头和较长的历史记录,至少无法通过各种图形可视化来跟踪它。 我想弄清楚分支“dev-X”中的变更集X是否已 merge 到“dev-X”的另一个头中。因此,我不能使用分支名称,而只能使用变更集编号/哈希来指定分支。

最重要的是,我试图查明变更集 X 是否已移植到那里,可能需要超过 1 个移植步骤。我知道必要的信息存储在 Mercurial 中(我在篡改 Mercurial 内部结构时看到过它),只是无法通过命令行界面访问它。

最佳答案

这个怎么样:

hg log -r changeset_id -b branchname

如果 changeid_id 包含分支 branchname 上的更改,则会给出一些输出,否则不返回任何输出。

如果需要,您可以将其包装在 bash 函数中:

function contains() {
    if [ "$(hg log -r $1 -b $2)" == "" ]
    then
        echo no
    else
        echo yes
    fi
}

它的作用是:

$ contains 0 default
yes
$ contains 0 other   
no

关于Mercurial:测试分支是否包含变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681366/

相关文章:

Mercurial 队列 - 导出补丁

mercurial - 如何使用修订号而不是 GUID(在 TeamCity 中)标记我的构建?

javascript - 是否可以使用 javascript 从浏览器中获取 "read"mercurial repos?

Mercurial Mercurial merge 默认

visual-studio - Visual Studio 与免费 SCM 的集成

mercurial - 修改推送提交的提交消息。 ( Mercurial )

mercurial - Mercurial:一些与.hgignore有关的问题

version-control - 如何防止 Mercurial 补丁被拉出?

mercurial - mercurial.hg源代码库在哪里

mercurial - 撤消 hg 推送(取消?)