我想知道是否有一个mercurial命令/扩展只测试给定的变更集是否在分支中.该命令将类似于:
hg contains [-r branch] changeset_id
Run Code Online (Sandbox Code Playgroud)
并应检查给定的变更集是否在当前/给定分支中,只返回"是"或"否".
我知道"debugancestor"命令,但是"是/否"答案更容易阅读.
如果有,是否有可能检查移植的变更集?
编辑:场景位于一个repo中,其中命名分支有多个头.让我们说一个分支被命名为"dev-X",具有超过1个头和更长的历史,至少用各种图形可视化跟踪它.我想弄清楚分支"dev-X"中的变更集X是否合并到另一个"dev-X"的头部.因此,我不能使用分支名称,只能使用变更集编号/哈希来指定分支.
最重要的是,我试图找出变更集X是否被移植到那里,可能需要超过1个移植步骤.我知道必要的信息存储在mercurial中(我在篡改mercurial内部时看到它),它只是无法通过命令行界面访问.
Ry4*_*ase 18
这个怎么样:
hg log -r changeset_id -b branchname
Run Code Online (Sandbox Code Playgroud)
如果changeid_id在分支上包含更改,则会给出一些输出branchname,否则不返回任何输出.
如果你想要你可以将它包装在一个bash函数中:
function contains() {
if [ "$(hg log -r $1 -b $2)" == "" ]
then
echo no
else
echo yes
fi
}
Run Code Online (Sandbox Code Playgroud)
这样做:
$ contains 0 default
yes
$ contains 0 other
no
Run Code Online (Sandbox Code Playgroud)
Dor*_*ori 14
使用1.6及更高版本,只需要修改集的功能就可以了
hg log --rev "ancestors(.) and <revNum>"
Run Code Online (Sandbox Code Playgroud)
例如
hg log --rev "ancestors(.) and 1234"
Run Code Online (Sandbox Code Playgroud)
空白表示否,输出表示是,它在您的历史记录中.如果变更集是在命名分支中创建的,那么此处发布的其他一些解决方案将无法工作,即使它稍后在某个时候合并.
| 归档时间: |
|
| 查看次数: |
7643 次 |
| 最近记录: |