如何告知(本地)服务器是非发布的?

时间:2012-05-23 19:11:38

标签: mercurial bitbucket mercurial-phases

当我无法访问远程.hg/hgrc文件时,如何告诉mercurial远程服务器(例如bitbucket上)是非发布的?

背景

mercurial的最新版本有一个phases概念,可以让人们跟踪哪些变更集已被共享(public),哪些变更集没有(draft)。 draft变更集允许使用rebase等存储库更改操作,但不允许public变更集,因为其他变量集可能取决于后者。

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

告知服务器不发布的documented way是将[phases]部分添加到服务器上的.hg/hgrc文件

[phases]
publishing = false

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

参考

1 个答案:

答案 0 :(得分:3)

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

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

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