Хук обновления вызывается в принимающем (удаленном) хранилище с точки зрения git push
. Иногда у вас нет доступа для установки хуков в удаленных репозиториях; Насколько я знаю, это касается GitHub (который позволяет легко выдвигать легкие теги).
Чтобы предотвратить отправку облегченных тегов из локального репозитория, вы можете добавить это в тело цикла чтения в .git/hooks/pre-push
, как скопировано из pre-push.sample
:
case "$local_ref" in
refs/tags/*)
if [ `git cat-file -t "$local_ref"` == 'commit' ]
then
echo >&2 "Tag $local_ref is not annotated, not pushing"
exit 1
fi
;;
esac
Однако, на мой взгляд, лучшее решение - обойти всю проблему.
Аннотированные теги могут быть автоматически вставлены вместе с любыми ссылками, с которых эти теги доступны. Конфигурационная переменная push.followTags
включает это поведение, так что вы можете делать правильные вещи по умолчанию и вряд ли когда-либо явно вставлять теги:
git config --global push.followTags true