Создайте клиентское рабочее пространство с помощью командной строки Perforce в Ubuntu - PullRequest
13 голосов
/ 15 июня 2011

Я пишу скрипт для сборки всех наших проектов на сборочной машине Ubuntu.

Каждый проект хранится в Perforce, и я использую p4 для выполнения вышеуказанного.

Я использую команду:

p4 -u <MyUsername> -P <MyPassword> client MyWorkspace

Это запускает и загружает vim, который мне затем нужно выполнить: wq [Enter], чтобы выйти из.

Могу ли я автоматически сохранить или избежать загрузки vim?

Ответы [ 8 ]

15 голосов
/ 15 июня 2011

Для моих сборок у меня есть текстовый файл, который у меня есть в исполнении, содержащий мой клиент.Таким образом, я знаю, как клиент выглядел в этой сборке (я не использую хранилище спецификаций).

Так просто:

type client.txt | p4 client -i

илиUbuntu:

more client.txt | p4 client -i

создает клиента из файла txt в процессе.Вы можете создать текст, выполнив p4 client -o <client_name> и изменив его оттуда.

6 голосов
/ 15 июня 2011

Вы, вероятно, хотите попробовать p4 client -i. Со страницы справки:

Флаг -i читает спецификацию клиента из стандартного ввода. Редактор пользователя не вызывается.

Таким образом, вы создаете свою клиентскую спецификацию в скрипте и передаете ее p4 client -i. Кроме того, -t также может быть полезным:

Флаг -t создает представление клиента, используя представление и параметры указанного клиента в качестве шаблона, вместо использования существующего представления или создания нового представления по умолчанию.

4 голосов
/ 14 сентября 2015

Я использую heredoc для минимизации необходимости во временных файлах

export P4CLIENT=tmp_$$
p4 client -i <<HERE
Client: ${P4CLIENT}
Root: /tmp/${P4CLIENT}
Stream: //OurStreamDepot/${branch}
HERE

Вам нужно только указать поля Client:, Root: и Stream: (или View:, если вы используетеболее старый // стиль депо)

3 голосов
/ 15 июня 2011

Вам не нужно создавать новый клиент для каждой сборки. Вы можете повторно использовать тот же клиент, просто запустите 'p4 sync', чтобы обновить файловую систему с текущей версией кода для сборки.

2 голосов
/ 16 июня 2011

Я абсолютно согласен с ответом Бирана .Вам нужно создать уникальный клиент для каждого раза, когда вы хотите сделать сборку.Нет проблем с несколькими проектами, использующими одно и то же рабочее пространство;вам нужно только создать несколько рабочих пространств, если вы хотите запускать сборки параллельно на одном компьютере.Создание нового рабочего пространства и полная синхронизация каждой сборки значительно увеличит время сборки.

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

Root
 /Bin
 /Intermediate
 /Source

Таким образом, вам нужноудалить эти две директории и выполнить p4 sync //filespec/, чтобы сделать чистую сборку.

1 голос
/ 16 июня 2011

Я не совсем уверен, что понимаю, что вы пытаетесь сделать, но если вы хотите продолжать использовать тот же клиент, либо установите переменную P4CLIENT=MyWorkspace, либо используйте

p4 -u <MyUsername> -P <MyPassword> -c MyWorkspace.

0 голосов
/ 29 апреля 2019

Если вы хотите сохранить весь процесс внутри процесса, создайте шаблон рабочего пространства / клиента с именем client_template и передайте его в

p4 client -o -t client_template new_client|p4 client -i
0 голосов
/ 22 августа 2014

Другой подход, предполагая, что вы находитесь в рабочем каталоге вашего клиентского рабочего пространства:

echo "P4CLIENT=MyWorkspace" > .perforce
export P4EDITOR=true`

, а затем

p4 client

создаст рабочее пространство, если оно новое,или упомянуть что-то вроде:

Client MyWorkspace not changed.
...