Получение новых тегов в Git Push при предварительном получении

Я использую pre-receive перехватывает в GIT (используя bash в Linux), чтобы отфильтровать пуш, который разрешен в моем репо.

Мне нужно отфильтровать толчок, который разработчики делают в моем репозитории GIT, позволяя просто подтолкнуть с этими реквизитами (# это номер):

  • # Commits > 0 && # Tags != 0: Нет
  • # Commits > 0 && # Tags == 0: ДА
  • # Commits == 0 && # Tags > 1: Нет
  • # Commits == 0 && # Tags == 1 && Key is correct: ДА

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

Проблема в том, что $refname есть только ссылка HEAD, поэтому, если вы делаете этот заказ:

  1. Commit
  2. Tag (до любой ревизии, даже до старых)
  3. Commit

$refname будет указывать на последнюю ссылку (т.е. /refs/heads/master), так делаем:

if [[ "$refname" == "refs/tags/"* ]]; then ... fi

Не будет работать в указанном порядке. Я пытался перебрать ссылки, используя rev-list а также for-each-ref, безуспешно.

Как я могу обработать получаемый push-запрос, зная количество тегов (и получая комментарий к каждому), чтобы удовлетворить верхним условиям?

PS: Рассмотрим также ситуацию нажатия с опцией --all, получая более одной ветви.

0 ответов

Другие вопросы по тегам