在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作为源进行集成,而不是目标)。
我很惊讶,如果不使用触发器似乎不可能做我想做的事情,任何人都可以提供任何建议吗?
编辑:为了弄清楚我不想让用户继续写入稳定文件夹,我只是想阻止以稳定文件夹作为目标执行集成操作。
答案 0 :(得分:3)
确定,
结合这里的集体智慧和我们的Perforce管理员,我建议如下:
write user * * -//depot/stable/...
write user * * //depot/stable/existing/branchA
write user * * //depot/stable/existing/branchB
即。从稳定仓库中取走写权,然后再重新授予它。此外,请务必注意=write
和write
之间的区别。第一个授予完全写权限(没有别的,没有读,没有同步,没有任何东西),后者授予写权限和所有低级权限(例如读,同步)。
答案 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