Как перехватить сообщение git commit и запустить действие

Я новичок в git и хочу иметь возможность перехватить сообщение коммита после отправки на origin/master и запустить скрипт bash (на сервере) на основе того, что содержит строка.

Например, если мое сообщение git commit говорит: [email] my commit message

Если сообщение фиксации содержит [email] затем выполните указанное действие, иначе не делайте этого.

Вот пример сценария bash, который я собираюсь использовать в post-receive крюк:

#!/bin/bash

MESSAGE= #commit message variable?

if [[ "$MESSAGE" == *[email]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi

По сути, все, что мне нужно знать, это имя переменной для сообщения коммита, которое нужно использовать в приведенном выше скрипте bash? Кроме того, я не уверен, является ли это правильным крючком, чтобы сделать это или нет.

2 ответа

Решение

Я думаю, что выяснил ответ на свой вопрос; переменная может быть получена с помощью git-log команда:

git log -1 HEAD --pretty=format:%s

Итак, мой сценарий будет:

#!/bin/bash

MESSAGE=$(git log -1 HEAD --pretty=format:%s)

if [[ "$MESSAGE" == *\[email\]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi

Я надеюсь, что это может помочь любому, кто ищет ответ.

Вы, вероятно, хотите для этого мерзавец

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