【发布时间】:2025-12-31 19:45:01
【问题描述】:
如何阻止 mercurial 在推送操作中将变更集置于“公开”阶段?我希望他们保持“选秀”。
我经常 rebase 和 histedit,而我推送到的存储库仅供我自己使用。而且必须一直改变相位是一件很麻烦的事情。
【问题讨论】:
标签: mercurial push mercurial-phases
如何阻止 mercurial 在推送操作中将变更集置于“公开”阶段?我希望他们保持“选秀”。
我经常 rebase 和 histedit,而我推送到的存储库仅供我自己使用。而且必须一直改变相位是一件很麻烦的事情。
【问题讨论】:
标签: mercurial push mercurial-phases
文档没有明确显示的是:
push 的阶段变化不是一个纯粹的本地决定。 – 在“上传”变更集之后,客户端向服务器询问有关提交阶段的更新,而服务器通常是告诉他们现在是“公开的”。
因此,.hgrc-sn-p
[phases]
publish = False
必须放在服务器上,这会抑制那里通常的相变。然后,服务器将以推送的方式报告阶段。
Bitbucket 在 Settings → Repository details → Phases 下有一个选项。
【讨论】:
如您所见,将阶段保持在draft 的最直接方法是将远程服务器配置为“非发布”。
但是还有第二种方法,如果由于任何原因无法将目标服务器设置为“非发布”,这可能对某些人有用:使用pull 而不是push。拉取是只读的,因此如果您可以设置工作流程(例如,通过本地别名)以便远程从本地存储库中拉取更改,它们将保持在阶段draft。
【讨论】:
.hg/hgrc 的主机也不允许您使用除 hg serve 之外的交互式 shell 或命令。我认为可能有一些技巧可以让hg push 在拉模式下运行,就像hg clone 有硬链接模式和拉模式一样。嗯,太糟糕了。
hg phase -f --draft 将某些变更集的阶段倒回到draft,对吧?)
【讨论】:
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
【讨论】: