0

我想通过 Java 代码获得对 P4 分支的锁定。有人知道通过Java实现它吗?

我使用下面的代码:

IBranchSpec ibranchSpec = underlyingPerforceOptionsServer .getBranchSpec("//Tools/Patch/bin/");
ibranchSpec.setLocked(true);

这里的问题是ibranchSpec包含所有仓库,我不知道为什么。

setLock API 说,它只有在服务器更新完成后才会开始工作。我尝试使用类似的东西:

ibranchSpec.Update();

它抛出异常。有任何想法吗?

com.perforce.p4java.exception.RequestException: Error in branch specification.
  You cannot use the default branch view; it is just a sample.
4

1 回答 1

1

您描述的行为是因为您正在使用新的分支规范,而不是现有的。

但是您可能会遇到一个常见的混淆,即将分支规范与存储库中的一组文件混淆。

也就是说,描述 //Tools/Release/bin/... 如何映射到 //Tools/Patch/bin/...的分支规范与 //Tools/Patch/bin /中的文件集不同...

一般来说,Perforce 工作流程通常不会锁定文件集,因为 Perforce 的全部意义在于允许许多用户同时编辑工作,并通过合并更改来管理冲突解决方案。

但是,如果您有一个更高级别的开发工作流程,您希望控制谁以及何时可以在某些时间检查到存储库的某些部分,这是绝对合理的。

根据我的经验,最好的方法是使用 Perforce保护机制:建立一个保护文件,描述存储库的各个部分,以及谁可以提交到哪个部分。使用用户组来描述用户集,并尽量保持您的整体保护表相当简单。

然后,要从一组用户“锁定”或“解锁”存储库的一部分(“分支”),您更新保护表以拒绝(“锁定”)或授予(“解锁”)该组的权限写到那个分支。

这个相关问题在其答案中对该技术进行了很好的描述:Locking a branch in perforce?

于 2012-08-30T13:45:08.553 回答