到目前为止,我还没有找到一个明确的答案,尽管答案可能是“改变你的工作流程”。
我刚刚开始玩Mercurial的补丁队列,我可以看到它的一些重要力量。这看起来非常棒。在我的测试中,我发现如果你在repo1
中有一个补丁队列,而你从repo2
拉出来,你可以做一些坏事。例如:
repo1
repo1
repo2
repo1
取消申请(弹出?)所有补丁repo2
现在你会看到两个不同的分支 - 从某个角度看是有道理的。但是,由于我的补丁不是repo1
历史记录的一部分(至少在它们应用之前),似乎应该有办法告诉mercurial我的补丁是禁止的,并且只有提供“官方历史”中的内容。
有办法做到这一点吗?
答案 0 :(得分:8)
Mercurial phases可能就是答案。
从Mercurial v2.1开始,您可以将mq
个变更集配置为自动标记为secret
。 secret
和incoming/pull
命令会忽略outgoing/push
个变更集。
要启用此行为,您需要将以下内容添加到配置中:
[mq]
secret = True
启用后,其行为如下:
$ hg qpush --all
applying my-patch
now at: my-patch
$ hg phase -r .
16873: secret
$hg outgoing
comparing with https://www.mercurial-scm.org/repo/hg
searching for changes
no changes found (ignored 1 secret changesets)