P4Python и глобальные параметры: -d

Я пытаюсь создать рабочее пространство с P4 для Python. Команда, которая работает в терминале:

p4 -d path client -S  //stream name

не работают в версии P4:

p4.run('-d', path, 'client', '-S',  //stream, name)

Я получаю "[Ошибка]: "Неизвестная команда. Попробуйте "p4 help" для получения информации."". Я также пробовал:

self.p4.protocol("-d", path)
p4.run_client('-S', //stream, name)

Этой ошибки не возникает, но часть "-d" не действует. Я также пробовал цитаты, с тем же результатом. Почему не запускается? Как это использовать?


person Kowalski Paweł    schedule 10.04.2017    source источник


Ответы (1)


При выполнении команды p4 флаги, стоящие перед именем команды ("глобальные параметры") являются флагами для самого клиента CLI, а флаги, идущие после команды, являются флагами для серверной команды. .

Функция p4.run отправляет команду непосредственно на сервер, не вызывая p4 CLI, поэтому параметры CLI не будут работать (сервер вообще их не реализует, поэтому он просто вернет ошибку использования). Если вы пытаетесь получить эффект от одной из глобальных опций, будет функция API, которая имеет этот эффект.

Например, эквивалентом -d в P4Python является свойство cwd:

https://www.perforce.com/perforce/doc.current/manuals/p4script/03_python.html#1122267

поэтому вместо:

p4.connect()
p4.run('-d', path, 'client', '-S',  //stream, name)

do:

p4.cwd = path
p4.connect()
p4.run('client', '-S',  //stream, name)
person Samwise    schedule 10.04.2017