在perforce中锁定分支?

时间:2009-03-24 16:47:52

标签: perforce

目前我创建了一个发布分支,但是当我们发布之前有一段时间时,我有时会打开整个分支进行编辑,然后锁定所有文件,以防止任何人在“代码冻结”期间修改任何内容。发布分支。

有更好的方法吗?以我当前的方式执行它似乎可能是对锁定功能的错误使用,是否有更好的方法来阻止某人在不使用分支的情况下检入代码。我虽然P4保护,但我不是这个perforce实例的管理员,并且在潜在的100行上处理保护文件也会变得很麻烦。

有什么想法吗?

5 个答案:

答案 0 :(得分:13)

作为一名构建工程师,我一直这样做。我使用'p4 protect'将每个人对树的访问限制为只读:

super group everyone * -//depot/project/branch/...
read group everyone * //depot/project/branch/...
super user me * //depot/project/branch/...

第一行关闭分支的所有用户的所有权限(假设正确定义了“所有人”组。)

第二行为每个人重新建立读取权限。

最后一行重新建立了对我的所有权限。

答案 1 :(得分:2)

p4 protect绝对是更好的方式 - 它就是它的用途。我强烈建议您将所有用户分组,并且只在保护表中使用组 - 更容易管理。

您可以在任何您喜欢的粒度级别进行保护,因此并非笨拙。另请注意,2008.1服务器版本具有新的保护功能,允许您以稍微不同的方式指定可以执行的操作。变更说明:

#152278 **
    'p4 protect' now allows specification of permission 'rights'.
    Previously, 'p4 protect' only allowed using permission levels 
    which include the specified access (ie 'read') and also all
    of its lesser permissions (ie 'read' = 'read' + 'list').
    Permission rights make it possible to deny individual rights
    without having to re-grant lesser rights.  The new 
    permission rights are '=read', '=branch', '=open',
    and '=write'. This functionality was previously undocumented,
    and is now fully supported for 2008.1

如果您确实需要成为管理员才能锁定&解锁这个,然后你应该看看2007.3中引入的“群组所有者”功能。这将让非超级用户能够添加&从群组中删除人员。所以将它与保护表结合起来。即获取站点管理员以设置保护表,并限制名为“Rel 1.0 Authorized”的组的权限,并使您成为组所有者。然后,您可以从该组添加和删除用户(或子组)以控制访问。

触发选项是可能的,但您仍然需要成为管理员才能设置触发器。您还可能会影响所有提交的效果,这是需要注意的事项。但触发器的主要问题是您将使用它们来模拟为此目的设计的内置功能 - 即保护表。并且,如果您想要安全,您仍然需要找到一些方法来阻止其他人修改参考文件。模拟现有功能似乎需要做很多工作。

答案 2 :(得分:2)

作为其他答案之一的轻微补充。首先建立一个包含所有用户的“所有人”组。然后将其添加到p4 protect

write group everyone * -//depot/project/1.0/...
read group everyone * //depot/project/1.0/...
write group 1.0 * //depot/project/1.0/...

这将允许您创建一个组“1.0”,您可以在其中添加任何允许写访问权限的用户。

如果您使用的是server 2008.1,则可以执行此操作。

=write group everyone * -//depot/project/1.0/...
write group 1.0 * //depot/project/1.0/...

第一行只删除每个人的写访问权限(不读取和列表)。

答案 3 :(得分:2)

在现代Perforce中执行此操作的方法是使用流 - 在本地系统上就地更新的命名分支,并且可以应用权限以鼓励您在流之间进行合并和复制时执行正确的操作。

您可以选择限制流,以便只有流所有者可以签入(并且您可以锁定流,因此除了所有者之外没有人可以编辑其属性)。见http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.codelines.html#codelines.streams

答案 4 :(得分:0)

对于大多数人来说,P4保护可能是正确的答案,正如其他答案中所解释的那样。

然而,在我的组织中,我不能成为管理员,因此这样做的方法是在perforce中设置一个触发器脚本,该脚本读取非管理员具有写访问权限的文本文件,并检查分支是否出现在列表中。 这样就不需要像p4 protect那样的管理访问了。