java - 通过Java代码获取P4的锁

标签 java perforce

我想通过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.

最佳答案

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

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

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

一般来说,Perforce 工作流程通常不会锁定文件集,因为 Perforce 的全部目的是支持许多用户并发编辑工作,并通过合并更改来管理冲突解决。

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

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

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

这个相关问题的答案中有对该技术的详细描述:Locking a branch in perforce?

关于java - 通过Java代码获取P4的锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188226/

相关文章:

java - 我真的可以信任 LOG4J 时间戳来衡量生产中的性能指标吗?

python - Perforce - 创建和编辑更改列表

perforce - 如何快速找到删除一行的changelist

linux - Perforce (P4) - 如何提交对文件和目录的所有更改?

java - MIDI - MidiMessage 程序随不同银行的乐器而变化

java - 获取图片位置 - Phonegap 相机

perforce - P4V如何恢复已删除的工作区

python - P4 命令行说明,用于从模板创建工作区并对客户端规范进行其他更改

java - 未知发布者小程序浏览器,签名 jar

java - 在编写 Gradle 插件时,有没有办法始终在检查阶段运行任务?