Perforce: есть ли какая-либо команда, чтобы проверить, существует ли спецификация клиента или нет?

На самом деле мне нужно написать один пакетный скрипт, в котором сначала мне нужно проверить, существует ли уже требуемая спецификация клиента или нет? Если существует, то я должен удалить его.

Не могли бы вы сообщить нам, как мы можем проверить в сценарии, существует ли требуемая спецификация клиента или нет?


person user2369546    schedule 28.10.2013    source источник
comment
Это ооооооочень зависит от спец. Без определения этого... нет шансов получить ответ.   -  person zozo    schedule 28.10.2013
comment
Например, я хочу проверить спецификацию клиента perforce с именем build-new. Если она существует, я удалю ее с помощью команды p4 client -d build-new,   -  person user2369546    schedule 28.10.2013
comment
Я получил ответ, как показано ниже, клиенты p4 | findstr /i clientname › null, если ERRORLEVEL 0 goto echoClient уже существует   -  person user2369546    schedule 29.10.2013


Ответы (5)


В командной строке Windows вы можете сделать что-то вроде этого

set P4CLIENT=client-name
p4 clients -e %P4CLIENT% | findstr %P4CLIENT% >nul

p4 clients -e %P4CLIENT% выведет всех клиентов, соответствующих %P4CLIENT%. findstr выполнит поиск имени клиента в выводе p4 clients и напечатает его. Перенаправление на nul подавит этот вывод, но findstr дополнительно установит переменную %errorlevel%.

Некоторые примеры:

p4 clients -e existing-client | findstr existing-client >nul
echo %errorlevel%

Вернет 0.

p4 clients -e does-not-exists | findstr does-not-exists >nul
echo %errorlevel%

Вернется 1.

Если вы хотите что-то выполнить, если данное клиентское пространство не существует, вы можете запустить эту команду:

p4 clients -e does-not-exists | findstr does-not-exists >nul || create-client.bat

Если вы хотите что-то выполнить, если данное клиентское пространство существует, вы можете запустить эту команду:

p4 clients -e does-not-exists | findstr does-not-exists >nul && do-something.bat

Спасибо Адаму из службы поддержки онлайн-чата perforce!

person pdx9k9e9    schedule 14.07.2015

Пытаться:

p4 client -o -t $CLIENT_NAME_YOU_WANT_TO_CHECK

Что это делает - пытается создать клиента из спецификации другого клиента в качестве шаблона для моего "нового клиента".

Если есть вывод (что означает, что $CLIENT_NAME_YOU_WANT_TO_CHECK действительно существует) - он отобразит его спецификацию в виде текста в STDOUT без входа в редактор, а если клиент не существует - он просто выводит в STDERR:

Client '$CLIENT_NAME_YOU_WANT_TO_CHECK' doesn't exist.

«-o» печатает его на экране вместо фактического создания клиента ... хороший трюк, работает за меня, надеюсь, поможет :)

person Ricky Levi    schedule 28.05.2014

Я вижу по вашему комментарию, что вы нашли решение, но вот еще один вариант...

Если вы хотите удалить клиента с таким именем, вы можете сэкономить вызов p4 clients, просто попытавшись удалить клиента. Если он существует, он будет удален (если в нем нет отложенных файлов и т. д.). Если его не существует, то это недопустимо — ни вреда, ни фола.

person Mark    schedule 29.10.2013

Выполните p4 client -o client_name и проверьте наличие полей Update: или Access:. Они будут установлены для уже существующего клиента, но не для несуществующего.

Если у вас есть версия клиента 2013.2 или более поздняя, ​​вы можете использовать форматированный вывод, чтобы сделать его еще проще.

p4 -ztag -F "%Update%" client -o client_name либо вернет строку с датой и временем для существующего клиента, либо ничего для несуществующего.

person Drew Marold    schedule 08.02.2017

Я обнаружил, что эта команда работает:

p4 -ztag clients -e bad

ничего не возвращает, если клиент не существует

person kdubs    schedule 23.03.2018