我想通过Java代码获得P4分支上的锁。有人知道如何通过Java来实现它吗?
我使用以下代码:
IBranchSpec ibranchSpec = underlyingPerforceOptionsServer .getBranchSpec("//Tools/Patch/bin/");
ibranchSpec.setLocked(true);这里的问题是ibranchSpec包含所有仓库,我不知道为什么。
setLock的应用程序接口说,只有在服务器更新完成后,它才会开始工作。我试着使用这样的东西:
ibranchSpec.Update();它抛出了下面的异常。有什么想法吗?
com.perforce.p4java.exception.RequestException: Error in branch specification.
You cannot use the default branch view; it is just a sample.发布于 2012-08-30 21:45:09
您描述的行为是因为您正在使用新的分支规范,而不是现有的分支规范。
但是您可能会遇到一个常见的混淆,那就是将分支规范与存储库中的一组文件混淆。
也就是说,分支规范描述了//Tools/Release/bin/...映射到//Tools/Patch/bin/...不同于//Tools/Patch//中的文件集...
一般来说,Perforce工作流通常不会锁定文件集,因为Perforce的主要目的是支持多个用户并发编辑工作,并合并更改以管理冲突解决方案。
但是,如果您有一个更高级别的开发工作流,其中您希望控制谁以及何时可以在特定时间签入存储库的特定部分,那么这是绝对合理的。
根据我的经验,最好的方法是使用Perforce protections 机制:建立一个描述存储库各个部分的保护文件,以及谁可以提交到哪个部分。使用用户组来描述用户集,并尽量保持总体保护表的合理简单。
然后,要对一组用户“锁定”或“解锁”存储库的一部分(“分支”),您可以更新protections表以拒绝(“锁定”)或授予(“解锁”)该组写入该分支的权限。
这个相关的问题在其答案中对该技术有很好的描述:Locking a branch in perforce?
https://stackoverflow.com/questions/12188226
复制相似问题