我想知道是否有一个 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/