我有一个对的很长一段时间开发的一个分支。 在发展过程中默认的分公司合并到分支多次。 我现在想查看有关该分支合并忽略所做的所有变化,以决定是否可以安全地将其合并为默认值。
我试过了
hg diff -r "branch('myBranch') - merge()"
但它仍然显示了合并带来的变化。 也试过下面这如何显示具体到一个名为分支中DIFF善变 ,但
hg diff -r "branch('myBranch') - branch('default')"
仍然使由合并带来的变化。
我有一个对的很长一段时间开发的一个分支。 在发展过程中默认的分公司合并到分支多次。 我现在想查看有关该分支合并忽略所做的所有变化,以决定是否可以安全地将其合并为默认值。
我试过了
hg diff -r "branch('myBranch') - merge()"
但它仍然显示了合并带来的变化。 也试过下面这如何显示具体到一个名为分支中DIFF善变 ,但
hg diff -r "branch('myBranch') - branch('default')"
仍然使由合并带来的变化。
与命令的问题是,当你执行hg diff
,并通过它的几个变更,实际上这些变更集之间执行差异,因此你会看到合并结果。
如果你想看到的只是由变更集所做的更改,那么你可以使用export
:
$ hg export -r "branch('mybranch') and not merge()"
// lists the changes made by each changeset
为了便于审查,可以输出这些与基于修改/变更ID名称的文件:
$ hg export -r "branch('mybranch') and not merge()" -o "%H.patch"
...创建在每个非合并变更文件mybranch
,并将其输出到名为“40位的变更id.patch”的文件。 如果你喜欢的版本号(如修订ID是本地只为本地的资料库),使用"%R.patch"
。
你必须了解revsets语法
你的情况下,
hg log -r "branch('myBranch') and ! merge()"
以下使用log
的命令,但与--patch
参数可同时显示修改过的线,以及:
hg log --branch my-branch --no-merges --patch
简写:
hg log -Mpb my-branch
这是一个非常好的问题,我想找到很长一段时间很好的答案,却没有找到很好的一个。 OK,一件事情是100%的工作原理是这样的:
hg status # make sure that you don't have local changes
hg up <target_branch>
hg merge <your branch>
hg diff > merge.diff
hg up -C # this one cleans the merge
我用这个工作流程的所有的时间,但因为它需要切换分支它并不能完全满足我(当我真正可能不希望在这个确切的时刻做实际的合并权,我只是检查什么有)
我一直在寻找的年龄了很好的解决方案在这里,但到目前为止还没有找到。 想这些:
hg diff -r "branch('.') and ! merge()" # this page
hg diff -r "default:branch('.') and not merge()"
hg diff -r "parents(branch(.)):branch('.') and not merge()"
这个问题也讨论了:
尝试:
hg diff -r"ancestor(default,my_branch)" -rmy_branch
如果您有没有做过任何合并到分支,然后在“祖先”将拿起原来的分支点。 如果你做了合并,然后在“祖先”,将搭载最新的汇合点。
例如,在下面你的图形会得到520和519之间的差异:
@ 521 (default)
|
| o 520 (my_branch)
|/|
o | 519
| |
o | 518
| |
o | 517
| |
| o 516
| |
| o 515
| |
| o 514
|/
o 513
在简单的图表下面你将得到516和513之间的差异:
@ 517 (default)
|
| o 516 (my_branch)
| |
| o 515
| |
| o 514
|/
o 513