在Perforce中如何锁定一个分支?

7

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

有更好的方法吗?使用我的当前方式似乎可能是对锁定功能的不正确使用,是否有更好的方法可以防止某人在不使用分支的情况下检查代码。我考虑过P4保护,但我不是此Perforce实例的管理员,并且处理潜在100多行的保护文件也会变得繁琐。

有什么想法吗?

5个回答

14

作为一名构建工程师,我经常这样操作。我使用“p4 protect”命令将每个人对代码库的访问权限限制为只读:

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

第一行关闭了所有用户对分支的权限(假设名为“everyone”的组已经正确定义)。

第二行重新为所有人建立读取权限。

最后一行重新将所有权限恢复给我。


你需要成为Perforce管理员才能做到这一点吗?而且,整个仓库只有一个保护文件,不会变得难以管理吗?如果有一个拼写错误,整个仓库可能无法正常工作,这就是我试图寻找替代方案的原因,但如果它是唯一的方法,我会选择使用它。 - Ville M
1
更改保护措施需要管理员权限(这是Perforce中管理员的定义)。在接受您的更改之前,文件会进行错误检查。我在我的保护措施中有几百个条目,但它与我的业务需求相吻合,因此感觉干净且自明。 - Sniggerfardimungus

3

2
作为对其他答案的轻微补充。首先设置一个包含所有用户的组“everyone”。然后将其添加到p4保护中。
write group everyone * -//depot/project/1.0/...
read group everyone * //depot/project/1.0/...
write group 1.0 * //depot/project/1.0/...

这将允许您创建一个名为“1.0”的组,您可以将任何被授权写入权限的用户添加到该组中。

如果您正在使用服务器2008.1,则可以执行此操作。

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

第一行仅从组everyone中删除写入访问权限(不包括读取和列出)。

2

p4保护绝对是更好的选择 - 它存在的目的就是这样。我强烈建议您将所有用户分组,并仅在保护表中使用组 - 这样更易于管理。

您可以以任何粒度进行保护,因此不会笨重。还要注意,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授权”的组,并使您成为组所有者。然后,您就可以添加和删除用户(或子组)以控制访问权限。
触发器选项是一种可能性,但您仍然需要成为管理员才能首先设置触发器。您还可能影响所有提交的性能,这是需要注意的。但是,触发器的主要问题是您将使用它们来模拟专门设计用于此目的的内置功能-即保护表。如果您想要安全,仍然需要找到某种方法来防止其他人修改参考文件。这似乎是模拟现有功能的大量工作。

0
P4保护可能是大多数人的正确答案,就像其他回答中所解释的那样。
但是在我的组织中,我不能成为管理员,因此做法是在perforce中有一个触发器脚本,它读取一个非管理员具有写访问权限的文本文件,并检查分支是否出现在列表中。 这样就不需要像p4保护一样需要管理员访问权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接