Как найти неразрешенные файлы с помощью библиотеки 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
}

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


person Jasper Roel    schedule 03.01.2012    source источник


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

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

person randy-wandisco    schedule 04.01.2012
comment
Потрясающе, именно то, что я искал! Спасибо большое! - person Jasper Roel; 05.01.2012