Получение новых тегов в 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, поэтому, если вы делаете этот заказ:
CommitTag(до любой ревизии, даже до старых)Commit
$refname будет указывать на последнюю ссылку (т.е. /refs/heads/master), так делаем:
if [[ "$refname" == "refs/tags/"* ]]; then
...
fi
Не будет работать в указанном порядке. Я пытался перебрать ссылки, используя rev-list а также for-each-ref, безуспешно.
Как я могу обработать получаемый push-запрос, зная количество тегов (и получая комментарий к каждому), чтобы удовлетворить верхним условиям?
PS: Рассмотрим также ситуацию нажатия с опцией --all, получая более одной ветви.