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