Как остановить репо: нажмите, если условие webhooks не выполняется в BitBucket

Я пытаюсь остановить push-репозиторий в Bitbucket, если у оператора commit нет определенного идентификатора проблемы Jira в комментарии. Я успешно вызвал URL-адрес для проверки замечания о коммитах через веб-хуки, но не смог выяснить, как остановить толчок в случае сбоя.

2 ответа

Решение

Настройте следующий скрипт из этого примера msg-commit мерзавец

#!/bin/bash

MSG="$1"

if ! grep -qE "updated" "$MSG";then
    cat "$MSG"
    echo "Your commit message must contain the word 'updated'"
    exit 1
fi

Проверьте этот код в git, а затем запустите

# give the script "execute" permission
chmod 755 commit-msg
# put the script in the correct place
cp commit-msg .git/hooks/commit-msg 

Если вы попытаетесь создать коммит без слова "updated" в сообщении, то эта ловушка будет препятствовать успешному созданию коммита.

Источник: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

commit-msg hook принимает один параметр, который снова является путем к временному файлу, который содержит сообщение фиксации, написанное разработчиком. Если этот скрипт завершает работу с ненулевым значением, Git прерывает процесс коммита, поэтому вы можете использовать его для проверки состояния вашего проекта или сообщения коммита, прежде чем разрешить коммит пройти. В последнем разделе этой главы мы продемонстрируем использование этой ловушки для проверки того, что ваше сообщение о фиксации соответствует требуемому шаблону.

Обратите внимание, что любой, кто клонирует ваш репозиторий, также должен будет скопировать хук в .git/hooks/commit-msg

Для вашего конкретного случая использования:

остановить отправку репо в Bitbucket, если в заявлении фиксации не указан идентификатор задачи Jira в примечании

Он был добавлен в Bitbucket Cloud в качестве функции: https://support.atlassian.com/bitbucket-cloud/docs/link-to-a-web-service/#Require-linked-issue-keys-in-commits

Все, что вам нужно сделать, это включить его.

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