Создание рабочей области клиента с использованием командной строки Perforce на Ubuntu

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

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

Используемая мной команда:

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

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

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

Ответ 1

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

Так просто:

type client.txt | p4 client -i

или на Ubuntu:

more client.txt | p4 client -i

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

Ответ 2

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

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

Итак, вы создаете свой клиентский spec в script и передаете его на p4 client -i. Кроме того, может оказаться полезным -t:

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

Root
 /Bin
 /Intermediate
 /Source

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

Ответ 6

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

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

Ответ 7

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

p4 client -o -t client_template new_client|p4 client -i

Ответ 8

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

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

а затем

p4 client

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

Client MyWorkspace not changed.