Как найти неразрешенные файлы с помощью библиотеки 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 должен сказать вам, что вы хотите.
Надеюсь, это поможет!