Как найти неразрешенные файлы с помощью библиотеки Perforce p4java?

Используя библиотеку p4java от Perforce (http://kb.perforce.com/article/1086/p4java-api), я пытаюсь выяснить, какие файлы в списке изменений не разрешены и должны быть разрешены, прежде чем я смогу их отправить.,

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
}

Спасибо за все, что вы можете предоставить!

1 ответ

Решение

Комплексный способ - запустить версию команды fstat для P4Java и проверить, требуется ли разрешение файла. Вот пример кода (не гарантированно пуленепробиваемый), который работает в простом тестовом примере.

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 должен сказать вам, что вы хотите.

Надеюсь, это поможет!

Другие вопросы по тегам