Создание рабочей области клиента с использованием командной строки 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.