Mercurial - 如何禁用推送

时间:2016-06-09 06:05:18

标签: mercurial mercurial-hook mercurial-subrepos

我试图找到是否有一种简单的方法可以将mercurial存储库设置为只读。用户应该能够克隆,但不允许推送。我需要为所有超过100个存储库执行此操作。

5 个答案:

答案 0 :(得分:2)

您可以在.hg / hgrc中执行此操作:

[hooks]
prechangegroup = false

答案 1 :(得分:1)

这取决于您如何发布您的存储库,但这里有一些您可以尝试的方法,具体取决于:

  1. 如果您要在网络共享或已装载的卷上发布存储库,只需在mercurial文件夹上设置访问权限,使其只能对该文件夹及其文件具有读取权限
  2. 如果您使用任何可用的http服务器选项(例如hg serve或您可以安装的任何第三方网站)发布您的存储库,请确保您设置的用户不会有写/推送访问
  3. 如果您使用任何在线基于云的解决方案(例如bitbucket,kiln等)发布您的存储库,那么就不要向任何不应该使用它的人发送推送权限,您可以再次设置用户和访问权限

答案 2 :(得分:0)

仅通过http(hg serve,kallithea,...)提供它们,并且不给他们登录凭据。

答案 3 :(得分:0)

你有很多回购,他们的网址是已知的并且已经被用来克隆它们,你只是决定要关闭对它们的推送访问。这是对的吗?

如果通过ssh访问repos,您可以通过简单地将repo文件的所有权重新分配给新帐户来实现,具有免费读取访问权限但其他用户无权写入。文件位置保持不变,当前访问凭证仍然有效,但不再可以推送到回购。

如果您使用的是unix系统,则可以使用bash循环和forchown -R中执行所有操作。如果你不......祝你好运。向我们提供有关您的配置的更多信息,答案中提出的方法之一最适合。

答案 4 :(得分:0)

要禁用推送http或https,您可以在hgrc文件中尝试以下操作之一。请注意,这并不会禁用推送文件系统。

allow_push

是否允许推送到存储库。如果为空或未设置,则不允许推送。如果使用特殊值*,则任何远程用户都可以推送,包括未经身份验证的用户。否则,远程用户必须已经过身份验证,并且经过身份验证的用户名必须存在于此列表中(由空格或","分隔)。在deny_push列表之后检查allow_push列表的内容。

[web]
allow_push =

deny_push

是否拒绝推送到存储库。如果为空或未设置,则不会拒绝推送。如果特殊值*,则拒绝所有远程用户推送。否则,未经身份验证的用户都将被拒绝,并且此列表中存在的任何经过身份验证的用户名(由空格或","分隔)也将被拒绝。在allow_push列表之前检查deny_push列表的内容。

[web]
deny_push = *