Mercurial目录访问规则
Mercurial目录访问规则,mercurial,access-control,Mercurial,Access Control,我有一个mercurial存储库,其目录结构如下:
/
/system
/applications
/applications/client1
/applications/client2
/applications/client3
我通过http(还没有ssl)在apache子域上为repo提供服务,当然,我想限制对推、拉和提交的访问。一般来说,我不希望一些用户看到的目录在所有,也不是目录的历史
是否有机会限制对mercurial存储库中目录的访问
在基于linux的系统上,如何仅为clien
我有一个mercurial存储库,其目录结构如下:
/
/system
/applications
/applications/client1
/applications/client2
/applications/client3
我通过http(还没有ssl)在apache子域上为repo提供服务,当然,我想限制对推、拉和提交的访问。一般来说,我不希望一些用户看到的目录在所有,也不是目录的历史
是否有机会限制对mercurial存储库中目录的访问
在基于linux的系统上,如何仅为client1和client2授予对client 1文件夹和client2文件夹的访问权限注意:如果没有必要,我不想将存储库拆分为子存储库李>
如果没有子存储库,这不起作用,请有人告诉我如何使用子存储库(在本例中是使用我的目录结构)李>
我迷路了:(既然你的所有东西都在一个存储库中,那么就没有了
tl;dr:存储库始终是完整的,如果您可以克隆它,您可以看到所有内容,无法限制对本地克隆中内容的访问,只能访问由中央服务器托管的克隆
Mercurial服务器可以通过两种方式处理授权:
它可以限制对存储库的访问
它可以使用钩子来防止推送用户不允许修改的内容
第一种类型将使整个存储库只读或不可用。但是,如果用户具有读取权限,他将能够克隆并查看整个存储库、历史记录和文件
但是,您可以通过禁止推送来阻止该用户修改中心副本。这意味着该用户可以使用自己的私有克隆执行任何他想执行的操作,但他将无法将这些更改推送回中心克隆
另一种类型允许您更细粒度地控制允许更改发生的位置。但是,请再次注意,用户将能够克隆并查看整个存储库
此外,用户还可以使用自己的个人克隆做任何他想做的事情。然而,尽管这种类型的授权并不完全禁止向中央存储库推送更改,但钩子会查看正在推送的更改集,如果您决定不允许该用户将更改推送到“client2”内容,他试图推动的任何此类变更集都将被中止
换句话说,用户可以修改他的私有克隆,包括“client2”中的更改,但是如果他提交了一个带有“client2”更改的更改集,他将无法推回中央存储库。然后,他将不得不剥离或以其他方式除去这些更改集,然后才能执行推送操作
因此,总结一下:
您可以完全禁止用户克隆,这将使整个存储库对他不可用
您可以禁止推送,但允许克隆
您可以使用钩子来分析传入的变更集,并防止对用户不允许修改的内容进行更改
无论如何,如果用户能够进行克隆,则该克隆在用户计算机上始终是完整且不受限制的。您无法限制对该克隆的访问,您所能做的只是第1点,首先禁止用户进行克隆
您可以使用现在默认情况下随Mercurial一起分发的。扩展可以限制每个目录的所有Hg操作,而无需使用子存储库
此外,您可以限制对每个分支或每个文件夹的访问。文件夹之间是否存在依赖关系?例如,“client1”中的文件是否知道除此之外还有一个“client2”文件夹,并直接引用这些文件?在任何目录之间,到底存在哪种依赖关系?