到目前为止,我还没有找到明确的答案,但答案可能是“改变你的工作流程”。如何防止Mercurial补丁被拉?
我刚开始玩Mercurial的补丁队列,我可以看到它的一些严重的权力。它看起来非常棒。在我的测试中,我发现如果你在repo1
有一个补丁队列,并且你从repo2
中取出,你可以做一些坏事。例如:
- 创建回购站1并克隆它。
- 启用
repo1
- 队列使一些提交和一些补丁上
repo1
- 拉更改
repo2
- 在
repo1
不应用(弹出?)所有的补丁 - 拉更改
repo2
现在你会看到两个不同的分支 - 这从某个角度来看是有意义的。但是,由于我的补丁不是repo1
的历史记录的一部分(至少在它们被应用之前),似乎应该有一种方法可以告诉mercurial我的补丁是不受限制的,并且只提供了什么“官方历史”。
有没有办法做到这一点?
我知道我可以创建一个独立的存储库,克隆它,然后在我的克隆中使用队列,但它为我的工作流程增加了一点额外的复杂性。此外,看起来像让其他人也可能更难让其他人使用补丁。 –
mq补丁的晦涩秘诀在于它们*是* repo历史记录的一部分,当它们处于活动状态时('qpush'-ed)。检查日志。 'qpop'从回购历史记录中删除补丁。而'qpush'-ing再次创建一个新的,虽然类似的变更与一个新的ID。所以,'mq'改变了历史。在拉动或者推入其他回购或者尝试“阶段”方法之前,可以选择“qpop -all”。 –