В веб-приложении, которое я пишу, пользователь должен ввести путь в репозиторий Perforce для узла, который он вводит. Предполагается, что приложение проверяет, существует ли указанный каталог в репо.
У меня есть библиотека P4Package (p4.jar), и я настраиваю ее достаточно правильно, чтобы она работала почти для всего, ЗА ИСКЛЮЧЕНИЕМ этой проверки каталога. Я создаю DirEntry (из p4.jar), используя настроенный Env и путь, но когда я вызываю DirEntry.sync (), он выдает неверную команду. Где я хочу, чтобы он выдал команду:
p4 [информация о конфигурации] dirs аргумент_каталога <- использование команды dirs для проверки каталога
Вместо этого он выдает:
p4 [информация о конфигурации] dirs аргумент_каталога% 1 <- обратите внимание на посторонние% 1
Что всегда терпит неудачу, поскольку ни один из каталогов не имеет% 1 в конце.
Любая помощь? Есть ли другой способ проверить, существует ли каталог с помощью этого пакета?




Похоже, в команде sync есть ошибка в отношении записей каталога и команды. Мое предложение - просто выполнить команду самостоятельно, используя командную строку perforce, поскольку она должна быть настроена в любом случае, чтобы использовать библиотеку java.
Process p = Runtime.getRuntime().exec("p4 dirs " + directory_argument);
BufferedReader stdOut = new BufferedReader(new InputReader(p.InputStream()));
//Read the output of the command and process appropriately after this
Итак, в коде, который я использовал, была ошибка, требовавшая от меня внесения изменений и проверки кода в моем репозитории.
Однако с тех пор Perforce разработала свою собственную оболочку Java для клиента P4, которая работает намного лучше. Я бы попробовал.
Вместо этого я бы попробовал другую библиотеку, P4Java:
P4Java намного новее, и я обнаружил, что он работает намного лучше, чем P4Package. Он используется в проекте Hudson, и я видел его в источнике Fisheye, хотя я не уверен, используют ли они его или нет.
Да, я понимаю, что вы говорите, но это существует уже давно, и мне трудно поверить, что эта ошибка существует. У меня есть исходный код для P4Package, и я могу просто изменить его, чтобы не вставлять% 1 и не переупаковывать банку, но я должен предположить, что он существует по какой-то причине.