是否可以在Perforce中设置权限,以便用户无法集成到软件仓库的某个区域?

时间:2009-11-04 17:41:24

标签: permissions perforce

在perforce depot中,我有一个包含稳定分支的区域,以及一个包含不稳定分支的区域。我想控制用户在稳定区域内创建新分支(使用p4集成)的能力。例如,我的仓库就像这样布局:

//depot
       /stable
              stable_branch_1/...
              stable_branch_2/...
              ... (I want users to be stopped from integrating to here)
       /unstable
              unstable_branch_1/...
              unstable_branch_2/...
              ... (I want users to be able to integrate to here)

我知道在p4权限中我可以设置如下内容:

=branch     user     *         * -//depot/stable/...

c.f.)但这与我需要的完全相反(即禁止用户使用stable作为进行集成,而不是目标)。

我很惊讶,如果不使用触发器似乎不可能做我想做的事情,任何人都可以提供任何建议吗?

编辑:为了弄清楚我不想让用户继续写入稳定文件夹,我只是想阻止以稳定文件夹作为目标执行集成操作。

3 个答案:

答案 0 :(得分:3)

确定,
结合这里的集体智慧和我们的Perforce管理员,我建议如下:

write    user    *    *    -//depot/stable/...
write    user    *    *     //depot/stable/existing/branchA
write    user    *    *     //depot/stable/existing/branchB

即。从稳定仓库中取走写权,然后再重新授予它。此外,请务必注意=writewrite之间的区别。第一个授予完全写权限(没有别的,没有读,没有同步,没有任何东西),后者授予写权限和所有低级权限(例如读,同步)。

答案 1 :(得分:2)

如果您在稳定区域中的每个子分支上设置显式权限,您应该能够授予用户对您创建的现有分支/项目的完全访问权限,但是他们将无法创建新的brances / projects

例如。在你的权限文件中(我不知道语法,并且在这台机器上没有perforce)

#  Do not give any permissions for  //depot/stable
write    user_group    *    *    //depot/stable/stable_Branch_1/...
write    user_group    *    *    //depot/stable/stable_Branch_2/...
write    user_group    *    *    //depot/stable/stable_Branch_3/...

您的用户现在应该无法在// depot / stable / ...级别创建任何新的分支/项目/文件夹,但具有上述完全权限。但是你不能阻止它们集成到现有的分支中。我害怕涉及用户教育!

答案 2 :(得分:2)

将此添加到您的保护表将阻止用户将集成到 //depot/stable中,同时仍然允许他们从集成

=write user * * -//depot/stable/...

请记住,订单很重要。 Perforce按照列出的顺序应用权限。此...

=write user * * -//depot/stable/...
write user * * //...

......与此没什么不同:

write user * * //...

此外,当被拒绝的用户尝试集成到禁区时,Perforce会抛出一个相当不直观的错误。而不是说一些明智的事情,“你没有权限写这个文件夹”,它会弹出这个废话:

alt text http://img410.imageshack.us/img410/4579/p4deniedintegration.png