在git中,我可以执行以下操作:
git log foo ^bar
显示分支foo
中的变更集,但不显示分支bar
中的变更集。有没有办法在Mercurial中做到这一点?
编辑:要解释一下用例。假设我在Mercurial中有一个分支(称之为foo
),它是从default
分支出来的。我想知道的是foo
分支中的提交,因此尚未合并到default
。也许我想的这种错误的方式,但在git的,我可以开始工作foo
,合并master
,然后工作更上一些foo
,并使用上面的命令看看哪些提交尚未合并。
因此,具体的用例是知道分支是否已完成合并为默认值。从使用水银,如果我开始一个分支foo
关闭的default
在一个功能正常工作,然后离开它有这么合并和分支关闭foo
创建bar
,其中包含建立对事物的顶部另一个特点foo
,foo
最终被停用,因为bar
包含foo中所有的变更,但我可能要合并只是在变更集{ {1}}因为我知道在foo
仍处于开发过程中这些都很好。希望这有用。
答案 0 :(得分:30)
尝试使用revsets(hg help revsets
)
hg log -r "branch(foo) and not branch(bar)"
但这有点无用,因为变更集一次只能在一个命名分支中。
也许你的意思是书签的所有祖先都不是另一个书签的祖先?
hg log -r "::a and not ::b"
无论哪种方式,revsets帮助页面都可以帮助您入门。
答案 1 :(得分:11)
你在分支foo中的提交究竟是什么意思,而不是在吧?提案基本上只在mercurial的一个分支中。
hg log -b foo #lists all commits that are in branch foo
答案 2 :(得分:1)
显示分支foo中的变更集但不显示分支栏中的变更集
hg log -r "::foo and not ::bar and ! destination(branch(bar)) and ! origin(branch(bar))"