Mercurial相当于在一个分支中显示提交而在另一个分支中不显示提交的内容是什么?

时间:2011-10-11 15:23:51

标签: mercurial

在git中,我可以执行以下操作:

git log foo ^bar

显示分支foo中的变更集,但不显示分支bar中的变更集。有没有办法在Mercurial中做到这一点?

编辑:要解释一下用例。假设我在Mercurial中有一个分支(称之为foo),它是从default分支出来的。我想知道的是foo分支中的提交,因此尚未合并到default。也许我想的这种错误的方式,但在git的,我可以开始工作foo,合并master,然后工作更上一些foo,并使用上面的命令看看哪些提交尚未合并。

因此,具体的用例是知道分支是否已完成合并为默认值。从使用水银,如果我开始一个分支foo关闭的default在一个功能正常工作,然后离开它有这么合并和分支关闭foo创建bar ,其中包含建立对事物的顶部另一个特点foofoo最终被停用,因为bar包含foo中所有的变更,但我可能要合并只是在变更集{ {1}}因为我知道在foo仍处于开发过程中这些都很好。希望这有用。

3 个答案:

答案 0 :(得分:30)

尝试使用revsetshg 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))"