Активировать что-либо в пост-получении только при добавлении нового тега - PullRequest
0 голосов
/ 21 марта 2019

Я хочу выполнить какое-либо действие в GIT'е post-receive, когда только новый тег добавляется в хранилище.Как это сделать?

Спасибо


РЕШЕНИЕ (ответ Яна Крюгера)

Новый тег $oldrev равен нулю.Удаленный тег имеет $newrev равных нулям.Для обоих $ref значение начинается с refs/tags/.

#!/bin/sh
#

read oldrev newrev ref

if [[ "0000000000000000000000000000000000000000" == $oldrev ]] && [[ $ref == refs\/tags\/* ]];
then
    echo "New tag added"
fi

1 Ответ

1 голос
/ 21 марта 2019

Хук post-receive получает на стандартный ввод информацию обо всех ссылках (ветвях, тегах, ...), которые были обновлены в этой операции. Каждая строка имеет следующий формат, взятый из githooks manpage :

<old-value> SP <new-value> SP <ref-name> LF

Так что это будет пример создания нового тега:

0000000000000000000000000000000000000000 0123456789abcdef0123456789abcdef01234567 refs/tags/mytag

Вам просто нужно прочитать из стандартного ввода и проверить, соответствует ли строка этому формату. По сути, первое «слово» - это все нули, а третье слово начинается с refs/tags/.

...