首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标记改变已经合并或故意忽略与hg拉/推/合并/嫁接?

标记改变已经合并或故意忽略与hg拉/推/合并/嫁接?
EN

Stack Overflow用户
提问于 2011-12-21 05:36:05
回答 1查看 1.4K关注 0票数 8

我正在从Subversion过渡到Mercurial,在这里,我习惯于使用svnmerge.py跟踪已经合并或被阻止的更改:

代码语言:javascript
复制
# Mark change 123 as having already been merged; it will not be merged again, even if a range
# that contains it is subsequently specified.
svnmerge.py merge -M -r123
#
# Block change 326 from being considered for merges.
svnmerge.py merge -X -r326
#
# Show changes that are available for merging from the source branch.
svnmerge.py avail
#
# Do a catchall merge of the remaining changes.  Neither change 123 nor change 326 will be
# considered for merging.
svnmerge.py merge

我希望能够为hg拉/推/合并/嫁接做一些类似的事情,这样如果我知道我从来不想合并一个给定的改变,我就可以阻止它去考虑,让随后的樱桃采摘,合并等等变成更多的火--而且--忘记事情。我已经做了很多谷歌,但还没有找到一个方法来做到这一点。

似乎也没有办法查看尚未嫁接的变化的列表。

因为我经常整理其他开发人员并帮助他们进行合并,所以能够做这些事情是非常有帮助的,人们很可能会认为这是“逆向挑选”;也就是说,标记那些您不想合并的更改,然后进行大部分的合并。

EN

回答 1

Stack Overflow用户

发布于 2011-12-21 15:47:51

基于DAG的系统,如Mercurial and,要么全部要么一无所有:当您合并两个分支时,您将共同祖先和两个分支进行三向合并。

三向合并是,只涉及到每个分支的最后阶段的.例如,如果您在10个步骤(它是1000个步骤)中进行更改并不重要--合并结果将是相同的。

这意味着忽略更改集的唯一方法是在合并之前将其退出:

代码语言:javascript
复制
$ hg backout BAD

这将取消分支上的变更集,使之看起来从未从三方合并的角度进行。

如果您有一个想要合并但忽略的整个分支,则可以进行虚拟合并。

代码语言:javascript
复制
$ hg merge --tool internal:local --non-interactive
$ hg revert --all --rev .

这会经过合并,但在提交之前会恢复到原来的状态。

我能给你的最好的建议是构建你的工作流程,这样上面的备份就没有必要了。这意味着在最老的应用程序分支上提交一个bugfix修复。如果在创建feature时发现了bug,则使用hg bisect确定何时引入该bug。现在更新回最古老的分支,您仍然希望修复该错误:

代码语言:javascript
复制
$ hg update 2.0
# fix bug
$ hg commit -m "Fixed issue-123"

然后将错误修复合并到以后的所有分支中:

代码语言:javascript
复制
$ hg update 2.1
$ hg merge 2.0
$ hg commit -m "Merge with 2.0 to get bugfix for issue-123"

$ hg update 2.2
$ hg merge 2.1
$ hg commit -m "Merge with 2.1 to get bugfix for issue-123"

如果错误修复不再适用,那么您应该仍然合并,但丢弃不相关的更改:

代码语言:javascript
复制
$ hg update 3.0
$ hg merge 2.2 --tool internal:local --non-interactive
$ hg revert --all --rev .
$ hg commit -m "Dummy merge with 2.2"

这确保了您始终可以使用

代码语言:javascript
复制
$ hg log -r "::2.2 - ::3.0"

查看2.2分支上尚未合并为3.0的变更集。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8585509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档