1

使用来自 Perforce (http://kb.perforce.com/article/1086/p4java-api) 的 p4java 库,我试图找出变更列表中的哪些文件未解决,需要先解决才能提交它们.

IChangelist changelist = getServer().getChangelist(changelistId);
List<IFileSpec> changelistPendingFiles = changelist.getFiles(false);

在这个列表中,我试图找出仍然需要解决的 IFileSpec。

像这样的东西:

for (IFileSpec pendingFile : changelistPendingFiles) {
    // How to find out if pendingFile needs to be resolved?

    FileAction action = pendingFile.getAction();
    // The above results in "FileAction.EDIT",
    // but that doesn't tell me anything about the unresolved state

    // The "diffStatus" variable for this pendingFile is "pending"
    // The "howResolved" variable for this pendingFile is null
    // The "opStatus" variable for this pendingFile is VALID
}

感谢您提供的任何东西!

4

1 回答 1

1

综合方法是运行 P4Java 版本的fstat命令,并检查文件是否需要解析。这是一个在简单测试用例中工作的代码示例(不保证是防弹的)。

List<IExtendedFileSpec> extfiles = server.getExtendedFiles(changelistPendingFiles,
    -1,
    -1,
    -1,
    new FileStatOutputOptions(false, false, false, false, false, true),
    null);

for(IExtendedFileSpec extfile : extfiles) {        
    System.out.println(extfile.isUnresolved());
}

FileStatOutputOptions中,我要求提供有关已打开且需要解析的文件的信息。isUnresolved方法应该告诉你你想要什么

希望有帮助!

于 2012-01-04T16:44:48.417 回答