Я тестирую git ловушку предварительного получения на сервере. Это содержимое hooks/pre-receive
:
#!/bin/bash
echo "Hi $USER"
source pre-receive-hooks/bye
Содержимое hooks/pre-receive-hooks/bye
:
#!/bin/bash
echo "Bye $USER"
Оба файла hooks/pre-receive
и hooks/pre-receive-hooks/bye
являются исполняемыми, имеют те же права, и тот же владелец и группа.
Когда я отправляю sh с клиента на сервер, я получаю сообщение:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Hi sergioro
remote: hooks/pre-receive: line 10: pre-receive-hooks/bye: No such file or directory
To drop:/git/hooks_practice.git
3fbfa15..c15d08d master -> master
Первый echo
работает, но затем команда source
не выполнена. Почему source
терпит неудачу? Или, в целом, как получить сценарий из хука Git?
Я также попробовал следующие команды, но все они возвращают ту же ошибку, когда я пу sh:
source ./pre-receive-hooks/bye # relative path
. pre-receive-hooks/bye # source using the dot command
./pre-receive-hooks/bye # run script directly