GIT_AUTHOR_NAME
) в контексте выполнения хука. Можно также задать свои переменные окружения перед выполнением Git-команды, которая запустит хук.pre-commit
), могут получать аргументы командной строки при их запуске. Это менее распространено, но возможно.git config
и считывать их внутри хука.Передача параметров в хук Git может быть осуществлена несколькими способами, в зависимости от типа хука и целей, которые вы преследуете. Важно понимать, что хуки выполняются как скрипты, поэтому доступ к параметрам осуществляется через стандартные механизмы передачи аргументов скриптам.
Многие хуки (например, pre-commit
, post-receive
) получают аргументы от Git. Эти аргументы специфичны для каждого хука и передаются в скрипт как обычные аргументы командной строки ($1
, $2
, $3
и т.д. в bash).
Пример (post-receive
):
#!/bin/bash
# $1 - название репозитория
# $2 - ветка, в которую был произведен push
# $3 - старый SHA-1 коммита
# $4 - новый SHA-1 коммита
# $5 - ref, на которую был push
repository=$1
branch=$2
old_sha=$3
new_sha=$4
ref=$5
echo "Репозиторий: $repository"
echo "Ветка: $branch"
echo "Старый SHA: $old_sha"
echo "Новый SHA: $new_sha"
echo "Ref: $ref"
В этом примере post-receive
получает имя репозитория, ветку и SHA-1 коммитов через аргументы $1
, $2
, $3
, $4
, $5
.
Git устанавливает некоторые переменные окружения, которые могут быть полезны в хуках. Вы можете также установить свои собственные переменные окружения перед вызовом Git, и они будут доступны в хуках.
Пример:
#!/bin/bash
# Получаем значение переменной окружения MY_CUSTOM_PARAMETER
custom_parameter=$MY_CUSTOM_PARAMETER
echo "Значение пользовательского параметра: $custom_parameter"
Запуск с переменной окружения:
MY_CUSTOM_PARAMETER="hello world" git commit -m "commit message"
Вы можете хранить параметры в конфигурационном файле Git (.git/config
для локального репозитория, /etc/gitconfig
для глобального, или .gitmodules
для подмодулей) и читать их из хука.
Пример:
Добавляем параметр в .git/config
:
[myhook]
parameter = my_value
В хуке (например, pre-commit
):
#!/bin/bash
# Получаем значение параметра из конфигурационного файла Git
parameter=$(git config myhook.parameter)
echo "Значение параметра из config: $parameter"
В некоторых случаях может быть полезно записать параметры во временный файл и прочитать его из хука. Это особенно полезно, если необходимо передать сложные структуры данных.
Пример:
Запись параметра в файл:
echo "my_complex_data" > /tmp/hook_parameter.txt
git commit -m "commit message"
Чтение параметра из файла в хуке (pre-commit
):
#!/bin/bash
# Читаем значение параметра из файла
parameter=$(cat /tmp/hook_parameter.txt)
echo "Значение параметра из файла: $parameter"
Важно: Не забудьте удалять временные файлы после использования.
Вы можете комбинировать эти методы для передачи параметров. Например, передать путь к конфигурационному файлу через переменную окружения, а затем прочитать параметры из этого файла в хуке.
Выбор метода передачи параметров зависит от конкретной задачи, сложности передаваемых данных и предпочтений разработчика. Рекомендуется использовать наиболее простой и понятный способ, который соответствует требованиям вашего проекта.