Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial hg对中央存储库的访问控制_Mercurial - Fatal编程技术网

Mercurial hg对中央存储库的访问控制

Mercurial hg对中央存储库的访问控制,mercurial,Mercurial,我们来自一个subversion的背景,在那里我们有一个QA经理,一旦他验证了所有QC活动都已完成,他就会向中央存储库授予提交权限 我和几位同事开始使用mercurial,我们希望有一个共享的存储库来包含我们的QC-ed更改。每个开发人员都克隆了存储库并将其更改推回到共享存储库。我已经阅读了hgint教程并浏览了红豆书,但找不到如何控制谁可以将更改推送到共享存储库 我们现有的由QA经理控制的提交模式如何转化为mercurial“中央”存储库?serverfault.com有一个相关的链接,指向m

我们来自一个subversion的背景,在那里我们有一个QA经理,一旦他验证了所有QC活动都已完成,他就会向中央存储库授予提交权限

我和几位同事开始使用mercurial,我们希望有一个共享的存储库来包含我们的QC-ed更改。每个开发人员都克隆了存储库并将其更改推回到共享存储库。我已经阅读了hgint教程并浏览了红豆书,但找不到如何控制谁可以将更改推送到共享存储库


我们现有的由QA经理控制的提交模式如何转化为mercurial“中央”存储库?

serverfault.com有一个相关的链接,指向mercurial Wiki页面。第一个演示了在服务器上使用hgweb时如何配置每个存储库的访问。我感觉您使用的是ssh,wiki页面将其标记为“私有”,因此倾向于认为您必须回到文件系统访问控制,即使存储库中的所有文件都属于“提交者”组,为组成员提供写访问权限,并为其他人提供只读权限。

HenriW的评论询问您如何提供存储库,这正是正确的问题。如何设置身份验证完全取决于如何为repo服务(HTTP通过Apache、HTTP通过hgserve、ssh等)。传输机制提供身份验证,然后mercurial使用来自Cat先生链接的命令(本身没有用处)来处理访问控制

因为您没有提到如何为repo提供服务,所以设置起来可能很简单(您应该记得提到apache或ssh设置的麻烦:)。因此,我将讨论这两个问题:

如果您使用的是hg serve,那么您没有身份验证设置。您需要在hgweb或hgwebdir前面使用apache、lighttp或nginx来提供身份验证。除非你这么做,否则“允许”和“拒绝”选项将严格限制为“所有人”或“任何人”


如果您使用的是ssh,那么您已经从msh(可能还有您的操作系统)获得了身份验证,因此您可以使用allow_*和deny_*指令(以及文件系统访问控制,如果您愿意).

您如何为存储库提供服务?如果每个人都有自己的ssh帐户,ssh可以很好地与访问控制指令配合使用。只有当每个人都共享一个ssh帐户时,您才需要通过hg ssh或(讨厌的)mercurial服务器之类的方式获得有关密钥选择访问的技巧。