2012-04-11 46 views
1

我想限制某些用户将更改集推送到存储库的默认分支。如果可能的话,你会怎么做?限制用户将更改集推送到默认(Mercurial)

+0

请提供有关您的服务器设置的更多信息。 – C2H5OH 2012-04-11 19:51:35

+0

我们将存储库存储在安装有Windows Server 2008的计算机上。该机器上的mercurial版本是1.7.5。我们所有的存储库都被设置为转到c:\ repository文件夹。每个用户在他们的机器上都有自己的本地克隆。用户只在工作完成时才向服务器提交。从那里他们必须先登录他们的用户名和密码,然后他们才能真正提交重新存储库。我研究了使用[acl.deny.branches],但实际上并没有任何限制用户的运气。 – themaniac27 2012-04-12 16:40:32

回答

4

ACL extension应该为你工作。但是,您需要考虑以下注意事项:

  • 必须在服务器存储库中启用扩展。也就是说,hgrc文件中的每个服务的资源库应具有ACL设置中定义:

    [extensions] 
    acl = 
    
    [hooks] 
    pretxnchangegroup.acl = python:hgext.acl.hook 
    
    [acl] 
    sources = serve 
    
    [acl.deny.branches] 
    default = user1, user2, user3 
    
  • 有推否认这些用户系统用户。也就是说,您的用户名取自Web服务器提供的凭据。它有什么都没有与提交元数据中的Author:字段有关。

  • 您只能允许或拒绝完整的chagegroups。如果其中一个拒绝用户推送包含的一组提交,则将一个提交给默认分支,整个推送将被拒绝(即使其他提交被允许)。如果用户倾向于经常与默认分支合并,这并不奇怪。

你也可以编写自己的pretxnchangegroup挂钩,但是你不会比ACL扩展更有能力。