Подтвердить что ты не робот

Как я могу реагировать на новые теги в git hooks?

Я хотел бы настроить крюк git, который создает структуру каталогов в стиле CDN на основе входящих тегов. Так, например, если последний тег в локальном репозитории "v1.2.1", и я вытаскиваю фиксацию с "v1.2.2", он должен увидеть новый тег и клонировать репозиторий в новое прямо (../1.2.2) соответственно.

Я уверен, что хочу прикрепить это к post-receive, однако я не могу найти что-либо в документации о git перехватах о том, как читать входящие теги. Они поставляются на другом крючке? Мне действительно нужно, чтобы оболочка script запускала команду git, чтобы увидеть, есть ли у какого-либо из новых коммитов новые теги?

Спасибо!

4b9b3361

Ответ 1

Теги являются refs как любые другие (например, commit).
Если теги будут перенесены на репо с помощью post-receive hook, этот хук будет вызываться и будет перечислять все обновленные ссылки, которые являются как старыми, так и новые значения всех ссылок в дополнение к их именам (на его стандартном вводе).

Обратите внимание на этот сервер post-receive email.

#!/bin/sh

. $(dirname $0)/functions

process_ref() {
    oldrev=$(git rev-parse $1)
    newrev=$(git rev-parse $2)
    refname="$3"

    set_change_type
    set_rev_types
    set_describe_tags

    case "$refname","$rev_type" in
      refs/tags/*,tag)
        # annotated tag
        refname_type="annotated tag"
        function="atag"
        short_refname=${refname##refs/tags/}
        # change recipients
        if [ -n "$announcerecipients" ]; then
          recipients="$announcerecipients"
        fi
      ;;
    esac 
}

while read REF; do process_ref $REF; done

Для этого вы также должны установить файл функций из вышеупомянутого репозитория захвата примера.