Получение сценария из хука предварительного получения Git - PullRequest
0 голосов
/ 17 апреля 2020

Я тестирую 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

1 Ответ

0 голосов
/ 17 апреля 2020

Изменение source pre-receive-hooks/bye на source hooks/pre-receive-hooks/bye решило проблему. Очевидно, Git хуки имеют $PWD, равный каталогу root хранилища, а не каталогу хуков.

...