4

到目前为止,我还没有找到明确的答案,尽管答案可能是“改变你的工作流程”。

我刚刚开始使用 Mercurial 的补丁队列,我可以看到其中的强大功能。看起来非常棒。在我的测试中,我发现如果你有一个补丁队列repo1,并且你从 中拉取repo2,你可以做一些坏事。例如:

  1. 创建 repos 1,然后克隆它。
  2. 启用队列repo1
  3. 进行一些提交和一些补丁repo1
  4. 将更改拉到repo2
  5. repo1取消应用(流行?)你所有的补丁
  6. 将更改拉到repo2

现在您将看到两个不同的分支 - 从某个角度来看这是有道理的。但是,由于我的补丁不是repo1's 历史的一部分(至少在它们被应用之前),似乎应该有一种方法告诉 mercurial 我的补丁是禁止使用的,并且只提供“官方历史”。

有没有办法做到这一点?

4

1 回答 1

8

Mercurial阶段可能是这个问题的答案。

从 Mercurial v2.1 开始,您可以将mq变更集配置为自动标记为secret. 和命令secret忽略变更集。incoming/pulloutgoing/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)
于 2012-06-06T17:58:46.500 回答