我们使用的是窑和Fogbugz;窑应该无缝地允许git和hg一起工作。然而,我们遇到了一个问题,git分支在mercurial中被视为书签;直到推动改革,我们才在回购中发现这一点,现在分支机构有点受到污染。
我在默认分支中有公共变更集,应该在自定义分支中。我可以退出,但我需要向其他公共部门重新申请。我担心重新调整基数,因为这些都是公开的变化。
处理这种情况的最佳方法是什么?
编辑:我想我可能可以使用mercurial队列将变更集转换为补丁,但变更集是不可变的,因为它们是公共的。出于类似的原因,我也不能做hg脱衣舞。
在Mercurial中,您可以使用hg graft
将变更集(有时也称为cherry-pick)从一个地方复制到另一个地方。它通常用于在错误分支上意外提交错误修复程序时,将错误修复程序备份到维护分支。
你这样使用它:
$ hg update correct-branch
$ hg graft your-commit
这将把your-commit
重新创建为correct-branch
的子级,类似于将your-commit
导入MQ、弹出补丁、更新到correct-branch
并推送补丁。graft的优点是它将在内部使用三方合并,从而为您提供更好的冲突解决方案。这与hg rebase
的工作方式完全相同。
我想把torek的评论提升为一个完整的答案,让它更显眼。
正如他所指出的,当mercurial认为变更集已经公开时,hg phase
命令(带有--force标志)可以修复这种情况。当然,你要确保你对它是否首先被分享是正确的。
我遇到了一个小故障,mercurial将一个未按下的分支标记为public,这使得使用qimport(或者本可以使用strip)很容易修复