Perforce: Не использовать один и тот же абсолютный локальный путь на всех машинах разработчиков? - PullRequest
2 голосов
/ 20 октября 2010

Я новичок в Perforce (но у меня достаточно опыта работы с другими системами, в основном SVN).
Сейчас я пытаюсь создать простой сценарий сборки Windows Bat, который должен проверять некоторые результаты сборки (я знаю, что это противоречиво, но, пожалуйста, попробуйте проигнорировать, так как это другое обсуждение). Я использую p4 для этого. Проблема в том, что, кажется, я либо:

  • Используйте тот же "клиент", что и на других машинах (опция -c). Это будет иметь «корень», который выглядит так, как будто он указывает абсолютный путь, по которому рабочая копия идет локально. Кажется скорее "WTF?" для меня ...
  • Интерактивно создайте «клиента» для каждого компьютера (в соответствии с локальной файловой системой). Интерактивность, очевидно, нарушает правила автоматического сценария.

Могу ли я как-то просто использовать текущий каталог, как я могу с SVN?
Есть ли лучший вариант?

Ответы [ 4 ]

3 голосов
/ 21 октября 2010

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

p4 client -t my-client-template-name -o my-unique-client-name >clientspec.txt
p4 client -i <clientspec.txt

Где my-client-template-name - клиент, который вы создали на первом шаге. Конечно, когда вы закончите, обязательно сделайте следующее:

p4 client -d my-unique-client-name
2 голосов
/ 20 октября 2010

Создайте рабочее пространство с корнем null и сопоставьте депо с этим клиентом. Вот пример спецификации клиента:

Client: client_name

Update: 2010/10/20 14:18:23

Access: 2010/10/20 14:20:53

Owner:  raven

Host:   ravens-pc

Description:
    Created by raven.

Root:   null

Options:    noallwrite noclobber nocompress unlocked modtime rmdir

SubmitOptions:  leaveunchanged

LineEnd:    local

View:
    //depot/... //client_name/...

Первое, что должен сделать ваш скрипт, это переключиться на этого клиента, установив переменную среды $ P4CLIENT $:

p4 set p4client=client_name

Ваш скрипт теперь будет работать в контексте этого клиента. В силу того, что вы указали корень пустого значения, любая выполняемая синхронизация будет относиться к текущему каталогу . Итак, если вы синхронизируете // depot / foo / ... в C: \ bar, ваши файлы появятся в C: \ bar \ foo.

Последнее, что должен сделать ваш скрипт, это очистить переменную P4CLIENT, чтобы восстановить систему в соответствии со спецификацией клиента по умолчанию:

p4 set p4client=

1 голос
/ 20 октября 2010

Вы можете в интерактивном режиме создать клиента без редактора, используя p4 client -i:

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

Таким образом, в вашем buildtscript у вас будет шаблон для представления клиента, который вы изменяете на лету для текущей машины сборки и передаете его в p4 client -i.

0 голосов
/ 20 октября 2010

Очевидно, вы можете предварительно создать рабочую область клиента с корневым каталогом "null", что приведет к тому, что Perforce будет использовать текущий рабочий каталог в качестве корневого.

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