Редактирование описания метки Perforce через скрипт - PullRequest
3 голосов
/ 08 февраля 2012

Я хочу изменить существующую метку Perforce, используя скрипт, который я могу вызвать автоматически. В настоящее время я знаю, как это сделать с помощью опции текстового редактора:

p4 label <label-name>

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

Однако я хочу сделать это автоматически, используя скрипт. У меня будут переменные, которые могут быть использованы для формирования моего описания.

Я могу использовать либо скрипт оболочки, либо скрипт летучей мыши (в Windows есть Cygwin ).

Выполнить документацию командной строки по меткам можно найти здесь , но это мне не помогает.

Есть идеи?

Ответы [ 2 ]

7 голосов
/ 08 февраля 2012

Вы бы сделали что-то в этом роде:

p4 label -o  > label.txt
sed -i 's/old/new/g' label.txt  # or any other automated method to do the modification
p4 label -i < label.txt
0 голосов
/ 03 февраля 2015

sed может использоваться для (простой) замены текста в одной строке, но синтаксис perl упрощается при работе с многострочным полем описания.

Следующее bashКод экспортирует определение метки для метки NAME_OF_CURRENT_LABEL, создает новое определение метки MY_NEW_LABEL, а затем устанавливает описание для MY_NEW_DESCRIPTION.Обратите внимание, что предполагает , что текст описания существует и находится в одной строке под строкой «Описание:» выше.Чтобы просто обновить описание, удалите строку sed.

p4 label -o NAME_OF_CURRENT_LABEL          |          # Output label spec for NAME_OF_CURRENT_LABEL     \ 
    sed 's/^Label:.*/Label: MY_NEW_LABEL/' |          # Update label name to MY_NEW_LABEL          \
    perl -pe "$/='',s/^Description:\n(.*)$/Description:\n\tMY_NEW_DESCRIPTION\n/s"  |    # Update one-line description to MY_NEW_DESCRIPTION        \
    p4 label -i                                       # Create new label with output from pipe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...