mercurial-查看忽略所有合并提交的分支上的更改
我有一个分支,发展了很长一段时间。在开发过程中,默认分支多次合并到该分支中。我现在想回顾一下忽略合并对该分支所做的所有更改,以确定将其合并为默认值是否安全 我试过了mercurial-查看忽略所有合并提交的分支上的更改,mercurial,branch,diff,branching-and-merging,Mercurial,Branch,Diff,Branching And Merging,我有一个分支,发展了很长一段时间。在开发过程中,默认分支多次合并到该分支中。我现在想回顾一下忽略合并对该分支所做的所有更改,以确定将其合并为默认值是否安全 我试过了 hg diff-r“分支('myBranch')-merge()” 但它仍然显示了合并带来的变化。我也试过了,但是 hg diff-r“分支('myBranch')-分支('default')” 仍然会带来合并带来的更改。您需要阅读有关语法的内容 你的案子 hg log-r“branch('myBranch')和!merge()”命
hg diff-r“分支('myBranch')-merge()”
但它仍然显示了合并带来的变化。我也试过了,但是
hg diff-r“分支('myBranch')-分支('default')”
仍然会带来合并带来的更改。您需要阅读有关语法的内容 你的案子
hg log-r“branch('myBranch')和!merge()”
命令的问题是,当您执行一个hg diff
并将几个变更集传递给它时,实际上是在这些变更集之间执行一个diff,因此您将看到合并结果
如果您只想查看变更集所做的更改,则可以使用导出
:
$ 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
以下命令使用log
命令,但使用--patch
参数也可以显示修改的行:
hg log --branch my-branch --no-merges --patch
简表:
hg log -Mpb my-branch
这是一个非常好的问题,我一直在努力寻找好的答案,但没有找到好的答案。好的,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
这一问题也在以下章节中讨论:
- 这有一个很好的答案:“所以,如果你能明确地定义它,你可能会说服我们其中一位读过这篇文章的Mercurial贡献者来实现它。”
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
根据您可能想要的是:
hg diff-r mainbranchrev-r mywork
他写道:
您可能认为“变更集是一个增量”,或者
类似的,这意味着Mercurial可以神奇地链接在一起
一堆不连续的三角洲来构建一个更大的三角洲
你的改变
事实上,Mercurial要简单得多。变更集实际上是一个
快照:表示快照状态的完整文件的完整集
提交时的项目。差别就是差别
在这两个快照之间。所以当你这样做的时候:
hg stat--rev'3408::3575和用户(mdiamond)而不是合并()
..状态仅使用结果集的第一个和最后一个变更集
进行计算
当您在开发分支上进行增量合并时,您
将您的工作与主线开发和Mercurial不可避免地纠缠在一起
还不够聪明,无法按照你的要求来解决问题。你的
最好的办法是将你的作品的开头与主要作品的开头进行比较
分支机构:
hg diff-r mainbranchrev-r我的工作
…这将显示您的所有工作,以及您必须进行的任何合并修复
做
谢谢@lazy badger,但我担心这会产生与
hg diff-r“branch('myBranch')-merge()不同的输出。
我仍然看到合并带来的变化。顺便说一句,你的意思是hg diff-r“branch('myBranch')和!merge()”
,不是吗?@switey 1)log
和diff
是不同的命令,完全不同的命令2)当我写log
的时候,我写了log
,因为你必须得到变更集的列表,并测试集合中每个变更集的变更(在log
)3)RTFM“形式逻辑”:x-y
!=<代码>x和!y!!!(更改集在x中,但不在y中)!=(x中的变更集,而不是y中的变更集)-回到学校我的形式逻辑不是很好,但是在这个例子中,不要x-y
和x和!y
是否给出相同的结果?myBranch
中有任何不是合并的内容吗?
@ 517 (default)
|
| o 516 (my_branch)
| |
| o 515
| |
| o 514
|/
o 513