我如何告诉(本地)mercurial服务器是非发布服务器?

我如何告诉(本地)mercurial服务器是非发布服务器?,mercurial,bitbucket,mercurial-phases,Mercurial,Bitbucket,Mercurial Phases,当我无法访问远程.hg/hgrc文件时,如何告知mercurial远程服务器(例如,上)未发布 背景 mercurial的最新版本有一个概念,即允许跟踪哪些变更集已共享(public),哪些变更集未共享(draft)。允许对草稿变更集执行存储库更改操作,但不允许对公共变更集执行存储库更改操作,因为其他人可能依赖后者 默认情况下,将变更集推送到公共服务器会将其阶段更改为public,但如果服务器是私有的或专用于代码审查(即,人们不应该能够拉),则推送到“非发布”服务器不应该更改阶段 告诉mercu

当我无法访问远程
.hg/hgrc
文件时,如何告知mercurial远程服务器(例如,上)未发布

背景 mercurial的最新版本有一个概念,即允许跟踪哪些变更集已共享(
public
),哪些变更集未共享(
draft
)。允许对
草稿
变更集执行存储库更改操作,但不允许对
公共
变更集执行存储库更改操作,因为其他人可能依赖后者

默认情况下,将变更集推送到公共服务器会将其阶段更改为
public
,但如果服务器是私有的或专用于代码审查(即,人们不应该能够拉),则推送到“非发布”服务器不应该更改阶段

告诉mercurial服务器未发布的方法是在服务器上的
.hg/hgrc
文件中添加
[phases]
部分:

在我看来,应该有一种方法在我的本地
hgrc
文件中包含一行内容,表明某个特定服务器未发布,但我找不到任何文档来建议如何发布。也许可以用钩子定制这种行为

工具书类

目前没有办法做到这一点,希望永远不会发生

原因如下:
如果允许本地存储库覆盖远程存储库配置,则只会使整个阶段机制变得无用。阶段的要点是防止用户执行可能“破坏”同步流的操作。
接收方有责任描述如何使用收到的变更集。如果通过允许发送方覆盖这些设置来反转该逻辑,那么如何确保两个发送方使用相同的配置?如果配置不同,应保留哪个配置?变更集应如何标记在接收器上


从某种程度上讲,这与本地存储库能够在未经授权的情况下将变更集推送到远程存储库是一样的,只需在本地覆盖远程配置即可。

这是一个很好的观点,我认为最好在邮件列表中提出来。可能需要更改为
outgoing
,以便列出是否需要更改chageset阶段。请注意:BitBucket现在可以选择将存储库配置为非发布。。在这种情况下,执行OP要求的操作是不必要的。。我怀疑这种需要会消退。。例如,Mozilla用户存储库自2015年2月()起就不再发布bitbucket(如标签所示)。文档中现在说“publish=False”而不是“publishing=False”。我同意正确的做法是设置服务器,但我不能(版本1.9,我没有权限)。但是,与您的反例不同,我的建议不会影响服务器,因此我认为没有理由不提供这样的本地覆盖(因为服务器已损坏,需要使用)。毕竟,我可以通过手动重新定相痛苦地达到同样的效果。回答您的问题:当服务器不知道阶段时,它会像1.9中的情况一样忽略客户端。这只是关于本地管理。我不认为要求接收者参与有什么意义,尤其是在托管服务方面。在托管服务中,创建一个只有您可以访问的私有分支是非常可能的、容易的,而且每个人都支持,但不可能将其标记为非发布分支,因为托管提供商尚未实现它。在
~/.hgrc
中将其标记为非发布远程是很自然的。
[phases]
publishing = false