在perforce中锁定分支?

在perforce中锁定分支?,perforce,Perforce,目前,在我创建了一个发布分支之后,但在发布之前有一段时间,我有时会打开整个分支进行编辑,然后锁定所有文件,以防止任何人在发布分支的“代码冻结”期间修改任何内容 有更好的办法吗?我目前的做法似乎是不正确地使用了锁特性,有没有更好的方法来防止人们在不使用分支的情况下签入代码。我认为P4 protect很重要,但我不是这个performe实例的管理员,而且处理可能有100行的保护文件也会很麻烦 有什么想法吗?作为一名构建工程师,我一直在这样做。我使用“p4 protect”将每个人对树的访问限制为只读

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

有更好的办法吗?我目前的做法似乎是不正确地使用了锁特性,有没有更好的方法来防止人们在不使用分支的情况下签入代码。我认为P4 protect很重要,但我不是这个performe实例的管理员,而且处理可能有100行的保护文件也会很麻烦


有什么想法吗?

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

super group everyone * -//depot/project/branch/...
read group everyone * //depot/project/branch/...
super user me * //depot/project/branch/...
第一行关闭所有用户对分支的所有权限(假设组“everyone”定义正确)

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


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

P4 protect可能是大多数人的正确答案,如其他答案所述

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

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”的组的权限,并使您成为组所有者。然后,您可以从该组中添加和删除用户(或子组),以控制访问


触发器选项是可能的,但您仍然需要是管理员才能在第一时间设置触发器。您还可能影响所有提交的性能,这是需要注意的。但触发器的主要问题是,您将使用它们来模拟为此目的而设计的内置功能,即保护表。而且,如果您希望安全,您仍然需要找到某种方法来防止其他人修改引用文件。模拟现有功能似乎需要做很多工作。

作为其他答案的一个小小补充。首先建立一个包含所有用户的“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”,您可以向其中添加任何具有写访问权限的用户

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

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

第一行仅从组everyone中删除写访问权限(而不是读取和列表)。

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


您可以选择限制流,以便只有流所有者可以签入(并且您可以锁定流,以便只有所有者才能编辑其属性)。请参见

您是否需要成为Performce管理员才能执行此操作?而且,整个仓库只有一个保护文件,对吧,它不是变得很笨重吗?一个打字错误,整个仓库就不能正常工作了?这就是我试图寻找替代方案进行保护的原因,但是,如果这是我唯一的方法,那么您必须是管理员才能更改保护(这是Performce中管理员的定义)。在接受您的更改之前,会检查文件是否有错。我的保护中有几百个条目,但它很好地跟踪了我的业务需求,因此感觉很干净,不言而喻。