善变 - 忽略所有的合并提交的分支看变化(mercurial - see changes on th

2019-08-04 11:28发布

我有一个对的很长一段时间开发的一个分支。 在发展过程中默认的分公司合并到分支多次。 我现在想查看有关该分支合并忽略所做的所有变化,以决定是否可以安全地将其合并为默认值。

我试过了

hg diff -r "branch('myBranch') - merge()"

但它仍然显示了合并带来的变化。 也试过下面这如何显示具体到一个名为分支中DIFF善变 ,但

hg diff -r "branch('myBranch') - branch('default')"

仍然使由合并带来的变化。

Answer 1:

与命令的问题是,当你执行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"



Answer 2:

必须了解revsets语法

你的情况下,

hg log -r "branch('myBranch') and ! merge()"



Answer 3:

以下使用log的命令,但与--patch参数可同时显示修改过的线,以及:

hg log --branch my-branch --no-merges --patch

简写:

hg log -Mpb my-branch


Answer 4:

这是一个非常好的问题,我想找到很长一段时间很好的答案,却没有找到很好的一个。 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()"

这个问题也讨论了:

  • 水银:我怎么能看到只能由合并带来的变化? 它具有很好的答案是:“如果你能明确地定义它,你可能说服我们中的一个,上面写着SO实现它水银的贡献者。”


Answer 5:

尝试:

    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


文章来源: mercurial - see changes on the branch ignoring all the merge commits