如何在 hg push 上保持变更集处于“草稿”阶段?

How to keep changesets in phase “draft” on hg push?

如何阻止 Mercurial 将变更集放入推送操作的“public”阶段?我希望他们保持“草稿”状态。

我 rebase 和 histedit 很多,我推送的存储库仅供我使用。而且必须一直改变相位是一件令人讨厌的事情。

https://www.mercurial-scm.org/wiki/Phases

A repository is "publishing" by default. To make a repository non-publishing, add these lines to its hgrc configuration:


[phases]
publish = False

简答: nohow

如果你想在本地和推送目标上重写历史,你必须

文档没有明确揭示的是:

推送时的阶段变化不是纯粹的本地决定。 – “上传”变更集后,客户端向服务器请求有关提交阶段的更新,服务器通常会告诉他们现在是“public”。

因此,.hgrc-片段

[phases]
publish = False

必须放在服务器上,这会阻止那里通常的相变。然后,服务器将按照推送阶段的相同方式报告阶段。

Bitbucket 在 设置 → 存储库详细信息 → 阶段 下有一个选项。

将相位保持在 draft 的最直接方法是将远程服务器配置为 "non-publishing",正如您已经发现的那样。

但是还有第二种方法,如果出于任何原因无法将目标服务器设置为 "non-publishing",这可能对某些人有用:使用 pull 而不是 push。拉取是只读的,因此如果您可以设置您的工作流程(例如通过本地别名)以便远程从您的本地存储库中拉取更改,它们将保持在 draft.

阶段